Keepalived高可用配置
2024-08-28 12:31:27
Keepalived简介
Keepalived基于VRRP协议在服务器之间建立了主备关系,通常称之为高可用对。VRRP中文叫虚拟路由冗余协议,目的是解决静态路由的单点故障问题。高可用对之间通过IP多播的方式进行通信,通过竞争机制确定主备关系,优先级高的为主服务器,主服务优先获得资源提供服务,备服务器处于等待状态,主节点不断向备节点发送VRRP数据包,当主服务器宕机时,备节点接收不到数据包,于是接管所有资源(VIP),对外提供服务。VRRP实现了主备关系建立和高可用对之间的故障切换,VIP实现了IP地址的热迁移,无需重启网卡,从而使得切换更加迅速。
安装Keepalived
yum install keepalived -y
rpm -qa keepalived
单实例VIP自动漂移
===lb01=== vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs {
notification_email {
asdftttt@163.com
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id lb01
} vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 55
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.12/24 dev eth0 label eth0:1
}
} /etc/init.d/keepalived start
ip addr | grep 10.0.0.12 ===lb02=== vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs {
notification_email {
asdftttt@163.com
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id lb02
} vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 55
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.12/24 dev eth0 label eth0:1
}
} /etc/init.d/keepalived start
ip addr | grep 10.0.0.12
备份服务器创建裂脑检测脚本
裂脑指的是主备服务器上同时存在相同的VIP,原因通常是线路或防火墙导致的无法通信,备份服务器收不到主服务器发送的VRRP数据包即心跳信息,于是接管了服务。 vim /server/scripts/check_split_brain.sh #!/bin/bash
#原理:Ping主节点,如果Master没有宕机而Slave出现了VIP,发送裂脑警告。
#收到警告后第一时间查看Master中Keepalived服务是否正常。
#有可能只是keepalived服务宕掉了
lb01_vip=10.0.0.12
lb01_ip=172.16.1.5
while true
do
ping -c 2 -W 3 $lb01_ip &> /dev/null
if [ $? -eq 0 -a `ip addr | grep "$lb01_vip" | wc -l` -eq 1 ];then
echo "ha is split brain.warning"
else echo "ha is ok"
fi
sleep 5
done 这个脚本的局限在于当线路问题导致裂脑时,该脚本无法判断,最好在监控服务器上也进行监控
配置Keepalived和服务相关联
vim /server/scripts/chk_nginx_proxy.sh #!/bin/bash
#keepalived通常只针对服务器,不针对服务,该脚本解决此问题
#当nginx proxy停止,keepalived也停止
if [ `netstat -nutlp | grep nginx | wc -l` -ne 1 ];then
/etc/init.d/keepalived stop
fi chmod u+x /server/scripts/chk_nginx_proxy.sh vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs {
notification_email {
asdftttt@163.com
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id lb01
} vrrp_script chk_nginx_proxy {
script "/server/scripts/chk_nginx_proxy.sh"
interval 2
weight 2
} vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 55
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.12/24 dev eth0 label eth0:1
}
track_script {
chk_nginx_proxy
}
} /etc/init.d/keepalived reload
/application/nginx/sbin/nginx -s stop
/etc/init.d/keepalived status
配置多播地址
同一网段有多个高可用对,需要配置不同的多播地址 vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs {
notification_email {
asdftttt@163.com
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id lb01
vrrp_mcast_group4 224.0.0.19
}
配置指定文件记录日志
vim /etc/sysconfig/keepalived KEEPALIVED_OPTIONS="-D -d -S 0"
#-D 详细日志 -d 导出备份 -S 0 指定syslog设备为local0 vim /etc/rsyslog.conf 42 *.info;mail.none;authpriv.none;cron.none;local0.none /var/log/messages
81 local0.* /var/log/keepalived.log /etc/init.d/rsyslog restart
最新文章
- IIS同时实现网站部分使用https协议访问另一部分http访问
- BFS
- Android图书应用-西游记
- (三)SQL入门 数据库规格化简介
- 前端相关js
- 一步一步写miscdevice的驱动模块
- ASP.NET获取IP的6种方法
- 实例对比剖析c#引用参数的用法
- Nginx+Center OS 7.2 开机启动设置(转载)
- QLGame 2d Engine 搭建2d游戏原理
- IIS URLReWrite URL 重写模块 下载地址
- Net分布式系统之六:微服务之API网关
- 阿里云服务器+ftp文件操作+基于Centos7的vsftpd配置
- angular7 DOM操作 及 @ViewChild
- 让 Odoo POS 支持廉价小票打印机
- VMware14 安装CentOS7及其配置;CentOS7配置网桥,做远程连接;
- Navicat---使用SSH远程连接到MySql,报错80070007: SSH Tunnel: Server does not support diffie-hellman-group1-sha1 for keyexchange
- kafka消费者如何才能从头开始消费某个topic的全量数据
- hive数据导入导出和常用操作
- python flask的request模块以及在flask编程中遇到的坑
热门文章
- [洛谷P4092][HEOI2016/TJOI2016]树
- [CQOI2014]数三角形 组合数 + 容斥 + gcd
- 【图论】tarjan的离线LCA算法
- mybatis逆向工程生成mapper报错
- c#知识梳理
- HDU1522 稳定婚姻匹配 模板
- 关于深度学习(deep learning)的常见疑问 --- 谷歌大脑科学家 Caffe缔造者 贾扬清
- CMDB资产管理系统开发【day27】:cmdb API安全认证
- angularJs $resource自定义方法(待完善)
- BZOJ2733:使用并查集维护连通性之后用线段树维护+线段树合并(动态开点)