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

[经验分享] keepalived+nginx实现高可用WEB前端

[复制链接]

尚未签到

发表于 2018-12-30 14:28:28 | 显示全部楼层 |阅读模式
  Keepalived介绍:
  1、Keepalived是重要的轻量级高可用底层,是VRRP协议在linux上的软件实现。对于实现虚IP转移及没有共享存储的高可用集群是一个很好的选择,轻量级,VIP转移速度快,能够实现VIP转移时(也就是主从切换时)执行相应的动作(依赖于脚本)。
  2、Keepalived早期为LVS设计,内部整合了LVS,并且能够提供后端不同服务的健康状况检查。
  

  Nginx介绍:
  nginx是一种轻量级的http服务器及Web、Mail的反向代理服务器。作为Web反向代理服务器,nginx可以做端口映射、URI反向代理、URL重写、缓存服务器、为后端Web服务器提供加权负载均衡、反盗链、后端服务器读写分离等强大功能。
  

  因此轻量级高可用Keepalived加轻量级Web反向代理nginx在企业中非常常见。试验拓扑如下:

  Keepalived实现功能如下:
  1、vrrp自身可以根据hello报文监控master与slave的运行,因此当master的链路状态出现问题时,slave将成为master。
  2、为nginx提供高可用,主节点实时监控nginx的运行状态。通过监控nginx的pid文件,来监控nginx进程的状态,当不存在pid文件也就是nginx进程关闭时将减小优先级使得slave节点的优先级大于主节点而成为master。
  3、slave节点在成为master时检查nginx进程状态,如果不存在pid文件则重启nginx进程。如果存在则不做处理。
  

  Nginx实现功能如下:
  1、为apache实现web反向代理
  2、后端apache的健康状况检查
  3、实现sorry server
  

  实验环境介绍:10.32.9.51~~10.32.9.54分别对应node1~~node4、实验平台RHEL5.8 X64
  

  实验步骤:
  1、nginx keepalived apache软件编译安装,服务脚本的提供,并分别为apache提供相应主页,主页内容高亮显示主机名。
  2、分别配置node1 node2的keepalived
  node1相关配置
vrrp_script nginx {    ---------配置vrrp track脚本
    script "[ -e /var/run/nginx/nginx.pid ] && exit 0 || exit 1" -监控nginx进程,根据进程的状态返回不同状态值
    interval 2   ---- 监控间隔
    weight -20   ----当发现返回状态为1则降低的权重值
    fall 2       ---- 该文件不存在的需要检测两次才算错误
    rise 1       -----该文件存在的检测一次既算正确
}vrrp_instance VI_1 {     -------------配置VRRP实例
    state MASTER         ------------ 设定为master状态
    interface eth0       -------------通告信息接口
    virtual_router_id 51 -------------VRRP组,两端要一致
    priority 100         -------------主端优先级
    advert_int 1         -------------每多长时间通告在线信息,类似hello包
    authentication {      
        auth_type PASS   --------------密码的方式进行认证
        auth_pass redhat --------------密码为redhat
    }
    virtual_ipaddress {
         10.32.9.199 dev eth0 label eth0:1  ----------虚拟IP地址,使用别名方式更容易观察
    }
    track_script {    -----监控脚本
        nginx  ----监控的具体脚本、这里调用vrrp_script定义的脚本
    }
}  

  node2相关配置
vrrp_instance VI_1 {
    state SLAVE           --------------从节点状态为slave
    interface eth0               
    virtual_router_id 51
    priority 90           --------------从节点优先级为90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass redhat
    }
    virtual_ipaddress {
       10.32.9.199 dev eth0 label eth0:1 ----------虚拟IP地址,使用别名方式更容易观察         
    }
    notify_master "/etc/keepalived/m.sh"
}
/etc/keepalived/m.sh脚本-----slave成为master时检查nginx服务状态
[ -e /var/run/nginx/nginx.pid ] && echo || service nginx restart  2、配置nginx
  node1主要配置
upstream webserver {   ------------定义反向代理服务器组
       server 10.32.9.53:80 weight=5 max_fails=2 fail_timeout=10s;
       server 10.32.9.54:80 weight=5 max_fails=2 fail_timeout=10s;
       server 10.32.9.51:8080 backup ; ----定义sorry server
}weigth可以实现加权轮调、这里两台服务器值相等表示负载均衡。
max_fails 后端服务器状态检查次数为2次
fail_timeout每次检查时长location / {
        proxy_pass http://webserver;----反向代理至的服务器,webserver引用upstream定义的组
        index  index.html index.htm;
}
server {  ----------定义sorry server
        listen 8080;
        location / {
        root /var/www ;
        index index.html ;
        }
        }  node2主要配置
upstream webserver {   ------------定义反向代理服务器组
        server 10.32.9.53:80 weight=5 max_fails=2 fail_timeout=10s;
        server 10.32.9.54:80 weight=5 max_fails=2 fail_timeout=10s;
        server 10.32.9.51:8080 backup ; ----定义sorry server
}
location / {
        proxy_pass http://webserver;   ----反向代理至的地址,webserver引用upstream定义的组
        index  index.html index.htm;
server {  ----------定义sorry server
        listen 8080;
        location / {
        root /var/www ;
        index index.html ;
        }
        }  

  

  





运维网声明 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-657656-1-1.html 上篇帖子: ​Keepalived双机热备 下篇帖子: Centos5.6构建LVS+keepalived
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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