利用Keepalived实现VIP+LVS+后端状态检测(TCP检测或HTTP检测)
2021/6/21 6:29:09
本文主要是介绍利用Keepalived实现VIP+LVS+后端状态检测(TCP检测或HTTP检测),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、实验环境
VIP+LVS 服务器:10.0.0.11(keepalived-1)、10.0.0.12(keepalived-2)
nginx服务器:10.0.0.13(nginx-web-1)、10.0.0.14(nginx-web-2)
VIP:10.0.0.100
二、VIP配置
keepalived-1 配置
[root@keepalived-1 ~]# mkdir /etc/keepalived/conf/ [root@keepalived-1 ~]# vim /etc/keepalived/keepalived.conf global_defs { router_id LVS_DEVEL vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.100 dev eth0 label eth0:0 } } include /etc/keepalived/conf/*.conf [root@keepalived-1 ~]# systemctl restart keepalived.service
keepalived-2 配置
[root@keepalived-2 ~]# mkdir /etc/keepalived/conf/ [root@keepalived-2 ~]# vim /etc/keepalived/keepalived.conf global_defs { router_id LVS_DEVEL vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 80 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.100 dev eth0 label eth0:0 } } include /etc/keepalived/conf/*.conf [root@keepalived-2 ~]# systemctl restart keepalived.service
三、Nginx配置访问页面
nginx-web-1 配置
[root@nginx-web-1 ~]# vim /apps/nginx/html/index.html 10.0.0.13-nginx-web1
nginx-web-2 配置
[root@nginx-web-2 ~]# vim /apps/nginx/html/index.html 10.0.0.14-nginx-web2
四、LVS配置
keepalived-1 配置
[root@keepalived-1 ~]# vim /etc/keepalived/conf/vip-10.0.0.100-80.conf virtual_server 10.0.0.100 80 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 120 protocol TCP sorry_server 10.0.0.101 80 real_server 10.0.0.13 80 { weight 1 TCP_CHECK { connect_timeout 5 nb_get_retry 3 delay_before_retry 3 } } real_server 10.0.0.14 80 { weight 1 TCP_CHECK { connect_timeout 5 nb_get_retry 3 delay_before_retry 3 } } } [root@keepalived-1 ~]# systemctl restart keepalived.service [root@keepalived-1 ~]# ipvsadm -Ln #查看LVS配置是否生效,加上--stats可以查看更详细的信息 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 persistent 120 -> 10.0.0.13:80 Route 1 0 0 -> 10.0.0.14:80 Route 1 0 0
keepalived-2 配置
[root@keepalived-2 ~]# vim /etc/keepalived/conf/vip-10.0.0.100-80.conf virtual_server 10.0.0.100 80 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 120 protocol TCP sorry_server 10.0.0.101 80 real_server 10.0.0.13 80 { weight 1 TCP_CHECK { connect_timeout 5 nb_get_retry 3 delay_before_retry 3 } } real_server 10.0.0.14 80 { weight 1 TCP_CHECK { connect_timeout 5 nb_get_retry 3 delay_before_retry 3 } } } [root@keepalived-2 ~]# systemctl restart keepalived.service [root@keepalived-2 ~]# 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 persistent 120 -> 10.0.0.13:80 Route 1 0 0 -> 10.0.0.14:80 Route 1 0 0
nginx-web-1 在RS上配置VIP,实现DR功能
[root@nginx-web-1 ~]# vim lvs_dr_rs.sh LVS_VIP=10.0.0.100 source /etc/rc.d/init.d/functions case "$1" in start) /sbin/ifconfig lo:0 $LVS_VIP netmask 255.255.255.255 broadcast $LVS_VIP /sbin/route add -host $LVS_VIP dev lo:0 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_announce sysctl -p > /dev/null 2>&1 echo "Real Server Start OK!" ;; stop) /sbin/ifconfig lo:0 down /sbin/route del $LVS_VIP > /dev/null 2>&1 echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce echo "Real Server Stoped!" ;; *) echo "Usage: (basename0) start|stop" exit 1 ;; esac [root@nginx-web-1 ~]# bash lvs_dr_rs.sh start Real Server Start OK!
nginx-web-2 在RS上配置VIP,实现DR功能
[root@nginx-web-2 ~]# vim lvs_dr_rs.sh LVS_VIP=10.0.0.100 source /etc/rc.d/init.d/functions case "$1" in start) /sbin/ifconfig lo:0 $LVS_VIP netmask 255.255.255.255 broadcast $LVS_VIP /sbin/route add -host $LVS_VIP dev lo:0 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_announce sysctl -p > /dev/null 2>&1 echo "Real Server Start OK!" ;; stop) /sbin/ifconfig lo:0 down /sbin/route del $LVS_VIP > /dev/null 2>&1 echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce echo "Real Server Stoped!" ;; *) echo "Usage: (basename0) start|stop" exit 1 ;; esac [root@nginx-web-2 ~]# bash lvs_dr_rs.sh start Real Server Start OK!
五、访问测试
六、测试VIP切换
关闭master的keepalived服务
[root@keepalived-1 ~]# systemctl stop keepalived.service
再次通过浏览器进行访问
七、后端服务器状态检测测试
关闭后端服务器nginx-web-2
[root@nginx-web-2 ~]# systemctl stop nginx.service
在LVS服务器上查看存活的后端服务器,经命令查看,LVS已经把非存活服务器从转发列表删除
[root@keepalived-1 ~]# ipvsadm -Ln --stats IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes -> RemoteAddress:Port TCP 10.0.0.100:80 0 0 0 0 0 -> 10.0.0.13:80 0 0 0 0 0
通过浏览器访问,不再访问到 nginx-web-2
将后端服务器nginx-web-2再次开启
[root@nginx-web-2 ~]# systemctl start nginx.service
在LVS服务器上查看存活的后端服务器,经命令查看,LVS已经把恢复正常的服务器添加到转发列表中
[root@keepalived-1 ~]# ipvsadm -Ln --stats IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes -> RemoteAddress:Port TCP 10.0.0.100:80 1 14 0 1490 0 -> 10.0.0.13:80 1 14 0 1490 0 -> 10.0.0.14:80 0 0 0 0 0
八、修改LVS配置,将TCP检测换成HTTP检测
keepalived-1 配置
[root@keepalived-1 ~]# vim /etc/keepalived/conf/vip-10.0.0.100-80.conf virtual_server 10.0.0.100 80 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 120 protocol TCP sorry_server 10.0.0.101 80 real_server 10.0.0.13 80 { weight 1 HTTP_GET { url { path /index.html status_code 200 } connect_timeout 5 nb_get_retry 3 delay_before_retry 3 } } real_server 10.0.0.14 80 { weight 1 HTTP_GET { url { path /index.html status_code 200 } connect_timeout 5 nb_get_retry 3 delay_before_retry 3 } } } [root@keepalived-1 ~]# systemctl restart keepalived.service [root@keepalived-1 ~]# ipvsadm -Ln --stats IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes -> RemoteAddress:Port TCP 10.0.0.100:80 0 0 0 0 0 -> 10.0.0.13:80 0 0 0 0 0 -> 10.0.0.14:80 0 0 0 0 0
keepalived-2 配置
[root@keepalived-2 ~]# vim /etc/keepalived/conf/vip-10.0.0.100-80.conf virtual_server 10.0.0.100 80 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 120 protocol TCP sorry_server 10.0.0.101 80 real_server 10.0.0.13 80 { weight 1 HTTP_GET { url { path /index.html status_code 200 } connect_timeout 5 nb_get_retry 3 delay_before_retry 3 } } real_server 10.0.0.14 80 { weight 1 HTTP_GET { url { path /index.html status_code 200 } connect_timeout 5 nb_get_retry 3 delay_before_retry 3 } } } [root@keepalived-2 ~]# systemctl restart keepalived.service [root@keepalived-2 ~]# ipvsadm -Ln --stats IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes -> RemoteAddress:Port TCP 10.0.0.100:80 0 0 0 0 0 -> 10.0.0.13:80 0 0 0 0 0 -> 10.0.0.14:80 0 0 0 0 0
这篇关于利用Keepalived实现VIP+LVS+后端状态检测(TCP检测或HTTP检测)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-19EntBot.ai: AI Website Chatbot for Product Guides and Development Doc
- 2024-06-17zero-shot-learning-definition-examples-comparison
- 2024-06-06Package Easy(基于 NSIS 的打包exe安装包工具)使用方法-icode9专业技术文章分享
- 2024-06-06基于 casdoor 的 ELK 开源登录认证解决方案: elk-auth-casdoor-icode9专业技术文章分享
- 2024-05-29Elasticsearch慢查询日志配置
- 2024-05-29揭秘华为如此多成功项目的产品关键——Charter模板
- 2024-05-29海外IDC业务拓展的7大挑战
- 2024-05-29InLine Chat功能优化对标Github Copilot,CodeGeeX带来更高效、更直观的编程体验!
- 2024-05-29CodeGeeX 智能编程助手 6 项功能升级,在Visual Studio插件市场霸榜2周!
- 2024-05-29AutoMQ 生态集成 Apache Doris