一、高可用群集(HA)的作用
企业应用中,单台服务器承担应用存在单点故障的危险,单点故障一旦发生,企业服务将发生中断,造成极大的危害。
高可用集群是由一台主调度器和一台或多台备用调度器。在主调度器能够正常运转时,由主调度器进行节点服务器业务的分配处理,其余备用调度器处于待机状态,不参与当前的集群运转。当主调度器出现故障无法运转时,此时备用调度器会由优先级最高的调度承担主调度器的工作,而出现故障的主调调度器便会退出当前工作,由人工维修后返回集群。这样可避免因调度器瘫痪业务中断的风险,所以实现了真正的高可用的效果
一个合格的集群应该具备的特点:
- 负载均衡 用于提高集群的性能 LVS Nginx HAProxy SLB F5
- 健康检查 针对调度器和节点服务器 keepalived Heartbeat
- 故障转移 通过VIP漂移实现主备切换
健康检查 (探针)常用的工作方式
- 发送心跳消息 vrrp报文 ping/pong
- Tcp端口检查 向目标主机的IP:PORT 发起tcp连接请求
- HTTP URL检查
二、keepalived方案
1、keepalived简介
Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。是专为LVS和HA设计的一款健康检查工具。
支故障自动切换 (Failover)
支持节点健康状态检查 (Health Checking)
可以判断 LVS 负载调度器、节点服务器的可用性,当 master 主机出现故障及时切换到backup 节点保证业务正常,当 master故障主机恢复后将其重新加入群集并且业务重新切换回 master 节点。
2、Keepalived实现原理
Keepalived是基于vrrp实现的高可用方案
默认情况下通过优先级决定主备服务器的角色,主服务器会通过IP命令在本地生成VIP,接受并处理客户端发送的请求消息,同时还会定时发送VRRP报文给备服务器,告知主服务器的存活状态,当主服务器异常时,备服务器会接管VIP继续提供服务,保证服务的高可用。
Keepalived体系主要模块及其作用:
keepalived体系架构中主要有三个模块,分别是core、check和vrrp。
●core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
●vrrp模块:是来实现VRRP协议的。(调度器之间的健康检查和主备切换)
●check模块:负责健康检查,常见的方式有端口检查及URL检查。(节点服务器的健康检查)
3、抢占式keepalived实验
(1)安装keepalived
yum install -y keepalived
(2)修改配置文件
master服务器配置
backup服务器配置
(3)启动keepalived
[root@localhost keepalived]# systemctl start keepalived.service
[root@localhost keepalived]# systemctl enable keepalived.service
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.
查看master地址,此时VIP不在此服务器上
查看backup的ip地址,此时VIP不在此服务器上
停止master的keepalived,此时VIP不在此服务器上,备用服务器backup变为主服务器
4、非抢占式keepalived实验
原mster服务器修改配置文件,之后停止keepalived服务
backup配置,之后停止keepalived服务
此时谁先启动keepalived服务谁即为主服务器
总结:
Keepalived首先做初始化先检查state状态,master为主服务器,backup为备服务器。
然后再对比所有服务器的priority,谁的优先级高谁是最终的主服务器。
优先级高的服务器会通过ip命令为自己的电脑配置一个提前定义好的浮动IP地址。
keepalived的抢占与非抢占模式:
抢占模式即MASTER从故障中恢复后,会将VIP从BACKUP节点中抢占过来。非抢占模式即MASTER恢复后不抢占BACKUP升级为MASTER后的VIP
非抢占式俩节点state必须为bakcup,且必须配置nopreempt。
注意:这样配置后,我们要注意启动服务的顺序,优先启动的获取master权限,与优先级没有关系了。
三、LVS+KeepAlived高可用负载均衡集群的部署
部署前的准备
主DR 服务器:192.168.10.14
备DR 服务器:192.168.10.104
Web 服务器1:192.168.10.11
Web 服务器2:192.168.10.12
NFS服务器: 192.168.10.13
vip:192.168.10.100
NFS服务器配置
(具体操作在上一章)
web端配置
(两个配置一样)
主DR 服务器
192.168.10.14
yum install -y keepalived
yum install -y keepalived
[root@localhost ~]# modprobe ip_vs
[root@localhost ~]# touch /etc/sysconfig/ipvsadm
[root@localhost ~]# systemctl enable --now ipvsadm
Created symlink from /etc/systemd/system/multi-user.target.wants/ipvsadm.service to /usr/lib/systemd/system/ipvsadm.service.
备DR 服务器
192.168.10.104
yum install -y keepalived
yum install -y keepalived
[root@localhost ~]# modprobe ip_vs
[root@localhost ~]# lsmod | grep ip_vs
ip_vs_rr 12600 3
ip_vs 145458 5 ip_vs_rr
nf_conntrack 139264 1 ip_vs
libcrc32c 12644 3 xfs,ip_vs,nf_conntrack
[root@localhost ~]# touch /etc/sysconfig/ipvsadm
[root@localhost ~]# systemctl start ipvsadm
[root@localhost ~]# systemctl enable ipvsadm
Created symlink from /etc/systemd/system/multi-user.target.wants/ipvsadm.service to /usr/lib/systemd/system/ipvsadm.service.
[root@localhost ~]# systemctl status ipvsadm
测试
systemctl start keepalived.service
此时删除一个服务器,依然可以进行访问