keepalived高可用lvs集群,主/备和主/主模型

利用keepalived高可用lvs集群,主/备和主/主;

vrrp_script高可用双主nginx;


keepalived主备:lvs-dr工作模型

网络搭建:

在前端2台调度器:

DR1:172.18.11.111

DR2:172.18.11.112

VIP:172.18.11.7


后端2台web服务器,运行nginx;

RS1:172.18.11.11

RS2:172.18.11.12


搭建web服务器:

提供简单的测试页面,以便容易观测到哪台RS被调度响应:

在RS1上:

]# yum -y install nginx

]# systemctl start nginx.service

]# cd /usr/share/nginx/html/

]# cp index.html{,.bak}

]# vim index.html

<h1> RS2-172.18.11.11</h1>

在RS2上:

]# yum -y install nginx

]# systemctl start nginx.service

]# cd /usr/share/nginx/html/

]# cp index.html{,.bak}

]# vim index.html

<h1> RS2-172.18.11.12</h1>


在RS1上为方便设置内核参数,编写自动设置脚本:

]# vim skp.sh

keepalived高可用lvs集群,主/备和主/主模型_第1张图片

]# chmod +x skp.sh

]# ./skp.sh start

查看内核参数,确保生效:

]# cat /proc/sys/net/ipv4/conf/all/arp_ignore

]# cat /proc/sys/net/ipv4/conf/all/arp_announce


此脚本传递给RS2:

]# scp skp.sh [email protected]:/root

在RS2主机运行:

]# ./skp.sh start

查看是否arp设置成功

]# cat /proc/sys/net/ipv4/conf/all/arp_ignore

]# cat /proc/sys/net/ipv4/conf/all/arp_announce


在两个调度器上安装keepalived程序并编辑配置文件

]# yum -y install keepalived


分别编辑两个调度器keepalived配置文件

DR1配置:

keepalived高可用lvs集群,主/备和主/主模型_第2张图片

keepalived高可用lvs集群,主/备和主/主模型_第3张图片


DR2配置:

只需修改state为备用和优先级即可,其它都保存不变:

keepalived高可用lvs集群,主/备和主/主模型_第4张图片


在两台调度器上安装ipvsadm命令工具;

安装ipvsadm并查看lvs集群:

]# yum -y install ipvsadm

]# ipvsadm -Ln

显示内容:

可在DR1查看接口上的VIP,已经获得:

keepalived高可用lvs集群,主/备和主/主模型_第5张图片


找一台主机多次执行测试:

]# curl http://172.18.11.7

会发现,访问请求是由两台RS交替响应的服务;即:


使DR1掉线即手动停止keepalived服务,观察DR2获得VIP负责集群调度;也可同时手动关闭一台RS上的web服务;仍能正常请求web服务;

这就是keepalived基于主备工作模式健康状态检测,来提供高可用nginx的lvs集群服务;



再做keepalived的主/模式主,来提供高可用nginx的lvs集群服务;

只不过就是两个vrrp实例,一个是A的主B的备,一个是B的主A的备;

DR1:172.18.11.111

DR2:172.18.11.112

VIP1:172.18.11.7

VIP2:172.18.11.77


RS1:172.18.11.11

RS2:172.18.11.12


在DR1上配置keepalived:

keepalived高可用lvs集群,主/备和主/主模型_第6张图片

keepalived高可用lvs集群,主/备和主/主模型_第7张图片

keepalived高可用lvs集群,主/备和主/主模型_第8张图片

keepalived高可用lvs集群,主/备和主/主模型_第9张图片

注意:centos7中可能没有killall命令需要安装psmisc程序包,才能使用;

]# yum -y install psmisc


在DR2上配置keepalived:

keepalived高可用lvs集群,主/备和主/主模型_第10张图片

keepalived高可用lvs集群,主/备和主/主模型_第11张图片


编辑脚本通知机制:

keepalived高可用lvs集群,主/备和主/主模型_第12张图片


配置RS:

在RS1上为方便设置内核参数,编写自动设置脚本:

keepalived高可用lvs集群,主/备和主/主模型_第13张图片

注意:此处有一大坑!要在两台RS上分别添加lo:1的本机路由条目:

以便实现172.18.11.77能够被访问调度:

]# ifconfig lo:1 172.18.11.77 netmask 255.255.255.255 broadcast 172.18.11.77

]# route add -host 172.18.11.77 dev lo:1


]# chmod +x skp.sh

]# ./skp.sh start

查看内核参数,确保生效:

]# cat /proc/sys/net/ipv4/conf/all/arp_ignore

]# cat /proc/sys/net/ipv4/conf/all/arp_announce


此脚本传递给RS2:

]# scp skp.sh [email protected]:/root

在RS2主机运行:

]# ./skp.sh start

查看是否arp设置成功

]# cat /proc/sys/net/ipv4/conf/all/arp_ignore

]# cat /proc/sys/net/ipv4/conf/all/arp_announce


两台DR上的keepalived都启动,两台RS上的web服务都启动,分别查看两台DR的ip地址:

keepalived高可用lvs集群,主/备和主/主模型_第14张图片

分别获取到不同VIP,即DR1是VIP1的主用,是VIP2的备用,DR2是VIP1的备用,是VIP2的主用;


测试:访问VIP1和VIP2

keepalived高可用lvs集群,主/备和主/主模型_第15张图片


可继续测试,手动停止DR1上的keepalived,查看DR2上的ip地址:

在另一台主机curl测试两个VIP:在一台调度器掉线时,对于两个VIP提供的服务,使用curl测试两个VIP,没有任何影响;


同时,再手动停止RS2的nginx服务,在另一台主机curl测试两个VIP:

keepalived高可用lvs集群,主/备和主/主模型_第16张图片

此时,一台调度器掉线,一台RS掉线,仍能能保持两个VIP提供客户端的服务;

实现了keepalived高可用lvs-dr集群调度,双主nginx的应用。


你可能感兴趣的:(keepalived,高可用,主备)