设为首页 收藏本站
查看: 919|回复: 0

[经验分享] keepalived实现nginx的高可用(双主模型)

[复制链接]

尚未签到

发表于 2018-12-30 09:46:35 | 显示全部楼层 |阅读模式
  实验环境:
      RS1:rip(172.16.125.7),安装httpd软件包;

      RS2:rip(172.16.125.8),安装httpd软件包;
      director1(7-1.lcs.com):vip(172.16.125.100),dip(172.16.125.5),安装nginx、keepalived软件包。
      director2(7-2.lcs.com):vip(172.16.125.110),dip(172.16.125.6),安装nginx、keepalived软件包。
      首先关闭所有节点上iptables和selinux,同时进行时间同步。

  使用双主模型实现nginx的高可用:
  (1)在两台keepalived高可用主机上安装keepalived和nginx软件包,并提供配置文件。
      a.首先使用时间同步,保证节点上的时间是同步的。
      b.首先使用nginx反向代理实现后台RS上的web服务的负载均衡,在nginx的主配置文件(/etc/nginx/nginx.conf)中,进行修改。
          在http段中添加upstream,将后端两台RS加入到该upstream中。
upstream myblancer {
        server 172.16.125.7:80;
        server 172.16.125.8:80;
    }          在server段中location /{}中加入代理,实现负载均衡调度。
location / {
                proxy_pass http://myblancer;
        }      c.进行检测,是否实现了后端RS的轮询调度。
  


  
  (2)上述说明已经通过nginx的反向代理实现了http服务的负载均衡。在此处就可以开始配置keepalived的主配置文件,实现对nginx的高可用。详细配置文件如下:
      keepalived的配置文件1:
global_defs {
   notification_email {
     root@localhost
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_nginx {
    script "killall -0 nginx &> /dev/null"
    interval 1
    weight -20
}
vrrp_instance VI_1 {
    state MASTER
    interface eno16777736
    virtual_router_id 100
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 100
    }
    virtual_ipaddress {
172.16.125.100/16 dev eno16777736 label eno16777736:0
    }
    track_script {
        chk_nginx  
   }
}
vrrp_instance VI_2 {
    state BACKUP
    interface eno16777736
    virtual_router_id 110
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 110
    }
    virtual_ipaddress {
172.16.125.110/16 dev eno16777736 label eno16777736:1
    }
    track_script {
        chk_nginx
   }
}      keepalived配置文件2:
global_defs {
   notification_email {
     root@localhost
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_nginx {
    script "killall -0 nginx &> /dev/null"
    interval 1
    weight -20
}
vrrp_instance VI_1 {
    state BACKUP
    interface eno16777736
    virtual_router_id 100
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 100
    }
    virtual_ipaddress {
172.16.125.100/16 dev eno16777736 label eno16777736:0
    }
    track_script {
        chk_nginx
   }
}
vrrp_instance VI_2 {
    state MASTER
    interface eno16777736
    virtual_router_id 110
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 110
    }
    virtual_ipaddress {
172.16.125.110/16 dev eno16777736 label eno16777736:1
    }
   track_script {
        chk_nginx
   }
}      使用如下这个脚本检测nginx服务的状态,如果nginx服务发生了问题,那么在该服务器上的vip会自动流动到另一台高可用服务器上。使用下边这个脚本要保证高可用服务器上有killall命令,该命令是由psmisc软件包提供
vrrp_script chk_nginx {
    script "killall -0 nginx &> /dev/null"
    interval 1
    weight -20
}  
          通过这一步的keepalived的配置,keepalived服务已经配置完成,那么在这两台director上启动keepalived和nginx服务。

          a.查看两台director上vip是否已经添加成功。
  


          b.分别访问vip(172.16.125.100)和vip(172.16.125.110)
          
      c.在director1上关闭nginx服务,检测到vip已经消失,转移到director2上。
  


  


          

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-657468-1-1.html 上篇帖子: 通过keepalived为ipvs和web实现高可用能力 下篇帖子: 定义keepalived的双主模型和lvs
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表