运维入门到入土之Keepalive超详细解析,只要代码跑的好,以后的路就不用跑

前面写到的LVS以及haproxy属于负载均衡类型的集群,如果大家有不理解的可以参考我之前的写的文章

一 高可用集群

1.1高可用的定义和意义

在负载均衡中调度器如果瘫痪会导致整个集群一起瘫痪,调度器的作用无疑是很重要的,为了保证集群稳定性,降低调度器挂掉导致企业经济损失,因此有了高可用 。

高可用集群简单来说就是备份一个调度器,当正在运行的调度器挂掉后,会代替住调度器继续运行,保证了集群的稳定。

1.2高可用的可用性

SLA:Service-Level Agreement 服务等级协议(提供服务的企业与客户之间就服务的品质、水准、性能
等方面所达成的双方共同认可的协议或契约)
A = MTBF / (MTBF+MTTR)
MTBF是指正常工作时间,MTTR是指故障时间
A值越高,高可用的性能越好。

1.3 系统故障

硬件故障:设计缺陷、 wear out (损耗)、非人为不可抗拒因素
软件故障:设计缺陷 bug

1.4 实现高可用

提升系统高用性的解决方案:降低 MTTR- Mean Time To Repair( 平均故障时间 )
解决方案:建立冗余机制

1.5.VRRPVirtual Router Redundancy Protocol

虚拟路由冗余协议 , 解决静态网关单点风险
物理层 : 路由器、三层交换机
软件层 :keepalived

当server访问企业内网时,为了保证稳定性,采用高可用保持稳定性,路由器和调度器只有VIP可以直接上网,当master主机正常运行时,VIP会一直存在于master主机,当master主机故障后,VIP会传递至backup主机也就是备用主机。

关于如何确认master主机任然存活,就需要用到VRRP,master主机会在网络中不断发送信息给组播,组播来判断哪个主机任然存活。

1.5.1 VRRP 相关术语

虚拟路由器: Virtual Router
虚拟路由器标识: VRID(0-255) ,唯一标识虚拟路由器
VIP Virtual IP
VMAC 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
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值