前面写到的LVS以及haproxy属于负载均衡类型的集群,如果大家有不理解的可以参考我之前的写的文章
一 高可用集群
1.1高可用的定义和意义
在负载均衡中调度器如果瘫痪会导致整个集群一起瘫痪,调度器的作用无疑是很重要的,为了保证集群稳定性,降低调度器挂掉导致企业经济损失,因此有了高可用 。
高可用集群简单来说就是备份一个调度器,当正在运行的调度器挂掉后,会代替住调度器继续运行,保证了集群的稳定。
1.2高可用的可用性
1.3 系统故障
1.4 实现高可用
1.5.VRRP:Virtual Router Redundancy Protocol
当server访问企业内网时,为了保证稳定性,采用高可用保持稳定性,路由器和调度器只有VIP可以直接上网,当master主机正常运行时,VIP会一直存在于master主机,当master主机故障后,VIP会传递至backup主机也就是备用主机。
关于如何确认master主机任然存活,就需要用到VRRP,master主机会在网络中不断发送信息给组播,组播来判断哪个主机任然存活。
1.5.1 VRRP 相关术语
虚拟路由器: Virtual Router虚拟路由器标识: VRID(0-255) ,唯一标识虚拟路由器VIP : Virtual IPVMAC : Virutal MAC (00-00-5e-00-01-VRID)物理路由器:master :主设备backup :备用设备priority :优先级
1.5.2 VRRP 相关技术
通告:心跳,优先级等;周期性工作方式:抢占式,非抢占式安全认证:无认证简单字符认证:预共享密钥MD5工作模式:主 / 备:单虚拟路由器主 / 主:主 / 备(虚拟路由器 1 ),备 / 主(虚拟路由器 2 )
二 keepalive的部署
2.1 keepalived 简介
vrrp 协议的软件实现,原生设计目的为了高可用 ipvs 服务官网: http://keepalived.org/功能:基于 vrrp 协议完成地址流动为 vip 地址所在的节点生成 ipvs 规则 ( 在配置文件中预先定义 )为 ipvs 集群的各 RS 做健康状态检测基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持 nginx 、 haproxy 等服务
2.2 keepalived环境配置
创建虚拟机配置ip,在webserver配置http服务
ka1
ka2
webserver1
webserver2
2.3keepalived的下载和基础配置
在ka1和ka2上下载安装keepalive服务
全局配置
虚拟路由配置
设置虚拟网卡子接口
启动并且设置自启动服务,查看VIP
ka2端配置与ka1基本相同,但是主机身份和优先级需要修改
抓包结果可以看到ka1和ka2在向组播确认存活
2.4虚拟路由的通讯设定
此时我们在除了ka1和ka2的地方ping vip是ping不通的,因为为了防止被人攻击,vip会主动把包给丢弃,因此ping vip是没有结果得到,不会失败也不会成功
需要在全局配置中增加一个配置
重启服务后,虚拟路由即可通讯
或者将把强制启动vrrp协议给关闭(如果关闭两端都要关闭,如果开启两端都要开启,保证ka1和ka2配置一致)(记得关闭防火墙 selinux放行)
结果测试
2.5 keepalived日志分离
编辑该文件
将采集日志增加id,0-7都可
重启服务
编辑日志配置文件
重启日志服务
把keepalived服务重启,查看日志文件是否自动创建
2.6 keepalived独立子配置文件
把源文件里面的配置给注释了,不然会和创建的子配置文件冲突
在主配置文件中指定子配置文件
创建文件写入配置
三.Keepalived 企业应用示例
3.1 抢占模式和非抢占模式
ka1如果出现故障,VIP会被发送至ka2,当ka1修复好了后,会把在ka2上的VIP抢过来,这就是抢占模式,会导致VIP在主机上漂移,引起抖动因此建议使用非抢占模式,只有当ka2断开,VIP才会回到ka1,当配置了非抢占模式,此时不管ka1和ka2此时互为备用。
增加以下参数即可,ka1和ka2都需要配置,且都是backup身份
此时先重启ka2再重启ka1会发现VIP在ka2上且不会主动转移到ka1上
还可以配置抢占延迟时间(一般抢占时间为很长,为了看效果这里只设置5秒)
记得把刚刚配置的非抢占模式注释掉,添加如下参数,ka1和ka2都i要配置
先重启ka2再重启ka1
5s前的ka1
5s后的ka1
3.2 VIP单播配置
因为存活信息都是发给组播地址,会导致组播地址阻塞拥堵,因此配置单播,让ka1发给ka2包货,ka2发给ka1保活,减小组播地址的压力。
在ka1中vrrp配置
在ka2中的配置则于ka1相反
抓包测试
3.3keepalive通知脚本配置
3.3.1脚本编写
当主机发生故障时,VIP发生迁移,为了时刻让程序员知道VIP当前情况,需要通知程序员,因此需要配置邮件服务
先下载邮件服务
因为成功发送邮件需要配置邮件服务器,因此需要我们去找到我们邮箱的授权码这里用qq邮箱演示
这里点击生成授权码,将授权码复制
编辑邮件的配置文件
在最后加上,ka1和ka2端都需要配置
编写一个脚本(ka1和ka2两端都需要配置)(这边代码data写错了,应该是date)
授予可执行权限
3.3.2在配置文件中调用该脚本
当前节点成为主节点时触发的脚本notify_master <STRING>|<QUOTED-STRING>当前节点转为备节点时触发的脚本notify_backup <STRING>|<QUOTED-STRING>当前节点转为 “ 失败 ” 状态时触发的脚本notify_fault <STRING>|<QUOTED-STRING>通用格式的通知触发机制,一个脚本可完成以上三种状态的转换时的通知notify <STRING>|<QUOTED-STRING>当停止 VRRP 时触发的脚本notify_stop <STRING>|<QUOTED-STRING>
重启服务后就会发生省份变化,vip就会迁移
3.4双主架构
之前使用的单主,当主在工作时,备是不会工作的,因此需要配置双主架构,让两个主机工作,但工作的业务不同,当一个其中一个主机故障时,就会将当前的业务传给另外一个主机继续执行,也就是互为主备关系。
在ka1中配置一个为主的虚拟路由配置和一次备的虚拟路由配置
注意虚拟路由配置名,优先级,虚拟路由ID以及身份和虚拟网卡的IP和名字
ka2的配置与之对应,主对应备,备对应主
id为100的虚拟路由
id为200的虚拟路由
重启服务测试结果
ka1
ka2
3.5高可用负载均衡配置
在webserver1和webserver2上创建VIP环回
关闭两个服务机外部接收,仅仅只能对外部发送信息
若需要监测结果需要安装ipvsadm软件,仅仅配置不需要安装该软件
跟该keepawlive配置
测试轮寻
3.6keepalive+haproxy的高可用集群
下载haproxy软件(ka1和ka2都需要配置)
如果本主机没有172.25.254.100的vip依然需要启动程序,因此需要更改内核配置)(ka1和ka2都需要配置)
编辑haproxy文件
如果做了ipvs的高可用需要删除服务机上的vip,否则连接不上,
将之前的内核配置改回去
写入检测haproxy'存活脚本
vim /etc/keepalived/scripts/haproxy.sh
#!/bin/bash
/usr/bin/killall -0 haproxy[root@rhel7-ka1 ~]# vim /etc/keepalived/scripts/haproxy.sh
#!/bin/bash
/usr/bin/killall -0 haproxy
编辑keepalive配置文件
cat /etc/keepalived/keepalived.conf
vrrp_script check_haproxy {
script "/etc/keepalived/scripts/haproxy.sh"
interval 1
weight -30
fall 2
rise 2
timeout 2
}
vrrp_instance web {
state MASTER
interface ens33
virtual_router_id 50
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.254.100 dev ens33 label ens33:0
}
track_script {
check_haproxy
}
}