您现在的位置是:首页 >技术交流 >Nginx+keepalived 双机热备(主主模式)网站首页技术交流

Nginx+keepalived 双机热备(主主模式)

stone1116 2024-06-17 10:47:47
简介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、测试验证

http://192.168.123.30/

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。