您现在的位置是:首页 >技术交流 >Nginx+keepalived 双机热备(主主模式)网站首页技术交流
Nginx+keepalived 双机热备(主主模式)
简介Nginx+keepalived 双机热备(主主模式)
环境linux虚拟机
centos7.9 64位 2台 2C4G
IP: 192.168.123.78,192.168.123.82
VIP:192.168.123.30,192.168.123.31
共用脚本 nginx_check.sh
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
安装192.168.123.78环境
1、更新系统环境
yum update
2、安装keepalived
yum install keepalived
3、修改配置文件
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
# 全局配置,配置收件人
global_defs {
notification_email { ##通知机制,收件人
1207412755@qq.com
}
notification_email_from keepalived@domain.com ####发件人
smtp_server 192.168.123.78 ##发件服务器
smtp_connect_timeout 30 ##服务器连接超时时间
router_id LVS_DEVEL ##路由器标志
}
# 集群资源监控,组合track_script进行
vrrp_script check_haproxy {
script "/home/node/nginx_check.sh" #检测 nginx 状态的脚本路径
interval 2 #检测时间间隔
weight -20 #条件成立 权重减20
}
vrrp_instance HAPROXY_HA {
# 设置当前主机为主节点,如果是备用节点,则设置为BACKUP
state MASTER
# 指定HA监测网络接口,可以用ifconfig查看来决定设置哪一个
interface ens33
# 虚拟路由标识,同一个VRRP实例要使用同一个标识,主备机
virtual_router_id 80
# 因为当前环境中VRRP组播有问题,改为使用单播发送VRRP报文 如果VRRP组播没问题,以下这块的内容可以注释掉。
# 这个地方需要关注,之前未做此设置,结果主备节点互相不能发现,因此主备节点都升级成了MASTER,并且绑定了VIP
# 主节点时,内容为:
#unicast_src_ip 192.168.1.115
# unicast_peer {
# 192.168.1.120
#}
# 设置优先级,确保主节点的优先级高过备用节点
priority 100
# 用于设定主备节点间同步检查时间间隔
advert_int 2
# 设置高可用集群中不抢占功能,在主机down后,从机接管,当主机重新恢复后,设置此功能,备机将继续提供服务,从而避免因切换导致的隐患
#nopreempt
# 设置主备节点间的通信验证类型及密码,同一个VRRP实例中需一致
authentication {
auth_type PASS
auth_pass 1234
}
# 集群资源监控,组合vrrp_script进行
track_script {
check_haproxy
}
# 设置虚拟IP地址,当keepalived状态切换为MASTER时,此IP会自动添加到系统中
# 当状态切换到BACKUP时,此IP会自动从系统中删除
# 可以通过命令ip add查看切换后的状态
virtual_ipaddress {
192.168.123.30 #虚拟ip配置完之后就用它访问
}
}
vrrp_instance HAPROXY_HA2 {
# 设置当前主机为主节点,如果是备用节点,则设置为BACKUP
state BACKUP
# 指定HA监测网络接口,可以用ifconfig查看来决定设置哪一个
interface ens33
# 虚拟路由标识,同一个VRRP实例要使用同一个标识,主备机
virtual_router_id 81
# 因为当前环境中VRRP组播有问题,改为使用单播发送VRRP报文 如果VRRP组播没问题,以下这块的内容可以注释掉。
# 这个地方需要关注,之前未做此设置,结果主备节点互相不能发现,因此主备节点都升级成了MASTER,并且绑定了VIP
# 主节点时,内容为:
#unicast_src_ip 192.168.1.115
# unicast_peer {
# 192.168.1.120
#}
# 设置优先级,确保主节点的优先级高过备用节点
priority 90
# 用于设定主备节点间同步检查时间间隔
advert_int 2
# 设置高可用集群中不抢占功能,在主机down后,从机接管,当主机重新恢复后,设置此功能,备机将继续提供服务,从而避免因切换导致的隐患
#nopreempt
# 设置主备节点间的通信验证类型及密码,同一个VRRP实例中需一致
authentication {
auth_type PASS
auth_pass 1234
}
# 集群资源监控,组合vrrp_script进行
track_script {
check_haproxy
}
# 设置虚拟IP地址,当keepalived状态切换为MASTER时,此IP会自动添加到系统中
# 当状态切换到BACKUP时,此IP会自动从系统中删除
# 可以通过命令ip add查看切换后的状态
virtual_ipaddress {
192.168.123.31 #虚拟ip配置完之后就用它访问
}
}
4、检查并启动 keepalived
chkconfig keepalived on
service keepalived start
5、查看配置结果
ip a
如下显示配置成功
ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:89:2b:fa brd ff:ff:ff:ff:ff:ff
inet 192.168.123.78/24 brd 192.168.123.255 scope global noprefixroute dynamic ens33
valid_lft 66233sec preferred_lft 66233sec
inet 192.168.123.30/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::3f24:40b4:b7bf:37b/64 scope link noprefixroute
valid_lft forever preferred_lft forever
安装192.168.123.82环境
1、更新系统环境
yum update
2、安装keepalived
yum install keepalived
3、修改配置文件
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
# 全局配置,配置收件人
global_defs {
notification_email { ##通知机制,收件人
1207412755@qq.com
}
notification_email_from keepalived@domain.com ####发件人
smtp_server 192.168.123.82 ##发件服务器
smtp_connect_timeout 30 ##服务器连接超时时间
router_id LVS_DEVEL ##路由器标志
}
# 集群资源监控,组合track_script进行
vrrp_script check_haproxy {
script "/home/node/nginx_check.sh" #检测 nginx 状态的脚本路径
interval 2 #检测时间间隔
weight -20 #条件成立 权重减20
}
vrrp_instance HAPROXY_HA {
# 设置当前主机为主节点,如果是备用节点,则设置为BACKUP
state BACKUP
# 指定HA监测网络接口,可以用ifconfig查看来决定设置哪一个
interface ens33
# 虚拟路由标识,同一个VRRP实例要使用同一个标识,主备机
virtual_router_id 80
# 因为当前环境中VRRP组播有问题,改为使用单播发送VRRP报文 如果VRRP组播没问题,以下这块的内容可以注释掉。
# 这个地方需要关注,之前未做此设置,结果主备节点互相不能发现,因此主备节点都升级成了MASTER,并且绑定了VIP
# 主节点时,内容为:
#unicast_src_ip 192.168.1.120
# unicast_peer {
# 192.168.1.115
#}
# 设置优先级,确保主节点的优先级高过备用节点
priority 90
# 用于设定主备节点间同步检查时间间隔
advert_int 2
# 设置主备节点间的通信验证类型及密码,同一个VRRP实例中需一致
authentication {
auth_type PASS
auth_pass 1234
}
# 集群资源监控,组合vrrp_script进行
track_script {
check_haproxy
}
# 设置虚拟IP地址,当keepalived状态切换为MASTER时,此IP会自动添加到系统中
# 当状态切换到BACKUP时,此IP会自动从系统中删除
# 可以通过命令ip add查看切换后的状态
virtual_ipaddress {
192.168.123.30 #虚拟ip配置完之后就用它访问
}
}
vrrp_instance HAPROXY_HA2 {
# 设置当前主机为主节点,如果是备用节点,则设置为BACKUP
state MASTER
# 指定HA监测网络接口,可以用ifconfig查看来决定设置哪一个
interface ens33
# 虚拟路由标识,同一个VRRP实例要使用同一个标识,主备机
virtual_router_id 81
# 因为当前环境中VRRP组播有问题,改为使用单播发送VRRP报文 如果VRRP组播没问题,以下这块的内容可以注释掉。
# 这个地方需要关注,之前未做此设置,结果主备节点互相不能发现,因此主备节点都升级成了MASTER,并且绑定了VIP
# 主节点时,内容为:
#unicast_src_ip 192.168.1.115
# unicast_peer {
# 192.168.1.120
#}
# 设置优先级,确保主节点的优先级高过备用节点
priority 100
# 用于设定主备节点间同步检查时间间隔
advert_int 2
# 设置高可用集群中不抢占功能,在主机down后,从机接管,当主机重新恢复后,设置此功能,备机将继续提供服务,从而避免因切换导致的隐患
#nopreempt
# 设置主备节点间的通信验证类型及密码,同一个VRRP实例中需一致
authentication {
auth_type PASS
auth_pass 1234
}
# 集群资源监控,组合vrrp_script进行
track_script {
check_haproxy
}
# 设置虚拟IP地址,当keepalived状态切换为MASTER时,此IP会自动添加到系统中
# 当状态切换到BACKUP时,此IP会自动从系统中删除
# 可以通过命令ip add查看切换后的状态
virtual_ipaddress {
192.168.123.31 #虚拟ip配置完之后就用它访问
}
}
4、检查并启动 keepalived
chkconfig keepalived on
service keepalived start
5、查看配置结果
ip a
如下显示配置成功
ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:db:e8:d4 brd ff:ff:ff:ff:ff:ff
inet 192.168.123.82/24 brd 192.168.123.255 scope global noprefixroute dynamic ens33
valid_lft 66110sec preferred_lft 66110sec
inet 192.168.123.31/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::fb85:10f5:5055:4f1a/64 scope link noprefixroute
valid_lft forever preferred_lft forever
6、NGINX的安装与配置(两台服务器操作相同)
yum install -y epel-release
yum install -y nginx
chkconfig nginx on
service nginx start
7、修改NGINX主页进行测试区分(两台服务器操作相同)
cd /usr/share/nginx/html
修改index.html
8、测试验证
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。