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

[经验分享] Nginx+keepalived双机热备

[复制链接]

尚未签到

发表于 2015-9-4 08:43:57 | 显示全部楼层 |阅读模式
[plain] view plaincopy

  • Nginx Master: 192.168.128.134  
  • Nginx Backup: 192.168.128.138  
  • VIP:192.168.128.177  
  Nginx安装见nginx安装配置文档
  Master与Backup的Nginx配置一致.
  在MASTER跟BACKUP上安装Keepalived:



[plain] view plaincopy

  • #tar zxvf keepalived-1.1.15.tar.gz -C ../software  
  • #cd ../software/keepalived-1.1.15  
  • #./configure –prefix=/usr/local/keepalived && make && make install  
  • #cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/  
  • #cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/  
  • #mkdir /etc/keepalived  
  • #cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/  
  • #cp /usr/local/keepalived/sbin/keepalived /usr/sbin/  
  • #service keepalived start|stop #做成系统启动服务方便管理.  
  修改MASTER 的keepalived.conf



[plain] view plaincopy

  • #vim /etc/keepalived/keepalived.conf  
  • vrrp_script chk_http_port {         
  •         script "/usr/local/scripts/nginx_pid.sh" ###监控脚本  
  •         interval 2 ###监控时间  
  •         weight 2  
  •         }  
  • vrrp_instance VI_1 {  
  •         state MASTER ### 设置为主  
  •         interface eth0 ### 监控网卡  
  •         virtual_router_id 51 ### 这个两台服务器必须一样  
  •         priority 101 ### 权重值MASTRE一定要高于BAUCKUP  
  •         authentication {  
  •         auth_type PASS ### 加密  
  •         auth_pass test ### 加密的密码,两台服务器一定要一样,不然会出错  
  •         }  
  •         track_script {  
  •         chk_http_port ### 执行监控的服务  
  •         }  
  •         virtual_ipaddress {                  
  •         192.168.128.177 ### VIP 地址         
  •         }  
  • }  


  修改BACKUP keepalived.conf



[plain] view plaincopy

  • #vim /etc/keepalived/keepalived.conf  
  • vrrp_script chk_http_port {  
  •         script "/opt/nginx_pid.sh"  
  •         interval 2  
  •         weight 2  
  • }  
  • vrrp_instance VI_1 {  
  •         state BACKUP ### 设置为备份机  
  •         interface eth0  
  •         virtual_router_id 51 ### 与 MASTRE 设置值一样  
  •         priority 80 ### 比 MASTRE权重值低  
  •   
  •         authentication {  
  •         auth_type PASS  
  •         auth_pass test ### 密码 与 MASTRE 一样  
  •         }  
  •         track_script {  
  •         chk_http_port  
  •         }  
  •         virtual_ipaddress {  
  •         192.168.128.177  
  •         }  
  • }  
  编写监控nginx监控脚本



[plain] view plaincopy

  • #vim /usr/local/scripts/nginx_pid.sh  
  • #!/bin/bash  
  • A=`ps -C nginx --no-header |wc -l` ## 查看是否有 nginx进程 把值赋给变量A  
  • if [ $A -eq 0 ];then <span style="white-space:pre"> </span>## 如果没有进程值得为 零  
  • <span style="white-space:pre">  </span>/usr/local/nginx/sbin/nginx  
  • <span style="white-space:pre">  </span>sleep 3  
  • <span style="white-space:pre">  </span>if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then  
  • <span style="white-space:pre">  </span>killall keepalived ## 则结束 keepalived 进程  
  • <span style="white-space:pre">  </span>fi  
  • fi  
  

  测试,分别在两个服务器 启动 nginx 和 keepalived



[plain] view plaincopy

  • #/usr/local/nginx/sbin/nginx  
  • #/etc/init.d/keepalived start  
  监控 Nginx Mastaer 的日志



[plain] view plaincopy

  • May 12 17:33:44 localhost Keepalived_vrrp: Configuration is using : 35676 Bytes  
  • May 12 17:33:44 localhost Keepalived: Starting VRRP child process, pid=1245  
  • May 12 17:33:44 localhost Keepalived_vrrp: VRRP sockpool: [ifindex(2), proto(112), fd(8,9)]  
  • May 12 17:33:45 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE  
  • May 12 17:33:46 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE  
  • May 12 17:33:46 localhost Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs.  
  • May 12 17:33:46 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.128.177  
  • May 12 17:33:46 localhost avahi-daemon[2344]: Registering new address record for 192.168.128.177 on eth0.  
  • May 12 17:33:46 localhost Keepalived_vrrp: Netlink reflector reports IP 192.168.128.177 added  
  监控 Nginx Backup 的日志



[plain] view plaincopy

  • May 11 22:28:21 localhost Keepalived: Starting Keepalived v1.1.15 (05/11,2010)  
  • May 11 22:28:21 localhost Keepalived_vrrp: Using MII-BMSR NIC polling thread...  
  • May 11 22:28:21 localhost Keepalived_vrrp: Registering Kernel netlink reflector  
  • May 11 22:28:21 localhost Keepalived_vrrp: Registering Kernel netlink command channel  
  • May 11 22:28:21 localhost Keepalived_vrrp: Registering gratutious ARP shared channel  
  • May 11 22:28:21 localhost Keepalived: Starting VRRP child process, pid=27040  
  • May 11 22:28:21 localhost Keepalived_vrrp: Opening file '/etc/keepalived/keepalived.conf'.  
  • May 11 22:28:21 localhost Keepalived_vrrp: Configuration is using : 35538 Bytes  
  • May 11 22:28:21 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE  
  • May 11 22:28:21 localhost Keepalived_vrrp: VRRP sockpool: [ifindex(2), proto(112), fd(7,8)]  
  • May 11 22:28:23 localhost Keepalived_vrrp: VRRP_Script(chk_http_port) succeeded  
  看日志可以看出,两台服务器的 MASTRE 和 BACUKUP 已经都正常了
  现在我们把Master的Nginx停掉.查看Backup的日志



[plain] view plaincopy

  • May 11 22:28:21 localhost Keepalived: Starting VRRP child process, pid=27040  
  • May 11 22:28:21 localhost Keepalived_vrrp: Opening file '/etc/keepalived/keepalived.conf'.  
  • May 11 22:28:21 localhost Keepalived_vrrp: Configuration is using : 35538 Bytes  
  • May 11 22:28:21 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE  
  • May 11 22:28:21 localhost Keepalived_vrrp: VRRP sockpool: [ifindex(2), proto(112), fd(7,8)]  
  • May 11 22:28:23 localhost Keepalived_vrrp: VRRP_Script(chk_http_port) succeeded  
  • May 11 22:29:25 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE  
  • May 11 22:29:26 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE  
  • May 11 22:29:26 localhost Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs.  
  • May 11 22:29:26 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.128.177  
  可以看出backup已经变成master
  现在再启动原来master的nginx,再查看backup的日志



[plain] view plaincopy

  • May 11 22:30:32 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Received higher prio advert  
  • May 11 22:30:32 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE  
  • May 11 22:30:32 localhost Keepalived_vrrp: VRRP_Instance(VI_1) removing protocol VIPs.  
  • May 11 22:30:32 localhost avahi-daemon[2409]: Withdrawing address record for 192.168.128.177 on eth0.  
  可以看出又变回了backup.

运维网声明 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-109218-1-1.html 上篇帖子: Keepalived+mysql 故障自动切换 下篇帖子: 实验LVS+keepalived
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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