发表于 2018-12-29 12:33:40

keepalived高可用nginx

  实验拓扑:
http://s1.运维网.com/wyfs02/M00/8A/17/wKiom1gl3jziZXdyAACuXCAga-U585.png
  

  1.在两台realserver上配置web服务
http://s3.运维网.com/wyfs02/M00/8A/13/wKioL1gl3prBYIqvAAAh06bMISc370.png
  

  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_typeapplication/octet-stream;
    log_formatmain'$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.logmain;
    sendfile      on;
    #tcp_nopush   on;
    keepalive_timeout65;
    #gzipon;
    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 http://webserver;
}
}
}  在两台调度器上同时启动nginx和keepalived,此时VIP在nginx1主机上
http://s5.运维网.com/wyfs02/M02/8A/1C/wKiom1gmwG6QBUnMAAAvmDWMZuQ466.png
  

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

http://s2.运维网.com/wyfs02/M00/8A/18/wKioL1gmwRmjfTgQAABFoeUeRcM238.png
  

  停止调度器1上面的nginx服务,VIP漂移至nginx2主机上
http://s3.运维网.com/wyfs02/M00/8A/18/wKioL1gmweGxEKsCAABzZhKdZnk786.png
http://s4.运维网.com/wyfs02/M01/8A/18/wKioL1gmwgSy8qdoAAAsDxDaZPU964.png
  

  依然可以正常调度

http://s5.运维网.com/wyfs02/M02/8A/1C/wKiom1gmwkng4IsdAAA1jZz97gs945.png
  

  

  

  




页: [1]
查看完整版本: keepalived高可用nginx