一.高可用集群
1.1集群类型
- LB:Load Balance 负载均衡
LVS/HAProxy/nginx
(
http/upstream, stream/upstream
)
-
HA : High Availability 高可用集群
数据库、
Redis
-
SPoF: Single Point of Failure ,解决单点故障
HPC
:
High Performance Computing
高性能集群
1.2实现高可用
提升系统高用性的解决方案:降低
MTTR- Mean Time To Repair(
平均故障时间
)
解决方案:建立冗余机制
- active/passive 主/备
- active/active 双主
- active --> HEARTBEAT --> passive
- active <--> HEARTBEAT <--> active
1.3.VRRP:Virtual Router Redundancy Protocol
- 物理层:路由器、三层交换机
- 软件层:keepalived
1.3.1VRRP相关术语
- VMAC:Virutal MAC (00-00-5e-00-01-VRID)
- 虚拟路由器:Virtual Router
- 虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器
- VIP:Virtual IP
- 物理路由器
1.3.2VRRP相关技术
通告:心跳,优先级等;周期性
工作方式:抢占式,非抢占式
二.Keepalived部署
2.1keepalived简介
vrrp
协议的软件实现,原生设计目的为了高可用
ipvs
服务
功能:1.基于vrrp协议完成地址流动
2.为vip地址所在的节点生成ipvs规则
3.为ipvs集群的各RS做健康状态检测
4.基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持nginx,haproxy等服务
2.2.keepalived架构
2.3keepalived环境配置
主机名 | IP地址 |
KA1 | 172.25.254.10 |
KA2 | 172.25.254.20 |
RS1 | 172.25.254.110 |
RS2 | 172.25.254.120 |
2.4.keepalived相关文件
- 软件包名:keepalived
- 主程序文件:/usr/sbin/keepalived
- 主配置文件:/etc/keepalived/keepalived.conf
- 配置文件示例:/usr/share/doc/keepalived/
- Unit File:/lib/systemd/system/keepalived.service
- Unit File的环境配置文件:/etc/sysconfig/keepalived
2.5keepalived安装
2.6keepalived配置
2.6.1全局配置说明
2.6.2配置虚拟路由器
KA1:
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf
KA2:
[root@ka2 ~]# vim /etc/keepalived/keepalived.conf
测试:
2.6.3启用keepalived日志功能
[root@ka1 ~]# vim /etc/rsyslog.conf
2.6.4实现独立子配置文件
创建子配置目录
[root@ka1 ~]# mkdir /etc/keepalived/conf.d
写入子配置目录生效
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf
编写子配置文件
[root@ka1 ~]# vim /etc/keepalived/conf.d/router.conf
三.keepalived企业应用示例
3.1实现master/salve的keepalived单主架构
3.1.1MASTER配置
3.1.2BACKUP配置
3.2抢占模式和非抢占模式
3.2.1非抢占模式nopreempt
默认为抢占模式
preempt
,即当高优先级的主机恢复在线后,会抢占低先级的主机的
master
角色,
这样会使
vip
在
KA
主机中来回漂移,造成网络抖动,
建议设置为非抢占模式
nopreempt
,即高优先级主机恢复后,并不会抢占低优先级主机的
master
角色
非抢占模块下
,
如果原主机
down
机
, VIP
迁移至的新主机
,
后续也发生
down
时
,
仍会将
VIP
迁移回原主机
KA1配置:
![](https://i-blog.csdnimg.cn/direct/779dcf7196aa4fee889f83b7bcc8d426.png)
KA2配置:
![](https://i-blog.csdnimg.cn/direct/b99dd416639e433981032a03933de9b0.png)
3.22抢占延迟模式preempt_delay
抢占延迟模式,即优先级高的主机恢复后,不会立即抢回
VIP
,而是延迟一段时间(默认
300s
)再抢回 VIP
preempt_delay # # 指定抢占延迟时间为 #s ,默认延迟 300s
KA1配置:
![](https://i-blog.csdnimg.cn/direct/e89de1f7ccc24a2090c1f296d88cd6ef.png)
KA2配置:
![](https://i-blog.csdnimg.cn/direct/2fa2c1706c9a455c8b31c45d2c8353ff.png)
3.3VIP单播配置
默认
keepalived
主机之间利用多播相互通告消息,会造成网络拥塞,可以替换成单播,减少网络流量
# 启用 vrrp_strict 时,不能启用单播 , 否则服务无法启动 , 并在 messages 文件中记录下面信息
KA1配置:
![](https://i-blog.csdnimg.cn/direct/bce0a52397e94056807266f1f1bebdb7.png)
KA2配置:
![](https://i-blog.csdnimg.cn/direct/3f3e8dbd8a044c46ba26fcd9ef670ce0.png)
测试:
![](https://i-blog.csdnimg.cn/direct/b93b4baccfd14890adf5f97fbbe00459.png)
3.4keepalived通知脚本配置
当
keepalived
的状态变化时,可以自动触发脚本的执行,比如:发邮件通知用户
默认以用户
keepalived_script
身份执行脚本
如果此用户不存在,以
root
执行脚本可以用下面指令指定脚本执行用户的身份
3.4.1 qq邮箱配置
[root@ka1 ~]# vim /etc/mail.rc
![](https://i-blog.csdnimg.cn/direct/9b9e655f1cc34742bb24065b59378609.png)
发送测试邮件
[root@ka1 ~]# echo test message | mail -s test 3049663420@qq.com
![](https://i-blog.csdnimg.cn/direct/aebfe392290c45259a51e77f20ca3397.png)
3.4.2编写邮件脚本:
[root@ka1 ~]# vim /etc/keepalived/mail.sh
![](https://i-blog.csdnimg.cn/direct/7813d005ee9d4d159cbb23435143d748.png)
修改keepalived主配置文件
![](https://i-blog.csdnimg.cn/direct/113fc69440884e47aaa13a0ba339b7f4.png)
进行测试模拟KA1变为backup:
![](https://i-blog.csdnimg.cn/direct/e6594ef439964082ba25815c4d9d98d7.png)
3.5实现双主架构
KA1配置:
KA2配置:
![](https://i-blog.csdnimg.cn/direct/17ed8c43935c46cfb23412851598203c.png)
3.6实现ipvs的高可用性
KA1配置:
KA2配置:
查看ipvs策略:
测试:
3.7 实现haproxy高可用
下载并编写haproxy文件
![](https://i-blog.csdnimg.cn/direct/05bf7c4da7424458bee4baf702ed34c0.png)
在KA1和KA2中启用内核参数
![](https://i-blog.csdnimg.cn/direct/f6a9875fdd7344c5ac762fd150941260.png)
编写测试脚本
![](https://i-blog.csdnimg.cn/direct/46d2a7cfa05a4ac8b3b5e1b93f706a2c.png)
编写keepalived文件
![](https://i-blog.csdnimg.cn/direct/d0187d67c10f48cc8a9ec9be92da0a77.png)