keeplived简介
Keepalived是用纯ANSI/ISO C编写的。该软件围绕一个中央I/O多路复用器进行连接,以提供实时网络设计。
Keepalived进程被分为3个不同进程
- A.一个极简的父进程,负责fork和监控子进程,父进程监控框架称为watchdog
- B.两个子进程,一个负责VRRP框架,另一个负责健康检查
故障切换框架
Keepalived实现了用于导向器故障切换的VRRP协议。在实现的VRRP堆栈中,VRRP数据包调度程序负责为每个VRRP实例多路分发特定的I/O。
VRRP实例同步:我们可以指定2个VRRP实例之间的状态监控,也称为VRRP同步组。它保证2个VRRP实例保持相同状态,同步实例间相互监视。
安装部署
安装依赖
下载解压安装包并编译
tar xz keepalived-1.2.15.tar.gz
./configure
Make && make install
安装到指定目录
通过依赖包安装
配 置
例如两台互为主主的nginx或mysql同时可提供服务,一台服务宕掉后另一台可接管
示例:主节点
示例:备节点
参数详解
关键字 | 定义 | 类型 |
vrrp_instance | 标识VRRP实例定义块 | Block |
state | 在标准使用中指定实例状态 | |
interface | 指定实例运行所要用到的网络接口 | string |
mcast_src_ip | 指定VRRP通告的IP头的源地址 | |
lvs_sync_daemon_inteface | 指定LVS sync_daemon运行所要用到的网络接口 | string |
virtual_router_id | 指定实例所属的VRRP路由器ID | numerical |
priority | 指定实例在VRRP路由器中的优先级 | numerical |
advert_int | 以秒为单位指定通告的间隔时间(设置为1) | numerical |
smtp_alert | 激活MASTER状态转换的SMTP通知 | |
authentication | 标识VRRP认证定义块 | Block |
auth_type | 指定要使用哪种身份认证(PASS|AH) | |
auth_pass | 指定要使用的密码字符串 | string |
virtual_ipaddress | 标识VRRP VIP定义块 | Block |
virtual_ipaddress_excluded | 标识VRRP VIP排除定义块 | Block |
notify_master | 指定在切换到master时要执行的脚本 | path |
notify_backup | 指定在切换到backup时要执行的脚本 | path |
notify_fault | 指定在切换到故障状态时要执行的脚本 | path |
vrrp_sync_group | 标识VRRP同步组定义块 | Block |
常见问题
原因:备机上keepalived监控脚本没有执行权限。
解决:chmod +x ~/check_nginx.sh
Keeplived主备vip地址无法切换
原因:keeplived配置的优先级相同。
解决:检查keepalived.cof配置文件的priority参数,主从节点优先级设置为不同。