转载:https://www.cnblogs.com/cxbhakim/p/9068833.html
介绍:
-
Keepalived 一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用功能,用来防止单点故障。
- keepalived 是以 VRRP 协议为实现基础,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
keepalived主要有三个模块,分别是core、check和vrrp。
- core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。
- check负责健康检查,包括常见的各种检查方式。
- vrrp模块是来实现VRRP协议的。
使用:
- 安装
yum -y install keepalived
- 配置文件详解
keepalived.conf
global_defs { # 全局配置
notification_email { # 定义报警邮件地址
acassen@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc # 定义发送邮件的地址
smtp_server 192.168.200.1 # 邮箱服务器
smtp_connect_timeout 30 # 定义超时时间
router_id LVS_DEVEL # 定义路由器唯一标识
}
## keepalived 会定时执行脚本并对脚本执行的结果进行分析,动态调整 vrrp_instance 的优先级。
# 如果脚本执行结果为 0,并且 weight 配置的值大于 0,则优先级相应的增加。
# 如果脚本执行结果非 0,并且 weight配置的值小于 0,则优先级相应的减少。
# 其他情况,维持原本配置的优先级,即配置文件中 priority 对应的值。
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径
interval 2 ## 检测时间间隔
weight -20 ## 如果条件成立,权重-20
}
#虚拟 IP 配置 vrrp
vrrp_instance VI_1 { # 定义实例
state MASTER # 状态参数 master/backup 仅表示说明,主节点为 MASTER, 对应的备份节点为 BACKUP
interface eth0 # 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同
virtual_router_id 51 # 虚拟路由的 ID 号, 两个节点设置必须一样, 可选 IP 最后一段使用, 相同的 VRID 为一个组,他将决定多播的 MAC 地址
mcast_src_ip 192.168.10.50 ## 本机 IP 地址
priority 100 # 优先级决定是主还是备 --> 越大越优先,值范围 0-254,MASTER要比BACKUP高
nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
advert_int 1 # 主备心跳通讯时间间隔,组播信息发送间隔,两个节点设置必须一样, 默认 1s
authentication { # 认证授权,设置验证信息,两个节点必须一致
auth_type PASS #验证authentication。包含验证类型和验证密码。类型主要有PASS、AH 两种,通常使用的类型为PASS,
auth_pass 1111 #据说AH 使用时有问题。验证密码为明文,同一vrrp 实例MASTER 与BACKUP 使用相同的密码才能正常通信。
}
track_script {
chk_nginx ## 执行 Nginx 监控的服务
}
virtual_ipaddress { # vip,设备之间使用的虚拟ip地址,可以定义多个
192.168.200.16
}
}
- master配置文件
! Configuration File for keepalived
global_defs {
router_id nginx-01
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.16.99
}
}
- backup配置文件
! Configuration File for keepalived
global_defs {
router_id nginx-02
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state MASTER
interface ens32
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.16.99
}
}
- 脚本文件:
#!/bin/bash
set -x
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
echo `date`': nginx is not healthy, try to killall keepalived' >> /etc/keepalived/keepalived.log
killall keepalived
fi
- 启动:
systemctl start keepalived
master服务器 ip addr:
正常情况VIP会在master服务器中,当master服务器出现问题,会跑到backup服务器中。
- 常见报错
报配置文件错误
检查配置文件并没有错误
解决:
因安装好后,我将原有配置文件删除了,重新新建粘贴进去的配置,可能存在语法错误
重新卸载安装,手动修改配置文件
成功启动