文章目录
HA(High Available)概念
HA(High Available),高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。通常把正在执行业务的称为活动节点,而作为活动节点的一个备份的则称为备用节点。当活动节点出现问题,导致正在运行的业务(任务)不能正常运行时,备用节点此时就会侦测到,并立即接续活动节点来执行业务。从而实现业务的不中断或短暂中断。
我们之前学习了LVS的三种模式和十种算法,保证了集群的负载均衡,但是,实际生产环境中,作为负载均衡的集群中的一个节点,万一发生了故障,将是十分棘手的问题。如何解决这种问题呢?HA的概念应运而生,我们这里就学习利用lvs+ldirectord
实现高可用集群,避免单点故障对用户访问造成的影响。
lvs+ldirectord实现HA实验
实验环境准备
主机 | 服务 |
---|---|
真实主机localhost | 客户端 |
server1 | DS(Director Sever——LVS调度器) |
server2 | RS(Real Server——后端真实提供服务的虚拟机) |
server3 | RS(Real Server——后端真实提供服务的虚拟机) |
注意:我们所有的虚拟机server1-3的实验环境都是rhel7.5版本。
server1(DS)
- 清除之前模式的影响。保持环境纯净。
ipvsadm -C
ipvsadm -ln
- DR模式的添加
[root@server1 ~]# ipvsadm -A -t 172.25.66.100:80 -s rr
[root@server1 ~]# ipvsadm -a -t 172.25.66.100:80 -r 172.25.66.2:80 -g
[root@server1 ~]# ipvsadm -a -t 172.25.66.100:80 -r 172.25.66.3:80 -g
# 添加DR模式策略
[root@server1 ~]# ip addr add 172.25.66.100 dev eth0
# 添加VIP
server2与server3(Real Server)
- 清理之前的ip和网卡(如果有的话),添加VIP。
ip addr add 172.25.66.100 dev eth0
安装配置HA软件ldirectord
- 官网下载安装包,本主机已下载。
- 在DS(server1)上使用yum安装,发现缺少相关依赖。
- 配置高可用的yum源,解决依赖性,再次安装,成功!
- 查看ldirectord安装后产生的配置文件
[root@server1 keepalive_ldirectord]# rpm -qpl ldirectord-3.9.5-3.1.x86_64.rpm
warning: ldirectord-3.9.5-3.1.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 7b709911: NOKEY
/etc/ha.d
/etc/ha.d/resource.d
/etc/ha.d/resource.d/ldirectord
/etc/init.d/ldirectord
/etc/logrotate.d/ldirectord
/usr/lib/ocf/resource.d/heartbeat/ldirectord
/usr/sbin/ldirectord
/usr/share/doc/ldirectord-3.9.5
/usr/share/doc/ldirectord-3.9.5/COPYING
/usr/share/doc/ldirectord-3.9.5/ldirectord.cf
/usr/share/man/man8/ldirectord.8.gz
- 拷贝模板到主配置目录中
cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/
- 修改配置文件
物理机上测试
[root@localhost HighAvailability]# curl 172.25.66.100
server3
[root@localhost HighAvailability]# curl 172.25.66.100
server2
[root@localhost HighAvailability]# curl 172.25.66.100
server3
[root@localhost HighAvailability]# curl 172.25.66.100
server2
此时,如果一台RS宕机,服务不会中断,而是只由剩余RS提供,这就实现了服务的高可用。
[root@localhost HighAvailability]# curl 172.25.66.100
server2
[root@localhost HighAvailability]# curl 172.25.66.100
server2
如果所有的RS都宕机了,(当然,这种情况几乎不可能)我们可以在DS上写一个页面反馈给用户。
- 在DS(server1)上:
yum install -y httpd
echo "糟糕,505 ERROR" > /var/www/html/index.html
systemctl start httpd.service
- 我们停掉所有服务,再次请求VIP,发现:
[root@localhost HighAvailability]# curl 172.25.66.100
糟糕,505 ERROR