lvs DR模式+keepalived+nginx实现高可用负载

注意:
1.某个keepalived服务所在的机器作为当前master时,是无法访问VIP的(curl VIP)
2.出现脑裂会导致无法ping通VIP,脑裂是一种主被互相不能通信导致各自为政的情况
 

1.环境配置:
keepalived-master:192.168.8.8
keepalived-backup:192.168.8.9
nginx1:192.168.8.10
nginx2:192.168.8.11
配置VIP:192.168.8.6
# 系统均为CentOS Linux release 7.7.1908 (Core) 5.6.6-1.el7.elrepo.x86_64
2.部署软件:
都是用yum安装,比较方便


部署nginx0,192.168.8.10

# 关闭防火墙,也可以配置允许端口访问
systemctl stop firewalld && systemctl disable firewalld 
yum install epel-release -y
yum install nginx net-tools -y
systemctl start nginx && systemctl enable nginx
ps aux | grep "nginx"
echo "nginx0 192.168.8.10" > /usr/share/nginx/html/index.html

# ifconfig命令由上面net-tools安装包内所带,设置虚拟ip比较方便容易。
# 应该也可以使用最新的ip命令
# 增加VIP,路由
ifconfig lo:0 192.168.8.6 netmask 255.255.255.255 broadcast 192.168.8.6
/sbin/route add -host 192.168.8.6 dev lo:0

# 查看lo设备商有没有设置的VIP
ip a

# 抑制ARP
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1

部署nginx1,192.168.8.11

# 关闭防火墙,也可以配置允许端口访问
systemctl stop firewalld && systemctl disable firewalld 
yum install epel-release -y
yum install nginx net-tools -y
systemctl start nginx && systemctl enable nginx
ps aux | grep "nginx"
echo "nginx1 192.168.8.11" > /usr/share/nginx/html/index.html

# ifconfig命令由上面net-tools安装包内所带,设置虚拟ip比较方便容易。
# 应该也可以使用最新的ip命令
# 增加VIP,路由
ifconfig lo:0 192.168.8.6 netmask 255.255.255.255 broadcast 192.168.8.6
/sbin/route add -host 192.168.8.6 dev lo:0

# 查看lo设备商有没有设置的VIP
ip a

# 抑制ARP
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1

 

 

部署keepalived0+ipvsadm,192.168.8.8

systemctl stop firewalld && systemctl disable firewalld 
yum install keepalived ipvsadm -y

修改keepalived配置文件

vi /etc/keepalived/keepalived.conf

配置文件如下:

global_defs {
   notification_email {
         lizhejie@hotmail.com
   }
   notification_email_from sns-lvs@gmail.com
   smtp_server 192.168.8.1
   smtp_connection_timeout 30
   router_id LVS_DEVEL  # 设置lvs的id,在一个网络内应该是唯一的
}
vrrp_instance VI_1 {
    state MASTER   #指定Keepalived的角色,MASTER为主,BACKUP为备 记得大写
    interface ens32  #网卡id 不同的电脑网卡id会有区别 可以使用:ip a查看
    virtual_router_id 51  #虚拟路由编号,主备要一致
    priority 100  #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
    advert_int 1  #检查间隔,默认为1s
    authentication {   #这里配置的密码最多为8位,主备要一致,否则无法正常通讯
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.8.6  #定义虚拟IP(VIP)为192.168.7.6,可多设,每行一个
    }
}
# 定义对外提供服务的LVS的VIP以及port
virtual_server 192.168.8.6 80 {
    delay_loop 6 # 设置健康检查时间,单位是秒
    lb_algo rr # 设置负载调度的算法为rr
    lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式
    nat_mask 255.255.255.0
    persistence_timeout 0
    protocol TCP
    real_server 192.168.8.10 80 {  # 指定real server0的IP地址
        weight 3   # 配置节点权值,数字越大权重越高
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.8.11 80 {  # 指定real server1的IP地址
        weight 3  # 配置节点权值,数字越大权重越高
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

部署keepalived1+ipvsadm,192.168.8.9

systemctl stop firewalld && systemctl disable firewalld 
yum install keepalived ipvsadm -y

修改keepalived配置文件

vi /etc/keepalived/keepalived.conf

配置文件如下:

global_defs {
   notification_email {
         lizhejie@hotmail.com
   }
   notification_email_from sns-lvs@gmail.com
   smtp_server 192.168.8.1
   smtp_connection_timeout 30
   router_id LVS_DEVEL  # 设置lvs的id,在一个网络内应该是唯一的
}
vrrp_instance VI_1 {
    state BACKUP #指定Keepalived的角色,MASTER为主,BACKUP为备 记得大写
    interface ens32  #网卡id 不同的电脑网卡id会有区别 可以使用:ip a查看
    virtual_router_id 51  #虚拟路由编号,主备要一致
    priority 50  #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
    advert_int 1  #检查间隔,默认为1s
    authentication {   #这里配置的密码最多为8位,主备要一致,否则无法正常通讯
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.8.6  #定义虚拟IP(VIP)为192.168.1.200,可多设,每行一个
    }
}
# 定义对外提供服务的LVS的VIP以及port
virtual_server 192.168.8.6 80 {
    delay_loop 6 # 设置健康检查时间,单位是秒
    lb_algo rr # 设置负载调度的算法为rr
    lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式
    nat_mask 255.255.255.0
    persistence_timeout 0
    protocol TCP
    real_server 192.168.8.10 80 {  # 指定real server0的IP地址
        weight 3   # 配置节点权值,数字越大权重越高
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.8.11 80 {  # 指定real server1的IP地址
        weight 3  # 配置节点权值,数字越大权重越高
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}


启动两个keepalived服务

systemctl start keepalived && systemctl enable keepalived


查看VIP状态和LVS转发状态

#查看两台keepalived服务器上的VIP情况
# 当前MASTER节点网卡上会出现VIP,BACKUP上没有VIP
# 关闭MASTER节点keepalived服务后,VIP会漂移到BACKUP节点网卡上
ip a

# 查看转发状态
# 会看到设置的VIP转发到后端的nginx上
ipvsadm -Ln


测试服务成功与否
在宿主机浏览器地址栏键入VIP进行浏览
#chrome可能需要浏览一次清除缓存,火狐可以强制刷新。可以看到出现的结果不一样

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值