目录
3.1 实现master/slave的 Keepalived 单主架构
3.5 实现 master/master 的 Keepalived 双主架构
高可用:让整个集群在生产环节在线率高
高性能:将多台主机组到一起
一.高可用集群
1.1 集群类型
1.2 系统可用性
SLA:服务等级协议
A=MTBF/(MTBF+MTTR)
1.3 系统故障
硬件故障:设计缺陷、非人为不可抗因素。
软件故障:设计缺陷bug。
1.4 实现高可用
怎样实现高可用?
active/passive:主/备
active/active:双主
active -> HEARTBEAT -> passive
avtive -> HEARTBEAT -> active
1.5.VRRP虚拟路由冗余协议
判断这两台路由器哪个坏了:VRRP
自动把IP迁移到好的路由器上。
1.5.1 VRRP 相关术语
VRID:唯一标识虚拟路由器
VIP:虚拟IP
VMAC:虚拟IP的mac地址
物理路由器: mater:主设备
backup: 备用设备
priority: 优先级
1.5.2 VRRP 相关技术
通告:心跳、优先级等
工作方式:抢占
安全认证:
无认证
MDS
工作模式:
主/备
主/主
二.Keepalived 部署
2.1 keepalived 简介
vrrp协议的软件实现,设计目的是为了高可用ipvs服务
功能:1.基于vrrp协议完成地址流动
2.为ipvs集群的各rs做健康状态检测
2.2 Keepalived 架构
核心组件:
vrrp stack
checkers :监测real server
system call :实现vrrp协议状态转换时调用脚本的功能
SMTP:邮件组件
IPVS wrapper:生成ipvs规则
Netlink Reflector: 网络接口
WatchDog: 监控进程
控制组件:
提供解析器,完成keepalived配置
IO复用器
内存管理组件
2.3 Keepalived 环境准备
用7.9镜像准备四台虚机
主机 | realserver1 | realserver2 | KA1 | KA2 |
---|---|---|---|---|
IP | 192.168.0.110 | 192.168.0.120 | 192.168.0.10 | 192.168.0.20 |
网卡 | nat | nat | nat | nat |
vip | 192.168.0.100 | 192.168.0.100 |
在KA1和KA2上下载keepalived:
设置开机自启:
关闭防火墙:
环境部署完成。
2.4 Keepalived 相关文件
配置VIP:
打开主配置文件:
全局板块:
修改:
VIP板块:
修改:
重启服务并看见:
KA1同KA2:
重启服务:
会发现没有192.168.0.100,因为KA2的优先级低,VIP会在KA1上显示。
当KA1服务done掉,KA2上就会有显示:
在realserver1上通过抓包测试:
会发现是KA1在向224.0.0.18发送,那是因为KA1优先级比KA2高。
此时done掉KA1的服务:
会发现是KA2在向224.0.0.18发送:
2.5 KeepAlived 配置说明
2.5.1怎样ping通192.168.0.100:
若想ping通:
KA1和KA2同时:
此时:
因为:
又或者KA1和KA2:
也行。
2.6启用keepalived日志功能
先编写日志级别:
0-7范围内:
先重启keepalived再重启rsyslog:
指定采集方法:
2.7 实现独立子配置文件
将vip板块注释掉并添加:
注意:双引号之间没空格:
此时服务起不来:
所以在子配置文件里:
重启服务没问题:
VIP也没问题:
三.Keepalived 企业应用示例
3.1 实现master/slave的 Keepalived 单主架构
3.1.1 MASTER配置
3.2 抢占模式和非抢占模式
3.2.1 非抢占模式 nopreempt
KA1和KA2加参数:
可以看见KA2没VIP:
当KA1done:
KA1:
此时KA2有VIP:
此时就算KA1重启服务,VIP也不会再回来了,会还在KA2上:
3.2.2 抢占延迟模式 preempt_delay
KA1和KA2都加上抢占延迟参数:
同时重启服务:
此时:VIP在KA1上
当KA1done:
此时KA2接管:
打开服务数立即看VIP,发现没回来:
但是数五秒后:
做完后把抢占延迟删掉:
3.3 VIP单播配置
组播会导致网络阻塞,但ka1和ka2互相通告就行,形成单播,这样使得网络更流畅。
KA1:
KA2:
两个都重启服务:
抓包查看单播效果:
此时抢占一下:
所以,是从有VIP的主机到达无VIP的主机。
优先级高的先抢占。
3.4 Keepalived 通知脚本配置
3.4.1 创建通知脚本
KA2同KA1:
给权限:
编辑主配置文件:
# vim /etc/keepalived/keepalived.conf
重启KA2后:
当KA1done:
3.4.2 邮件配置
# yum install mailx -y
KA2同KA1:
#yum install mailx -y
3.5 实现 master/master 的 Keepalived 双主架构
互为主,需要两个VIP为不同的业务。
删掉:
复制成两个虚拟路由:
1:
2:
KA2同KA1:
1:
2:
重启服务:
可查看VIP。
当出了问题:
在KA1上有VIP:
所有主机上一主两备。
3.6 实现IPVS的高可用性
3.6.1 虚拟服务器配置
3.6.2应用层监测
3.6.3TCP监测
3.6.4 实战案例LVS+Keepalived
首先:
以上写的就包含存在的路径:
看看生效没:
装软件:
1:
2:
以上代替的命令:
写两个:
1:
2:
再重启:
此时停止服务:
查看:
再重启:
就算关闭服务:
这既提供负载均衡又提供高可用。
3.7 实现其它应用的高可用性 VRRP Script
首先定义脚本:
调用脚本:
定义VRRP script:
调用VRRP script:
3.7.2 实战案例:利用脚本实现主从角色切换
给权限:
到主配置文件去定义:
重启服务:
查看VIP:
没有,因为是单播。
抓包看看:
脚本的存在会影响,删掉 /mnt/lee再重启服务就有VIP了:
当脚本存在时返回值为非零:
如果为零weight就不生效。
100-30=70<80,所以VIP就到KA2上了。
3.7.3 实战案例:实现HAProxy高可用
下载haproxy:
生效一下:
以上KA1和KA2都要做。
KA2:
realserver1和realserver2:
注释掉:
重启服务:
成功。
写脚本:
在KA1、KA2的keepalived主配置文件:
还能启动是因为写了一个参数:
就算服务关闭,也不会停止访问:
访问没问题:
VIP回来了:
此时达到了haproxy高可用。