阿里云、华为云keepalived和vip虚IP配置安装部署
架构为: 双服务器,双VIP,关系如下:
外网IP VIP-虚IP 内网服务器IP 219.153.117.65 192.168.43.240 192.168.43.49-slave节点/192.168.43.132-master节点 219.153.117.103 192.168.43.241 192.168.43.49-master节点/192.168.43.132-slave节点
图我就不画了,就是一个“外网IP映射到一个虚IP,然后虚IP映射到两个服务器IP”。
可以参考链接:搭建Keepalived Nginx高可用Web集群
注意:
1、VIP是自己随便设定的(只要在相同网段,本文是192.168.43.1/32网段,不和其他已有IP冲突就行)。
2、如果是用的阿里云、华为云,则要想让VIP能与网段下的其他IP通信,则需要在控制台申请(免费的),相关操作参见阿里云、华为云的文档,例如:
3、其中虚IP对应的服务器slave和master关系不是固定不变的,默认情况下priority权重大的是master,但是随着服务(这里为nginx)挂掉一次减少weight,会影响到实际的priority值。参见:https://blog.csdn.net/weixin_42558057/article/details/82722516
整个安装和配置过程如下:
yum install keepalived -y
date(确保两个服务器时间一致)
cat /etc/keepalived/keepalived.conf
echo net.ipv4.ip_nonlocal_bind=1 >> /etc/sysctl.conf
cat /usr/bin/check_nginx_alive.sh
#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
systemctl start nginx.service
sleep 2
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
systemctl stop keepalived.service
fi
fi
systemctl start keepalived
systemctl enable keepalived最关键的配置文件,在下面有详细注释:
其中配置文件server1(192.168.43.49,VIP-192.168.43.240-slave、241-master)为:
vrrp_script check_nginx_alive {
##脚本路径
script "/usr/bin/check_nginx_alive.sh"
#script "[[ `ps -ef | grep nginx | grep -v grep | wc -l` -ge 2 ]] && exit 0 || exit 1"
interval 3
#宕机一次将自身权重减3,权重改变则master-slave关系也将改变
weight -3
}
global_defs {
## 设置lvs的id,在一个网络内唯一,可以自定义,保持唯一性
# 机器标识,通常可设为hostname。故障发生时,邮件通知会用到。
router_id LB_DEVEL49
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
mcast_src_ip 192.168.43.49
virtual_router_id 51
priority 92
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
unicast_src_ip 192.168.43.49
virtual_ipaddress {
192.168.43.240
}
track_script {
check_nginx_alive
}
}
##实例名,可修改
vrrp_instance VI_2 {
## 主机配置,从机为BACKUP
state MASTER
## 网卡名称,虚拟机一般都是使用eth0
interface eth0
mcast_src_ip 192.168.43.49
##虚拟路由ID,两机器保持一致即可
virtual_router_id 52
## 权重值。值越大,优先级越高,backup-92设置比master-100小
priority 100
## 组播信息发送间隔,两个节点设置必须一样
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
unicast_src_ip 192.168.43.49
virtual_ipaddress {
## 同一网段虚拟IP
192.168.43.241
}
##与检测脚本一起使用
track_script {
check_nginx_alive
}
}server2(192.168.43.132,VIP-192.168.43.241-slave、240-master)为:
vrrp_script check_nginx_alive {
##脚本路径
script "/usr/bin/check_nginx_alive.sh"
#script "[[ `ps -ef | grep nginx | grep -v grep | wc -l` -ge 2 ]] && exit 0 || exit 1"
interval 3
#宕机一次将自身权重减3,权重改变则master-slave关系也将改变
weight -3
}
global_defs {
## 设置lvs的id,在一个网络内唯一,可以自定义,保持唯一性
# 机器标识,通常可设为hostname。故障发生时,邮件通知会用到。
router_id LB_DEVEL132
}
##实例名,可修改
vrrp_instance VI_1 {
## 主机配置,从机为BACKUP
state MASTER
## 网卡名称,虚拟机一般都是使用eth0
interface eth0
mcast_src_ip 192.168.43.132
##虚拟路由ID,两机器保持一致即可
virtual_router_id 51
## 权重值。值越大,优先级越高,backup-92设置比master-100小
priority 100
## 组播信息发送间隔,两个节点设置必须一样
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
unicast_src_ip 192.168.43.132
virtual_ipaddress {
## 同一网段虚拟IP
192.168.43.240
}
##与检测脚本一起使用
track_script {
check_nginx_alive
}
}
vrrp_instance VI_2 {
state BACKUP
interface eth0
mcast_src_ip 192.168.43.132
virtual_router_id 52
priority 92
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
unicast_src_ip 192.168.43.132
virtual_ipaddress {
192.168.43.241
}
track_script {
check_nginx_alive
}
}亲测在华为云CentOS 7的服务器上是完全可以用的。
配置补充说明:
virtual_router_id 52,是一组VIP共同的标识,两边要一致。