部署环境说明:
2个DR服务器做高可用,IP地址分别是192.168.100.24/24和192.168.100.25/24,VIP地址是192.168.100.30/32,配置在ens33接口上
2个RS服务器提供http服务,IP地址分别是192.168.100.26/24和192.168.100.27/24
实现效果:
1、DR任意挂掉一个,VIP地址漂移到另一个DR服务器上继续提供服务
2、RS任意挂掉一个,在DR的ipvsadm条目上会自动减少这个条目
3、RS再次上线后,在DR的ipvsadm条目上会自动增加这个条目
4、当2个RS都挂掉后,主DR提供一个错误页面,我这里直接用nginx的404页面作为错误页面的index.html
操作步骤:
1、RS的配置都是一样的,指令我就写在下面
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.ens33.arp_announce=2
net.ipv4.conf.ens33.arp_ignore=1
ifconfig lo:0 192.168.100.30/32 broadcast 192.168.100.30
route add -host 192.168.100.30 dev lo:0
2、DR的配置几乎也是一样的,为什么说几乎,只是Keepalived.conf中的细微差别,一个配置主MASTER,优先级Priority 101,另一个DR是备BACKUP,Priority 100
首先安装软件:yum -y install nginx keepalive ipvsadm
ipvsadm不需要配置,安装好了就行,nginx把/usr/share/nginx/html/404.html改成index.html以提供2个RS都挂了后的错误提醒页面,你可以照自己的需求整,不存在的。然后启动nginx。
最后,也是最关键的是配置keepalived.conf了,这个配置文件在/etc/keepalived/keepalived.conf处,我贴一个keepalived.conf的出来,把另一个不同的地方单独标记一下,以减少篇幅,我反正是测试通过了的哦
欢迎加入技术群70539804
1 global_defs { 2 notification_email { 3 root@localhost 4 } 5 notification_email_from keepalived@localhost 6 smtp_server 127.0.0.1 7 smtp_connect_timeout 30 8 router_id LVS_DEVEL 9 } 10 11 vrrp_instance VI_1 { 12 state MASTER ###这个DR设置成主的,所以写的MASTER,另一个DR就必须写BACKUP,一山不容二虎 13 interface ens33 14 virtual_router_id 51 15 priority 101 ###这个101在另一个DR上改成100,实际上0-255都行,保证2个值不一样就行 16 advert_int 1 17 authentication { 18 auth_type PASS 19 auth_pass 1111 20 } 21 virtual_ipaddress { 22 192.168.100.30/32 brd 192.168.100.30 dev ens33 23 } 24 } 25
#这下面是定义2个RS的地址,其实就是VIP的地址对应的RS的地址 26 virtual_server 192.168.100.30 80 { 27 delay_loop 6 28 lb_algo rr 29 lb_kind DR 30 net_mask 255.255.255.255 31 protocol TCP 32 sorry_server 127.0.0.1 80 33 real_server 192.168.100.26 80 { 34 weight 1 35 HTTP_GET { 36 url { 37 path / 38 status_code 200 39 } 40 connect_timeout 3 41 nb_get_retry 3 42 delay_before_retry 3 43 } 44 } 45 real_server 192.168.100.27 80 { 46 weight 1 47 HTTP_GET { 48 url { 49 path / 50 status_code 200 51 } 52 connect_timeout 3 53 nb_get_retry 3 54 delay_before_retry 3 55 } 56 } 57 }