Single master model IPVS example
Configure keepalive
Example of highly available ipvs cluster: modifying the keepalived configuration file
Modify the keepalived configuration file of the host: 192.168.234.27
1 [root@234c27 ~]# vim /etc/keepalived/keepalived.conf 2 ! Configuration File for keepalived 3 4 global_defs { 5 notification_email { 6 root@localhost //Accept email address 7 } 8 notification_email_from keepalived@localhost //Mailing address 9 smtp_server 127.0.0.1 //Send mail server IP 10 smtp_connect_timeout 30 //Mail connection timeout 11 router_id kptwo //Routing id 12 vrrp _mcast_group4 234.10.10.10 //Specify the multicast address of vrrp protocol 13 } 14 15 vrrp_instance VI_1 { //vrrp protocol 16 state MASTER //MASTER server of lvs 17 interface ens37 // 18 virtual_router_id 50 //Virtual routing 19 priority 100 //The weight is 100. The larger the weight is, the earlier 20 advert_int 1 //Interval to send group blog package 21 authentication { //Verification 22 auth_type PASS //Method is pass (clear text) 23 auth_pass 1111 //Password 24 } 25 virtual_ipaddress { //Preserved virtual ip 26 10.0.0.100/24 27 } 28 } 29 virtual_server 10.0.0.100 80 { 30 delay_loop 6 //Check back-end server interval 31 lb_algo wrr //Define scheduling method 32 lb_kind DR //Type of cluster 33 #persistence_timeout 50 //Persistent connection duration 34 protocol TCP //Service protocol, TCP only 35 real_server 192.168.234.47 80 { //Back end real server address 36 weight 1 //weight 37 HTTP_GET { //Application layer detection 38 url { 39 path / //Define the URL to monitor 40 status_code 200 //The response code to judge that the above detection mechanism is a healthy state 41 } 42 connect_timeout 3 //Timeout duration of connection request 43 nb_get_retry 3 //retry count 44 delay_before_retry 3 //Delay before retrying 45 } 46 } 47 real_server 192.168.234.57 80 { 48 weight 2 49 HTTP_GET { 50 url { 51 path / 52 status_code 200 53 } 54 connect_timeout 3 55 nb_get_retry 3 56 delay_before_retry 3 57 } 58 } 59 }
Modify the keepalived configuration file of the host: 192.168.234.37
[root@234c37 ~]# vim /etc/keepalived/keepalived.conf! Configuration File for keepalived global_defs { notification_email { root@localhost } notification_email_from keepalived@localhost smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id kptwo vrrp _mcast_group4 234.10.10.10 } vrrp_instance VI_1 { state BACKUP interface ens37 virtual_router_id 50 priority 80 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.100/24 } } virtual_server 10.0.0.100 80 { delay_loop 6 lb_algo wrr lb_kind DR #persistence_timeout 50 protocol TCP sorry_server 127.0.0.1:80 real_server 192.168.234.47 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.234.57 80 { weight 2 HTTP_GET { url { path / status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
View keepalived
[root@234c37 ~]# systemctl status keepalived ● keepalived.service - LVS and VRRP High Availability Monitor Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled) Active: inactive (dead) ............ [root@234c37 ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn //No ipvsadm
Startup service
[root@234c27 keepalived]# systemctl start keepalived.service [root@234c27 keepalived]# systemctl status keepalived.service ● keepalived.service - LVS and VRRP High Availability Monitor Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2018-08-31 20:30:02 CST; 12s ago Process: 9657 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS) Main PID: 9658 (keepalived) .................. [root@234c27 keepalived]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.0.0.100:80 wrr -> 192.168.234.47:80 Route 1 0 0 -> 192.168.234.57:80 Route 2 0 0 //Start service lvs vs configured
Backend real [server preparation
Add ip to modify and restrict the arp notification and response level rs1 rs2 on the network card, and the gateway points to the route
ip a a 10.0.0.100/32 dev ens37 echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announceroute add default gw 192.168.234.17
Install httpd service and write web file
Startup service
Multi master model IPVS example
Configure keepalive
Example of highly available ipvs cluster: modifying the keepalived configuration file
Modify the keepalived configuration file of the host: 192.168.234.27
[root@234c27 keepalived]# vim /etc/keepalived/keepalived.conf global_defs { notification_email { root@localhost } notification_email_from keepalived@localhost smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id kpone vrrp _mcast_group4 234.10.10.10 } vrrp_instance VI_1 { state MASTER interface ens37 virtual_router_id 50 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.100/24 } } vrrp_instance VI_2 { state BACKUP interface ens37 virtual_router_id 51 priority 80 advert_int 1 authentication { auth_type PASS auth_pass 2222 } virtual_ipaddress { 10.0.0.200/24 } } virtual_server 10.0.0.100 80 { delay_loop 6 lb_algo wrr lb_kind DR #persistence_timeout 50 protocol TCP #sorry_server 127.0.0.1:80 real_server 192.168.234.47 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } virtual_server 10.0.0.200 80 { delay_loop 6 lb_algo wrr lb_kind DR #persistence_timeout 50 protocol TCP #sorry_server 127.0.0.1:80 real_server 192.168.234.57 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
Modify the keepalived configuration file of the host: 192.168.234.37
[root@234c37 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id kptwo
vrrp _mcast_group4 234.10.10.10
}
vrrp_instance VI_1 {
state BACKUP
interface ens37
virtual_router_id 50
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.100/24
}
}
vrrp_instance VI_2 {
state MASTER
interface ens37
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 2222
}
virtual_ipaddress {
10.0.0.200/24
}
}
virtual_server 10.0.0.100 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
#persistence_timeout 50
protocol TCP
#sorry_server 127.0.0.1:80
real_server 192.168.234.47 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 10.0.0.200 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
#persistence_timeout 50
protocol TCP
#sorry_server 127.0.0.1:80
real_server 192.168.234.57 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
Let 10.0.0.100 ip be assigned to 192.168.234.47 192.168.234.57 for standby
Let 10.0.0.200 ip be assigned to 192.168.234.57 192.168.234.47 for standby
Backend real [server preparation
Modify vip of 192.168.234.57 to 10.0.0.200/32
1 [root@234c27 keepalived]# ipvsadm -Ln 2 IP Virtual Server version 1.2.1 (size=4096) 3 Prot LocalAddress:Port Scheduler Flags 4 -> RemoteAddress:Port Forward Weight ActiveConn InActConn 5 TCP 10.0.0.100:80 wrr 6 -> 192.168.234.47:80 Route 1 0 0 7 TCP 10.0.0.200:80 wrr 8 -> 192.168.234.57:80 Route 1 0 0
Now we're going to take down an lvs
1 [root@234c27 keepalived]# systemctl stop keepalived.service 2 [root@234c27 keepalived]# ipvsadm -Ln 3 IP Virtual Server version 1.2.1 (size=4096) 4 Prot LocalAddress:Port Scheduler Flags 5 -> RemoteAddress:Port Forward Weight ActiveConn InActConn 6
Service still available
1 [root@234c37 ~]# ipvsadm -Ln 2 IP Virtual Server version 1.2.1 (size=4096) 3 Prot LocalAddress:Port Scheduler Flags 4 -> RemoteAddress:Port Forward Weight ActiveConn InActConn 5 TCP 10.0.0.100:80 wrr 6 -> 192.168.234.47:80 Route 1 0 21 7 TCP 10.0.0.200:80 wrr 8 -> 192.168.234.57:80 Route 1 0 39
The latter implementation is based on the previous one
Suppose we want to implement the sorry u server
1. Stop the rs service. Then install apache or nginx services on lvs
2. Set the
1 virtual_server 10.0.0.200 80 { 2 delay_loop 6 3 lb_algo wrr 4 lb_kind DR 5 #persistence_timeout 50 6 protocol TCP 7 #sorry_server 127.0.0.1:80 //This line modifies the page after writing out the service error 8 real_server 192.168.234.57 80 { 9 weight 1 10 HTTP_GET { 11 url { 12 path / 13 status_code 200 14 } 15 connect_timeout 3 16 nb_get_retry 3 17 delay_before_retry 3 18 } 19 } 20 }