简介:
keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(Health Checking)功能——判断LVS负载调度器、节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机修复后将其重新加入群集。
Keepalived采用VRRP(Virtual Router Redundancy Protocl,虚拟路由冗余协议)热备份协议,以软件的方式实现Linux服务器的多机热备功能。

实验拓扑:
LVS + Keepalived 高可用群集部署_第1张图片

实验环境:

序号 名称 类型 IP地址
1 keepalived 主 centos7 192.168.10.10
2 keepalived 从 centos7 192.168.10.20
3 节点服务器 web1 centos7 192.168.10.100
4 节点服务器 web2 centos7 192.168.10.200
5 客户机 client centos7 192.168.10.15

实验过程:
一、调度服务器
1、安装环境部署、关闭防火墙、安全功能,两台调度服务器相同操作

[root@localhost ~]#yum install keepalived ipvsadm -y
[root@localhost ~]#systemctl stop firewalld.service 
[root@localhost ~]#setenforce 0

2、修改网卡为仅主机模式,配置静态IP,两台调度服务器相同操作,DR 1:192.168.10.10 DR 2:192.168.10.20

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]#service network restart

LVS + Keepalived 高可用群集部署_第2张图片
3、开启路由功能、关闭重定向功能,两台调度服务器相同操作

[root@localhost ~]#vi /etc/sysctl.conf
[root@localhost ~]#sysctl -p


4、配置虚拟IP,并开启。注意:如果DR开启虚拟网卡时报错,可用 service network restart 重启网卡,再次开启即可成功。

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]#cp ifcfg-ens33 ifcfg-ens33:0
[root@localhost network-scripts]#vim ifcfg-ens33:0
      DEVICE=ens33:0
      ONBOOT=yes
      IPADDR=192.168.10.2
      NETMASK=255.255.255.0
[root@localhost ~]#ifup ens33:0

DR 1:
LVS + Keepalived 高可用群集部署_第3张图片
DR 2:
LVS + Keepalived 高可用群集部署_第4张图片
5、编辑服务脚本,并执行,两台调度服务器相同操作

[root@localhost ~]# cd /etc/init.d/
[root@localhost ~]#vim dr.sh

LVS + Keepalived 高可用群集部署_第5张图片

[root@localhost ~]#chmod +x dr.sh  
[root@localhost ~]#service dr.sh start

二、节点服务器
1、安装环境部署,关闭防火墙、安全功能,两台节点服务器同样操作

[root@localhost ~]#yum install httpd -y
[root@localhost ~]#systemctl stop firewalld.service 
[root@localhost ~]#setenforce 0

2、开启网页服务,并设置测试页面,web1和web2测试页面加以区分

[root@localhost ~]#systemctl start httpd.service
[root@localhost ~]#cd /var/www/html/
[root@localhost html]#echo "this is aaa" > index.html      #web1
[root@localhost html]#echo "this is bbb" > index.htm       #web2

3、修改网卡为仅主机模式,web1配置静态IP为192.168.10.100,web2:192.168.10.200,并配置回环网卡的虚拟IP

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]#service network restart
[root@localhost ~]#cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]#cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]#vim ifcfg-lo:0
      DEVICE=lo:0
      IPADDR=192.168.10.2
      NETMASK=255.255.255.0
      ONBOOT=yes

web1:
LVS + Keepalived 高可用群集部署_第6张图片
web2:
LVS + Keepalived 高可用群集部署_第7张图片

4、编辑服务脚本,并执行,两台节点服务器相同操作

[root@localhost ~]#cd /etc/init.d/
[root@localhost ~]#vim web.sh

LVS + Keepalived 高可用群集部署_第8张图片

[root@localhost ~]#chmod +x web.sh
[root@localhost ~]#service web.sh start
[root@localhost ~]#ifup lo:0

5、用火狐浏览器进行自测:firefox "http://127.0.0.1/" & ,访问后重启脚本服务
web1:
LVS + Keepalived 高可用群集部署_第9张图片
web2:
LVS + Keepalived 高可用群集部署_第10张图片
*到此部分,节点服务器服务部署完成,DR调度服务器配置完成,便可用客户机检测:通过访问调度服务器虚拟IP,可以访问到web1、web2的测试页面
LVS + Keepalived 高可用群集部署_第11张图片
LVS + Keepalived 高可用群集部署_第12张图片
三、在两台调度服务器上配置keepalived服务
1、在192.168.10.10上配置主服务器

[root@localhost ~]#cd /etc/keepalived/
[root@localhost ~]#vim keepalived.conf

LVS + Keepalived 高可用群集部署_第13张图片
2、开启服务,并查看状态

[root@localhost ~]#systemctl start keepalived
[root@localhost ~]#systemctl status keepalived

LVS + Keepalived 高可用群集部署_第14张图片
3、在192.168.10.20上配置备用服务器

[root@localhost ~]#cd /etc/keepalived/
[root@localhost ~]#vim keepalived.conf

LVS + Keepalived 高可用群集部署_第15张图片
4、开启服务,并查看状态
LVS + Keepalived 高可用群集部署_第16张图片
5、测试,如果客户机无法访问,此时只需要将其防火墙重新关闭,并重启相关服务即可。
LVS + Keepalived 高可用群集部署_第17张图片
访问到网页后,down掉keepalived的主服务器,再次访问,如果成功,说明热备冗余设置成功。
LVS + Keepalived 高可用群集部署_第18张图片

到此实验已全部完成,其中报错较多,可以试着用重启服务等方式进行调整,并注意是否是虚拟网卡的问题!