企业级Nginx+Keepalived双主架构实战

Nginx+keepalived主备模式,始终存在一台服务器处于空闲状态,如何更好的把两台服务器利用起来呢,可以借助Nginx+keepalived双主架构来实现,如图23-2所示,将架构改成双主架构,也即同时两台对外两个VIP地址,同时接收用户的请求。

Nginx+Keepalived双主架构实现方法步骤如下:

(1)Master1上keepalived.conf配置文件内容:

! Configuration File for keepalived 
 global_defs { 
  notification_email { 
      wgkgood@163.com 
 } 
    notification_email_from wgkgood@163.com 
    smtp_server 127.0.0.1 
    smtp_connect_timeout 30 
    router_id LVS_DEVEL 
 }
 vrrp_script chk_nginx {
    script "/data/sh/check_nginx.sh" 
    interval 2 
    weight 2 
 } 
 # VIP1 
 vrrp_instance VI_1 { 
     state MASTER 
     interface eth0 
     lvs_sync_daemon_inteface eth0 
     virtual_router_id 151 
     priority 100 
     advert_int 5 
     nopreempt 
     authentication { 
         auth_type  PASS 
         auth_pass  1111 
     } 
     virtual_ipaddress { 
         192.168.0.198
     } 
     track_script { 
     chk_nginx 
    } 
 }
# VIP2
 vrrp_instance VI_2 { 
     state BACKUP 
     interface eth0 
     lvs_sync_daemon_inteface eth0 
     virtual_router_id 152 
     priority  90 
     advert_int 5 
     nopreempt 
     authentication { 
         auth_type  PASS 
         auth_pass  2222 
     } 
     virtual_ipaddress { 
         192.168.33.199 
     } 
     track_script { 
     chk_nginx 
    } 
 }

(2)Master2上keepalived.conf配置文件内容:

! Configuration File for keepalived 
 global_defs { 
  notification_email { 
      wgkgood@163.com 
 } 
    notification_email_from wgkgood@163.com 
    smtp_server 127.0.0.1 
    smtp_connect_timeout 30 
    router_id LVS_DEVEL 
 }
 vrrp_script chk_nginx {
    script "/data/sh/check_nginx.sh" 
    interval 2 
    weight 2 
 } 
 # VIP1 
 vrrp_instance VI_1 { 
     state BACKUP 
     interface eth0 
     lvs_sync_daemon_inteface eth0 
     virtual_router_id 151 
     priority 90 
     advert_int 5 
     nopreempt 
     authentication { 
         auth_type  PASS 
         auth_pass  1111 
     } 
     virtual_ipaddress { 
         192.168.0.198
     } 
     track_script { 
     chk_nginx 
    } 
 }
# VIP2
 vrrp_instance VI_2 { 
     state MASTER 
     interface eth0 
     lvs_sync_daemon_inteface eth0 
     virtual_router_id 152 
     priority  100
     advert_int 5 
     nopreempt 
     authentication { 
         auth_type  PASS 
         auth_pass  2222 
     } 
     virtual_ipaddress { 
         192.168.33.199 
     } 
     track_script { 
     chk_nginx 
    } 
 }

(3)两台Nginx服务器上配置/data/sh/check_nginx.sh脚本,内容如下:

#!/bin/bash 
#auto check nginx  process
killall  -0   nginx
if  [[ $? -ne 0 ]];then
    systemctl stop keepalived
fi

(4)如图所示,两个VIP在一台服务器,是由于另外一台服务器down机,VIP都漂移到本机网卡下。

(5)

  • Nginx+keepalived双主企业架构,在日常维护及管理过程中需要如下几个方面:
  • Keepalived主配置文件必须设置不同的VRRP名称,同时优先级和VIP设置也各不相同;
  • Nginx网站总访问量为两台Nginx服务器之和,可以写脚本自动统计访问量;
  • 两台Nginx为Master,存在两个VIP地址,用户从外网访问VIP,需配置域名映射到两个VIP上方可。
  • 通过外网DNS映射不同VIP的方法也称为DNS负载均衡模式;
  • 可以通过Zabbix实时监控VIP访问状态是否正常。

发表评论

后才能评论