1、高可用集群keepalived:
1.1 集群类型
- LB:load balance 负载均衡
LVS/haproxy/nginx
- HA: high availability 高可用集群
数据库、redis
- Spof:single point of failure 解决单点故障
- HPC:high performance computing 高性能集群
Keepalved高可用:解决单点问题。防止LVS/haprixy 出现问题后导致整个服务失效。
1.2 SLA 服务等级协议
通过此协议判断运维服务的品质、水准
A = MTBF / ( MTBF+MTTR )
99.9%99.99%
1.3VRRP 协议(virtual router redundancy protocol )
虚拟路由冗余协议:解决静态网关单点问题,防止网络环境中单个路由器一单发生故障,从而导致业务无法提供的问题!!!!
物理层:路由、三层交换机
1.4 实现高可用
实现高可用方案:
- 主备 —— 一个使用,一个闲置。只有一个vip
- Active > HEARTBEAT > passive
- 双主 —— 各有一个vip,并负责不同的业务
- Active <> HEARTBEAT <> active
2、keepalived 部署
Keepalived 主备环境搭建:
环境要求:
- 各节点时间必须同步:ntp、chrony
- 必须关闭防火墙,否则主备之间无法接收到广播
- 关闭selinux
拓扑图:
主备服务器之间默认为抢占VIP模式
1、在主备服务器上安装keepalived
2、进行配置/etc/keepalived/keepalived.conf
主服务器配置:
Global_defs 全局配置:
Vrrp 配置:
备用服务器配置:
- 需要修改stats类型为backup备用服务器
- 优先级决定了VIP的归属,一般优先给主,所以优先级要小于主
- 同一个虚拟路由的route_id要一致
3、重启keepalived查看VIP
可以看到此时VIP是在主上的!!!!!当主出问题时,VIP会给到备keepalived
4、查看组播信息: VIP在哪就在哪广播
tcpdump -i eth0 -nn host 224.0.0.18
启动keepalived日志功能:
1、
-S log序号范围为 0-7
2、编辑 rsyslog.conf 添加日志,序号要对应。 并指定日志文件路劲
3、重启keepalived 和 rsyslog ,会自动生成日志文件
实现独立子配置文件:
当环境复杂时,/etc/keepalived/keepalived.conf 文件内容过多 ,不宜管理。这是就可以用到子配置文件将配置信息独立出去。
格式:
Include /path/file
1、主配置文件设置: 将之前的配置注释掉,写上子配置文件的路劲
*.conf 表示都读取以.conf结尾的文件
2、根据路径创建目录或文件,并写入子配置文件:
根据不同的子文件去设置不同的配置,更方便管理
3、重启服务查看
非抢占模式和延时抢占模式:nopreempt preempt_delay
非抢占模式:nopreempt
两个 stats 都要是 BACKUP 模式!!!!!!!
主备会根据优先级抢占VIP,当主服务器出问题时,VIP会给到备服务器。但是当主服务器恢复后,主服务器又会抢占回VIP。
非抢占模式就是VIP在哪就不会改变,不会根据优先级抢占VIP,除非出问题
延时抢占模式:preempt_delay
同样是抢占模式,但是当主服务器恢复后不会立即抢回VIP,而是延时一段时间(默认300s)在抢回
VIP的单播配置:
由于keepalived默认主机之间使用多播的方式相互通告消息,会造成网络拥塞。可以替换成单播,减少网络的流量。
单播模式不支持 vrrp_strict !!!!!!!!!!!!
单播发送方向是从 有VIP的服务器发送单播进行发送,没有VIP的不发送
1、单播模式不支持 vrrp_strict !!!!!!!!!!!!先注释strict
2、配置keepalived.conf
主备配置一样,注意IP!!!!!!!!!!
unicast_src_ip <IP> ——指定发送单播源,为自己
unicast_peer { ——指定接受单播的对方主机IP,可以为多个
172.25.254.20
………………..
}
3、抓包查看效果!!注意单播方向,是从VIP服务器发送给其他服务器
此时VIP在10上:tcpdump -i eth0 -nn src host 172.25.254.10 and dst 172.25.254.20
Keepalived的通知脚本配置:
当keepalived状态变化时,可以自动触发脚本的执行。脚本比如可以是发送邮件的通知。
脚本默认以keepalived_script身份执行脚本。需要给 + x 权限
可以指定使用root用户执行脚本——
通知脚本类型:
- 当前节点为主节点时触发的命令:
- 当前节点转为备份节点时触发的命令:
- 当前节点转变失败状态时触发的命令:
- 以上三种状态的通用触发机制
- 停止vrrp时触发的命令
使用方式: 配置keepalived.conf ,当状态变化时自动触发对应的脚本
创建路由通知脚本:
先配置qq邮箱的发送功能:密码通过qq邮箱设置得到
脚本示例: 需要给执行权限 x
重启后发送邮箱测试:
3.5 keepalived实现master/master 双主架构环境搭建:
配置双主架构:
相当于在keepalived.conf 中再添加一个虚拟VIP
也是要创建主备,不过主备位置与前一个相反,保证一个主服务器上有一个VIP
指定不同的VI_2名称
指定不同的router_id 例:200
指定不同的VIP 例:200
查看VIP,然后就可以使用不同的VIP负责不同的问题
也可配置三主架构:
3.6 实现IPVS的高可用性:LVS + heepalived
1、虚拟服务器virtual_server 的定义格式
2、虚拟服务器配置架构
3、虚拟服务器架构中的配置参数
括号必须分行写,写在同一行会报错!!!!!
3.1 real_server 格式:
权重、应用层检查都要写在real_server中
3.2 应用层检查匹配:HTTP_GET/SSL_GET
3.3 TCP监测:
IPVS 实战案例:
实现主备的 LVS-DR 模式:
1、在两个real server 主机上配置http/nginx 网页服务,并能正常访问
2、配置heepalived 主备服务器的环境搭建,VIP能正常切换!!!!
3、接下来配置virtual_server虚拟LVS服务器,主备一致
- virtualserver的地址应该与vrrp 中的virtual ipaddress一致
- 设置算法为wrr、集群的类型为DR-----------RS的回复直接发给client
- 注意注意虚拟服务器的结构。realserver应当配置在virtual_server中、而权重,HTTP_GET监测应当在real_server中!!!!!注意括号有无缺失和不能写在同一行!!!!
4、在keepalived 服务器中使用 ipvsadm -Ln 查看策略 (没有指令需要下载)
5、跟LVS配置一样,由于是DR模式,LVS虚拟服务器和real server都需要配置VIP,并且修改内核参数限制arp通告应答。
- 在lo上配置VIP (RS1、2都要配置)也可使用ip a a 指令零时配置
VIP 掩码为32位 , 172.25.254.100/32
- 修改arp通告
arp.conf 是arp的子配置文件,将要修改的参数xieru
Sysctl -p 从文件内刷新配置
Sysctl --system 查看更新结果
6、访问查看结果:
可以看到算法为轮询。
由于添加了heepalived 的高可用,当keepalived主服务器出现问题时,VIP会给到备份服务器,依然能够保持用户端的访问!!!!
关闭主服务器:
此时VIP给到备份服务器;
依然能正常访问