1、安装
官网 https://keepalived.org/
-
进入解压目录执行:./configure --prefix=/usr/local/keepalived --sysconf=/etc
-
make && make install
-
通过 whereis keepalived 查询keepalived 的安装位置
-
运行:/usr/local/keepalived/sbin/keepalived 启动
-
将keepalived 注册为系统服务,通过服务的方式进行启动和关闭
-
cp /keepalived-2.0.18/keepalived/etc/init.d/keepalived /etc/init.d/
-
cp /keepalived-2.0.18/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
-
systemctl deamon-reload
启动:systemctl start keepalived.service
停止:systemctl stop keepalived.service
重启:systemctl restart keepalived.service
-
-
配置文件地址:/etc/keepalived 配置文件详解:
! Configuration File for keepalived global_defs { #路由id,当前节点在集群中唯一的标识,全局唯一 router_id keep_118 } #当前计算机节点 vrrp_instance VI_1 { #当前节点为 主节点MASTER(备用节点为:BACKUP) state MASTER #当前节点绑定的网卡 interface ens33 #保证主备节点一致,集群中所有的节点配置一致即可 virtual_router_id 51 #优先级,谁的优先级高,主节点挂掉后谁就成为MASTER priority 100 #主备之间同步检查的时间间隔,默认1s advert_int 1 #认证授权的密码,防止非法节点的进入 authentication { auth_type PASS auth_pass 1111 } #虚拟出的ip virtual_ipaddress { 192.168.2.16 } } #....其他的虚拟主机配置在高可用架构中无用
启动后虚拟出的ip如下:
2、Nginx健康检测***
-
创建nginx检测脚本,并添加脚本的执行权限 chmod +x /etc/keepalived/check_nginx_alive_or_not.sh
vim /etc/keepalived/check_nginx_alive_or_not.sh
#!/bin/bash A=`ps -C nginx --no-header |wc -l` # 判断nginx是否宕机,如果宕机了,尝试重启 if [ $A -eq 0 ];then /usr/local/nginx/sbin/nginx # 等待一小会再次检查nginx,如果没有启动成功,则停止keepalived,使其启动备用机 sleep 3 if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then killall keepalived fi fi
ps -C nginx --no-header |wc -l
含义是:- ps -C nginx 查询 nginx 的进程信息 -C 是显示父进程
-
–no-header 不显示列的抬头信息
-
|wc -l 展示结果的行数
-
在 keepalived.conf 中 配置监听脚本
! Configuration File for keepalived global_defs { #路由id,当前节点在集群中唯一的标识,全局唯一 router_id keep_118 } #配置nginx 健康检查 脚本地址及定时任务信息 vrrp_script check_nginx_alive { script "/etc/keepalived/check_nginx_alive_or_not.sh" interval 2 # 每隔两秒运行上一行脚本 weight 10 # 如果脚本运行成功,则升级权重+10 # weight -10 # 如果脚本运行失败,则升级权重-10 } #当前计算机节点 vrrp_instance VI_1 { #当前节点为 主节点MASTER(备用节点为:BACKUP) state MASTER #当前节点绑定的网卡 interface ens33 #保证主备节点一致,集群中所有的节点配置一致即可 virtual_router_id 51 #优先级,谁的优先级高,主节点挂掉后谁就成为MASTER priority 100 #主备之间同步检查的时间间隔,默认1s advert_int 1 #认证授权的密码,防止非法节点的进入 authentication { auth_type PASS auth_pass 1111 } #虚拟出的ip virtual_ipaddress { 192.168.2.16 } #nginx 健康检查 启动配置的脚本,可以配置多个 track_script { check_nginx_alive # 追踪 nginx 脚本 } }
-
重启 systemctl restart keepalived
3、双机主备
2.1主节点配置
配置文件地址:/etc/keepalived 下,该目录通过安装时运行configure 进行配置:–sysconf=/etc
! Configuration File for keepalived
global_defs {
#路由id,当前节点在集群中唯一的标识,全局唯一
router_id keep_118
}
#当前计算机节点
vrrp_instance VI_1 {
#当前节点为 主节点MASTER(备用节点为:BACKUP)
state MASTER
#当前节点绑定的网卡
interface ens33
#保证主备节点一致,集群中所有的节点配置一致即可
virtual_router_id 51
#优先级,谁的优先级高,主节点挂掉后谁就成为MASTER
priority 100
#主备之间同步检查的时间间隔,默认1s
advert_int 1
#认证授权的密码,防止非法节点的进入
authentication {
auth_type PASS
auth_pass 1111
}
#虚拟出的ip
virtual_ipaddress {
192.168.2.16
}
}
#....其他的虚拟主机配置在高可用架构中无用
2.1备用节点配置
配置文件地址:/etc/keepalived 下,该目录通过安装时运行configure 进行配置:–sysconf=/etc
global_defs {
#路由id,当前节点在集群中唯一的标识,全局唯一
router_id keep_119
}
#当前计算机节点
vrrp_instance VI_1 {
#---- 备用节点注意的地方----> 当前节点为 备用节点为BACKUP
state BACKUP
#当前节点绑定的网卡
interface ens33
#保证主备节点一致,集群中所有的节点配置一致即可
virtual_router_id 51
#---- 备用节点注意的地方---->优先级,谁的优先级高,主节点挂掉后谁就成为MASTER
priority 80
#主备之间同步检查的时间间隔,默认1s
advert_int 1
#认证授权的密码,防止非法节点的进入
authentication {
auth_type PASS
auth_pass 1111
}
#---- 备用节点注意的地方---->虚拟出的ip,集群中必须一致,主节点是多少备用节点就是多少
virtual_ipaddress {
192.168.2.16
}
}
4、双主热备
2个节点直接互为主备用
4.1 节点一
! Configuration File for keepalived
global_defs {
#路由id,当前节点在集群中唯一的标识,全局唯一
router_id keep_118
}
#当前计算机节点
vrrp_instance VI_1 {
#当前节点为 主节点MASTER(备用节点为:BACKUP)
state MASTER
#当前节点绑定的网卡
interface ens33
#保证主备节点一致,集群中所有的节点配置一致即可
virtual_router_id 51
#优先级,谁的优先级高,主节点挂掉后谁就成为MASTER
priority 100
#主备之间同步检查的时间间隔,默认1s
advert_int 1
#认证授权的密码,防止非法节点的进入
authentication {
auth_type PASS
auth_pass 1111
}
#虚拟出的ip
virtual_ipaddress {
192.168.2.16
}
}
vrrp_instance VI_2 {
state BACKUP
interface ens33
virtual_router_id 52
priority 70
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.10
}
}
4.1 节点二
global_defs {
#路由id,当前节点在集群中唯一的标识,全局唯一
router_id keep_119
}
#当前计算机节点
vrrp_instance VI_1 {
#---- 备用节点注意的地方----> 当前节点为 备用节点为BACKUP
state BACKUP
#当前节点绑定的网卡
interface ens33
#保证主备节点一致,集群中所有的节点配置一致即可
virtual_router_id 51
#---- 备用节点注意的地方---->优先级,谁的优先级高,主节点挂掉后谁就成为MASTER
priority 80
#主备之间同步检查的时间间隔,默认1s
advert_int 1
#认证授权的密码,防止非法节点的进入
authentication {
auth_type PASS
auth_pass 1111
}
#---- 备用节点注意的地方---->虚拟出的ip,集群中必须一致,主节点是多少备用节点就是多少
virtual_ipaddress {
192.168.2.16
}
}
#当前计算机节点
vrrp_instance VI_2 {
state MASTER
interface ens33
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.10
}
}