目录
1.3.3实现master/slave的 Keepalived 单主架构
一.高可用集群
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 高性能集群
Keepalived 环境准备
各节点时间必须同步:ntp, chrony
关闭防火墙及SELinux
4台rh7
vip 100
2台KA 110 120
两台 webserver 10 20
KA1 | 172.25.250.110 |
KA2 | 172.25.250.120 |
webserver1 | 172.25.250.10 |
webserver2 | 172.25.250.20 |
1.2Keepalived 相关文件
软件包名:keepalived
主程序文件:/usr/sbin/keepalived
主配置文件:/etc/keepalived/keepalived.conf
配置文件示例:/usr/share/doc/keepalived/
Unit File:/lib/systemd/system/keepalived.service
Unit File的环境配置文件:/etc/sysconfig/keepalived
RHEL7中可能会遇到以下bug
systemctl restart keepalived #新配置可能无法生效
systemctl stop keepalived;systemctl start keepalived #无法停止进程,需要 kill 停 止
1.3实验步骤
1.3.1HTTP配置
两个RS上下载httpd
yum install httpd
启动httpd
写入网页文件
rs1和rs2都要写
在KA上curl测试访问
1.3.2安装KA
KA1,KA2都要安装
1.3.3实现master/slave的 Keepalived 单主架构
配置文件
vim /etc/keepalived/keepalived.conf
KA1--MASTER
KA2--SLAVE
重启服务
进行抓包
tcpdump -i eth0 -nn host 224.0.0.18
一开始一直是10
因为KA2优先级低抢不过KA1
把10关闭就会变成20
停止10的ka服务
1.3.4抢占模式和非抢占模式
默认为抢占模式preempt,即当高优先级的主机恢复在线后,会抢占低先级的主机的master角色,
这样会使vip在KA主机中来回漂移,造成网络抖动
建议设置为非抢占模式 nopreempt ,即高优先级主机恢复后,并不会抢占低优先级主机的master角色
非抢占模块下,如果原主机down机, VIP迁移至的新主机, 后续也发生down时,仍会将VIP迁移回原主机
注意:要关闭 VIP抢占,必须将各 keepalived 服务器state配置为BACKUP
即将所有ka服务器的虚拟路由器状态都改成BACKUP
以及添加nopreempt
非抢占模式
KA1
KA2
现在当KA1关闭后,vip移动给KA2后,KA1再重启也不会抢回vip
抢占模式
即有一个是master并且优先级最高
设置为抢占模式,当10重启就会直接抢夺vip
KA1
KA2
抢占延迟模式 preempt_delay
抢占延迟模式,即优先级高的主机恢复后,不会立即抢回VIP,而是延迟一段时间(默认300s)再抢回 VIP
preempt_delay
注意:需要各keepalived服务器state为BACKUP,并且不要启用 vrrp_strict
此处设置5s是为了方便查看结果
KA1和KA2都要设置这一项
1.3.5开启KA的日志功能
编辑日志配置文件并重启
1.3.6独立子配置文件
格式:
include /path/file
注释掉虚拟路由器
创建配置文件
写入注释掉的配置内容
然后重启服务
发现vip仍然存在
1.3.7 VIP单播配置
默认keepalived主机之间利用多播相互通告消息,会造成网络拥塞,可以替换成单播,减少网络流量
注意:启用 vrrp_strict 时,不能启用单播
格式
unicast_src_ip <IPADDR> #指定发送单播的源IP
unicast_peer {
<IPADDR> #指定接收单播的对方目标主机IP
......
}
KA1
KA2
抓包查看
tcpdump -i eth0 -nn src host 172.25.250.20 and dst 172.25.250.10
要测20的要把10的keealive服务关掉
tcpdump -i eth0 -nn src host 172.25.250.20 and dst 172.25.250.10
1.3.8邮件服务器
keepalived配置文件 vim /etc/keepalived/keepalived.conf
KA1和KA2上面这global_def部分是一样的,注意都要写
我们利用qq邮箱来实现
进入qq优先点击右上角的账号与安全
在安全设置里面
找到下面的授权码
然后编写配置文件
/etc/mail.rc
编写邮件
看自己的邮箱能否收到邮件
然后KA2主机也这样配置
编写脚本
KA1配置
重启服务
两边都要写脚本
然后给脚本权限
chmod +x mail.sh
1.3.9keepalived双主架构
master/slave的单主架构,同一时间只有一个Keepalived对外提供服务,此主机繁忙,而另一台主机却 很空闲,利用率低下,可以使用master/master的双主架构,解决此问题。
master/master 的双主架构: 即将两个或以上VIP分别运行在不同的keepalived服务器,以实现服务器并行提供web访问的目的,提高 服务器资源利用率
两个vip对接一个服务
10上
额外设置一个vi_2虚拟路由
20上
20本来是backup 添加的虚拟路由v2就要设置成master
重启服务
记得优先级要进行改变,master的优先级都一样,backup的优先级也要一样
1.3.10实现IPVS的高可用性
110和120加
这个是vip的ip
然后禁止arp的响应,只进不出
然后120scp命令把文件复制过来再重启服务
KA1
ka2也这样做
、
KA1
vim /etc/keepalived/keepalived.conf
KA2
重启服务
查看是否成功写入策略
在20上也能查看到策略只是没有生效,因为没有vip
另外开一台虚拟机进行测试
模拟故障,关闭110后
1.3.11Haproxy高可用
10 20下载haproxy
启用内核参数,两台都要做
这个作用是让本地没有写入的ip也能启用
编写haproxy配置文件
重启haproxy服务
110 120要删掉之前添加的环回ip以及打开arp响应
要注释掉keep的virt-server,也就是刚才ipvs中写的
编写脚本,杀死haproxy服务
ka1中
vim /etc/keepalived/keepalived.conf
ka2
在测试机执行死循环
然后关闭一台KA的keepalived服务和haproxy服务,发现死循环还在执行