ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

利用Keepalived实现VIP+LVS+后端状态检测(TCP检测或HTTP检测)

2021-06-21 00:00:46  阅读:154  来源: 互联网

标签:10.0 HTTP LVS 检测 keepalived nginx conf 80 root


一、实验环境

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

标签:10.0,HTTP,LVS,检测,keepalived,nginx,conf,80,root
来源: https://blog.csdn.net/qq_42606357/article/details/118076038

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有