global_defs {
# 路由id:当前安装keepalived节点主机的标识符,全局唯一
router_id keep_1
}
# 计算机节点
vrrp_instance VI_1 {
# 表示状态,当前的主节点,MASTER/BACKUP
state MASTER
# 当前实例绑定的网卡
inteface eth0
# 虚拟路由id,保证主备节点一致
virtual_router_id 51
# 优先级/权重,优先成为MASTER
priority 100
# 主备之间同步检查的时间间隔,默认为1s
advert_int 1
# 认证授权的密码,防止非法节点进入
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP
virtual_ipaddress {
192.168.1.161
}
}
global_defs {
# 路由id:当前安装keepalived节点主机的标识符,全局唯一
router_id keep_2
}
# 计算机节点
vrrp_instance VI_1 {
# 表示状态,当前的主节点,MASTER/BACKUP
state BACKUP
# 当前实例绑定的网卡
inteface eth0
# 虚拟路由id,保证主备节点一致
virtual_router_id 51
# 优先级/权重,优先成为MASTER
priority 80
# 主备之间同步检查的时间间隔,默认为1s
advert_int 1
# 认证授权的密码,防止非法节点进入
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP
virtual_ipaddress {
192.168.1.161
}
}
#!/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
vrrp_script check_nginx_alive {
script "/etc/keepalived/check_nginx_alive.sh"
# 每隔2秒运行一次脚本
interval 2
# 如果脚本运行失败,则权重+10
weight 10
}
track_script {
check_nginx_alive
}
global_defs {
# 路由id:当前安装keepalived节点主机的标识符,全局唯一
router_id keep_1
}
# 计算机节点
vrrp_instance VI_1 {
# 表示状态,当前的主节点,MASTER/BACKUP
state MASTER
# 当前实例绑定的网卡
inteface eth0
# 虚拟路由id,保证主备节点一致
virtual_router_id 51
# 优先级/权重,优先成为MASTER
priority 100
# 主备之间同步检查的时间间隔,默认为1s
advert_int 1
# 认证授权的密码,防止非法节点进入
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP
virtual_ipaddress {
192.168.1.161
}
}
vrrp_instance VI_2 {
# 表示状态,当前的主节点,MASTER/BACKUP
state BACKUP
# 当前实例绑定的网卡
inteface eth0
# 虚拟路由id,保证主备节点一致
virtual_router_id 52
# 优先级/权重,优先成为MASTER
priority 80
# 主备之间同步检查的时间间隔,默认为1s
advert_int 1
# 认证授权的密码,防止非法节点进入
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP
virtual_ipaddress {
192.168.1.162
}
}
global_defs {
# 路由id:当前安装keepalived节点主机的标识符,全局唯一
router_id keep_2
}
# 计算机节点
vrrp_instance VI_1 {
# 表示状态,当前的主节点,MASTER/BACKUP
state BACKUP
# 当前实例绑定的网卡
inteface eth0
# 虚拟路由id,保证主备节点一致
virtual_router_id 51
# 优先级/权重,优先成为MASTER
priority 80
# 主备之间同步检查的时间间隔,默认为1s
advert_int 1
# 认证授权的密码,防止非法节点进入
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP
virtual_ipaddress {
192.168.1.161
}
}
vrrp_instance VI_2 {
# 表示状态,当前的主节点,MASTER/BACKUP
state MASTER
# 当前实例绑定的网卡
inteface eth0
# 虚拟路由id,保证主备节点一致
virtual_router_id 52
# 优先级/权重,优先成为MASTER
priority 100
# 主备之间同步检查的时间间隔,默认为1s
advert_int 1
# 认证授权的密码,防止非法节点进入
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP
virtual_ipaddress {
192.168.1.162
}
}
global_defs {
router_id keep_lvs_1
}
vrrp_instance VI_1 {
state MASTER
inteface eth0
virtual_router_id 40
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.150
}
}
# 配置集群地址访问的ip+端口,端口和nginx保持一致
virtual_server 192.168.1.150 80 {
# 健康检查时间,单位:秒
delay_loop 6
# 配置负载均衡的算法,默认是轮询
lb_algo rr
# 设置lvs模式 NAT|TUN|DR
lb_kind DR
# 设置会话时间持久化时间
persitence_timeout 50
# 协议 -t
protocol TCP
# 负载均衡真实服务器,即nginx节点真实ip地址
real_server 192.168.1.171 80 {
# 轮询默认权重
weight 1
# 设置健康检查
TCP_CHECK {
# 检查80端口
connect_port 80
# 超时时间(秒)
connect_timeout 2
# 重试次数(次)
nb_get_retry 2
# 间隔时间(秒)
delay_before_retry 3
}
}
real_server 192.168.1.172 80 {
weight 1
# 设置健康检查
TCP_CHECK {
# 检查80端口
connect_port 80
# 超时时间(秒)
connect_timeout 2
# 重试次数(次)
nb_get_retry 2
# 间隔时间(秒)
delay_before_retry 3
}
}
}