背景:
阅读新闻
Keepalived高可用Nginx
[日期:2017-03-27] 来源:Linux社区 作者:zhaizhai [字体:]
实验拓扑:

1.在两台realserver上配置web服务

2.keepalived配置
master的配置
global_defs { 
   notification_email { 
       root@localhost 
   } 
   notification_email_from keepalived@localhost 
   smtp_server 127.0.0.1 
   smtp_connect_timeout 30 
   router_id node1 
} 
  
vrrp_script chk_down {    #keepalived控制脚本        
    script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"      #脚本内容 
    interval 2 
    weight -6 
} 
  
vrrp_script chk_nginx {            #检测nginx服务脚本 
    script "killall -0 nginx && exit 0 || exit 1"   #脚本内容      
    interval 2 
    weight -6 
} 
  
vrrp_instance VI_1 {    #配置实例 
    state MASTER 
    interface eno16777736 
    virtual_router_id 88 
    priority 100 
    advert_int 1 
    authentication { 
        auth_type PASS 
        auth_pass 1111 
    } 
  
    virtual_ipaddress { 
        10.1.88.88/16 dev eno16777736 label eno16777736:0 
    } 
  
    track_script {    #调用脚本 
        chk_down 
        chk_nginx 
    } 
  
    notify_master "/etc/keepalived/notify.sh master"    #定义通告脚本 
    notify_backup "/etc/keepalived/notify.sh backup"    
    notify_fault  "/etc/keepalived/notify.sh fault"
}
backup的配置:
global_defs { 
   notification_email { 
       root@localhost 
   } 
   notification_email_from keepalived@localhost 
   smtp_server 127.0.0.1 
   smtp_connect_timeout 30 
   router_id node1 
} 
  
vrrp_script chk_down { 
    script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
    interval 2 
    weight -6 
} 
  
vrrp_script chk_nginx { 
    script "killall -0 nginx && exit 0 || exit 1"
    interval 2 
    weight -6 
} 
  
vrrp_instance VI_1 { 
    state BACKUP     
    interface eno16777736 
    virtual_router_id 88 
    priority 98 
    advert_int 1 
    authentication { 
        auth_type PASS 
        auth_pass 1111 
    } 
  
    virtual_ipaddress { 
        10.1.88.88/16 dev eno16777736 label eno16777736:0 
    } 
  
    track_script { 
        chk_down 
        chk_nginx 
    } 
  
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault  "/etc/keepalived/notify.sh fault"
}
3.nginx调度器配置
两台nginx调度器的配置文件
#http段中的配置 
http { 
    include       /etc/nginx/mime.types; 
    default_type  application/octet-stream; 
  
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"'; 
  
    access_log  /var/log/nginx/access.log  main; 
  
    sendfile        on; 
    #tcp_nopush     on; 
  
    keepalive_timeout  65; 
  
    #gzip  on; 
  
    include /etc/nginx/conf.d/*.conf; 
  
    upstream webserver { 
        server 10.1.68.5 weight=1 max_fails=2; 
        server 10.1.68.6 weight=1 max_fails=2; 
    } 
  
    server { 
        listen 80; 
        server_name localhost; 
  
        location / { 
            index index.html index.htm; 
            proxy_set_header Host $host; 
            proxy_set_header X-Real-IP $remote_addr; 
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
            proxy_pass ; 
        } 
    } 
  
}
在两台调度器上同时启动nginx和keepalived,此时VIP在nginx1主机上

4.测试
通过VIP访问,可正常调度

停止调度器1上面的nginx服务,VIP漂移至nginx2主机上


依然可以正常调度

一些关于Keepalived相关教程集合:


