目录
haproxy结合keepalived,实现高可用负载均衡集群
环境配置
四台红帽7的虚拟机
KA1 ip 172.25.254.10
KA2 ip 172.25.254.20
server1 ip 172.25.254.110
server2 ip 172.25.254.120
安装keepalived
10和20安装
yum install keepalived -y
主配置文件
介绍
KA1
vim /etc/keepalived/keepalived.conf
全局global
vip
KA2
先下载keepalived服务
20复制粘贴,这条指令是直接复制10的文件内容
scp /etc/keepalived/keepalived.conf root@172.25.254.20:/etc/keepalived/keepalived.conf
进去稍作修改20
重启
systemctl restart keepalived
在10检测组播抓包命令
tcpdump -i eth0 -nn host 224.0.0.18
10的优先级高波10的
20的还没播
让10继续抓包
我们用110远程登录到10上停掉服务
ssh -l root 172.25.254.10
systemctl stop keepalived
然后回到抓包机10,我们看到20开始抓包
然后去20看一下vip,可以看到vip到20啦
我们在110启动10的服务
systemctl restart keepalived
回到10看抓包,又是10的包,证明vip被权限高的抢回来了
让vip怎么能够通信
在10和20,这两个都写上或者都注释掉,都可以ping通
两种方法:两个都写上或者都注释掉,都可以ping通
测试
日志独立
vim /etc/sysconfig/keepalived
指定为0-6都可以
重启
systemctl restart keepalived
进入
vim /etc/rsyslog.conf
重启
systemctl restart rsyslog
systemctl restart keepalived
看一眼是不是都是keepalived
cat /var/log/keepalived.log
独立配置子文件
进入主配置文件
将主配置文件的vrr模块注释掉
加入这条
创建
mkdir -p /etc/keepalived/conf.d
vim /etc/keepalived/conf.d/172.25.254.100.conf
可以将配置卸载子配置文件里,记得吧主配置文件里的配置注释掉
重启
systemctl restart keepalived
就有啦
ifconfig查看vip是否还在
就OK啦
抢占vip和非抢占
抢占的话就会导致网络波动
在10和20都是backup
都加上非抢占
nopreempt
KA1
重启
vim /etc/keepalived/keepalived.conf
KA2
重启
vim /etc/keepalived/keepalived.conf
测试
在10抓包
tcpdump -i eth0 -nn host 224.0.0.18
用110远程连接10down掉
vip在20啦
再把10启动,走的还是20
vip还在20,没有抢占
成功
延迟抢占preempt_delay
5s后抢占不合理,为啦看效果一般5min到10min
10和20都加这一条
KA1 down掉
systemctl stop keepalived.service
还没到5svip没来
vip5s到20,回来了
再重启
10 5s后进行抢占vip回来
做完后删掉,为啦更好的后面实验,用抢占模式
keepalived单播
组播换单播
进入配置文件
vim /etc/keepalived/keepalived.conf
vrrp_strict和单播冲突要将这个注释掉
KA1
重启
systemctl restart keepalived
KA2
测试在10
tcpdump -i eth0 -nn src host 172.25.254.10 and dst 172.25.254.20
测试在KA2,因为没有vip所以没有
在110吧10down掉
systemctl stop keepalived.service
再在20测试
tcpdump -i eth0 -nn src host 172.25.254.20 and dst 172.25.254.10
就可以看到啦
110启动KA1
systemctl restart keepalived.service
keepalived双主架构
在配置文件里配置第二个 VI_2 vip200 eth0:2
10里
vim /etc/keepalived/keepalived.conf
20里
vim /etc/keepalived/keepalived.conf
当20down掉
systemctl stop keepalived.service
20的vip200会跑到10那里
20开启vip会再回来
systemctl start keepalived.service
keepalived和lvs高可用检测
实现IPVS的高可用
实现单主的 LVS-DR 模式
先给两台server主机在环回接口配上vip地址
server1 172.25.254.110/24
ip a a 172.25.254.100/32 dev lo
设置环回接口不对外通信,我们这此直接在配置文件中写
vim /etc/sysctl.d/arp.conf
配置完之后刷新加载内核
sysctl --system
server2 172.25.254.120/24
ip a a 172.25.254.100/32 dev lo
设置环回接口不对外通信,我们这此直接在配置文件中写
vim /etc/sysctl.d/arp.conf
配置完之后刷新加载内核
sysctl --system
虚拟服务器配置KA1KA2
KA1为啦观察下载
yum install ipvsadm -y
进入配置文件进行配置
vim /etc/keepalived/keepalived.conf
这是ipvsadm检测的配置文件,直接通过配置文件进行检测
检测一个110一个120
20也要配置
监听110的
监听120的
清理掉策略
ipvsadm -C
清理完他会自己再加上,配置文件里写的
测试
将sever1关掉之后
systemctl stop httpd
检测不到啦他就自动从策略中删除啦KA1里
110上线啦
systemctl start httpd
策略自动加上啦
haproxy结合keepalived,实现高可用负载均衡集群
将之前的实验lvs注释掉all
高可用性 VRRP Script
怎么去检测haproxy的状态
如果haproxy坏啦,我通过降低优先级,来使vip漂移到20
脚本
vim /etc/keepalived/test.sh
如果文件存在输出1如果文件不存在输出1
给脚本执行权限
chmod +x /etc/keepalived/test.sh
进入配置文件
systemctl start keepalived.service
启动脚本看输出是0还是1
sh /etc/keepalived/test.sh
echo $?
因为还没有创建文件所以是0
创建文件
touch /mnt/qiqi
echo $?
输出为1
ifconfig查看我们的vip偏移没
10和20
在KA1和KA2上去装
yum install haproxy -y
两台主机都弄
如果有100在本机不存在
我们的haproxy起不来
所以要编辑一个文件
即使你本地有ip也可以正常启动
vim /etc/sysctl.conf
sysctl -p
如果有100在本机不存在
我们的haproxy起不来
所以要编辑一个文件
即使你本地有ip也可以正常启动
配置haproxy
vim /etc/haproxy/haproxy.cfg
启动
systemctl enable --now haproxy.service
20里
启动
systemctl enable --now haproxy.service
看一下启动没
netstat -antlupe | grep haproxy
110 120
删除环回地址
ip a d 172.25.254.100/32 dev lo
重启
systemctl restart keepalived.service
systemctl restart haproxy.service
配置完
如果KA1 haproxy挂啦vip让他漂移到100
所以去辨析一个脚本,让他去读脚本的状态,来进行漂移还是不漂移
vim /etc/keepalived/test.sh
写脚本
10 20
20没有100为啥还能启动
就是因为这个
测试
在10
while true; do curl 172.25.254.100;sleep 2; done
让10挂一下
远程连接10
让他的haproxy挂掉
ssh -l root 172.25.254.10
systemctl stop haproxy
在10内边并没有断掉全程都在监控输出
我们在20里看vip100来啦
ifconfig
在启动10haproxy
systemctl restart haproxy
还是没有断,证明偏移成功