nginx主备高可用

nginx 主备高可用

  • keepalive浮动的ip地址需要与实际地址保持同一网段,或者相通。

  • 安装keepalvied

    # yum源安装 安装完成目录 /etc/keepalived
    yum -y install keepalived
    
  • 修改负载与检测配置 目录/etc/keepalived.conf/keepalived.conf

# 可直接复制替换所有内容
! Configuration File for keepalived
global_defs {
 router_id LVS_DEVEL
}
# nginx 监听脚本 如果nginx 挂掉 会停止 当前服务器的 keepalived 切换到另一台服务器
vrrp_script chk_nginx {
	script "/etc/keepalived/nginx_check.sh"#  执行脚本所在的位置
	interval 2 	#  检测脚本执行的间隔,单位秒,每个2秒执行一次脚本
	weight 2
}

vrrp_instance VI_1 {  # 定义一个实例
    state MASTER   #  主服务 必须要是 MASTER  
    interface eth0 #  指定监测网络的接口,当LVS接管时,将会把IP地址添加到该网卡上。  改为自己本地IP 所用的 网口 # ip addr 来查看网口
    virtual_router_id 101 #  虚拟路由标识,同一个vrrp实例使用唯一的标识,同一个vrrp_instance下,MASTER和BACKUP必须一致。
    priority 100   #  指定这个实例优先级  主备值差不要超过 10
#    unicast_src_ip 192.168.1.17  # 配置单播的源地址
#    unicast_peer { 
#        192.168.1.18  #  配置单播的目标地址
#    }   
    advert_int 1       #  心跳报文发送间隔
    authentication {
        auth_type PASS      #  设置验证类型,主要有PASS和AH两种
        auth_pass test123   #  设置验证密码,同一个vrrp_instance下,MASTER和BACKUP的密码必须一致才能正常通信
    }
    virtual_ipaddress {     #  设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个
        192.168.1.101       #  自定义的 虚拟ip  VIP  也是测试时需要访问的ip 虚拟ip需要与实际ip处于同一网段
    }
    track_script {
        chk_nginx
    }
}
#以下是做lvs+keepalived集群所需要的负载配置 定义对外提供服务的LVS的VIP以及port 对于nginx做了负载的屏蔽掉下面代码即可
#virtual_server 192.168.1.101 80 {  
#    delay_loop 6 # 设置健康检查时间,单位是秒                    
#    lb_algo wrr # 设置负载调度的算法                   
#    lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式   
#    nat_mask 255.255.255.0                
#    persistence_timeout 0          
#    protocol TCP                  
#    real_server 192.168.1.17 443 {  # 指定real server1的IP地址
#        weight 3   # 配置节点权值,数字越大权重越高              
#        TCP_CHECK {  
#        connect_timeout 10         
#        nb_get_retry 3  
#        delay_before_retry 3  
#        connect_port 80  
#        }  
#    }  
#    real_server 192.168.1.18 443 {  # 指定real server2的IP地址
#        weight 3  # 配置节点权值,数字越大权重越高  
#        TCP_CHECK {  
#        connect_timeout 10  
#        nb_get_retry 3  
#        delay_before_retry 3  
#        connect_port 80  
#        }  
#     }  
#} 

  • nginx 检测脚本 chk_nginx

    #!/bin/bash
    A=`ps -C nginx –no-header |wc -l`
    if [ $A -eq 0 ];then
     /usr/local/nginx/sbin/nginx 	#Nginx启动命令的位置
     sleep 2
     if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
      ps -C keepalived --no-header | awk '{print $1}' | xargs kill
     fi
    fi
    
posted @ 2023-01-11 08:50  scorecrow  阅读(47)  评论(0)    收藏  举报