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

[经验分享] Nginx+Keepalive实现高可用负载均衡

[复制链接]

尚未签到

发表于 2017-12-23 15:47:48 | 显示全部楼层 |阅读模式
  1、准备2台服务器


  • 服务器名LB1,假设IP为192.168.1.100
  • 服务器名LB2,假设IP为192.168.1.101
  2、在LB1,LB2上分别安装Nginx
  步骤参照:http://blog.csdn.net/yabingshi_tech/article/details/47416787
  两台机器的Nginx均修改proxy_pass,指向web服务器。
  3、在LB1,LB2上分别安装Keepalive
  1.新建检查Nginx脚本
  

chmod +x /root/check_nginx.sh  

  

vi /root/check_nginx.sh  

if [ "$(ps -ef | grep "nginx:master process"| grep -v grep )" == "" ]  then  
/etc/init.d/keepalived stop  else  
  echo "nginx is running"  
  
fi
  

  加入到作业计划
  

crontab -e  

*/1 * * * * /root/check_nginx.sh >>/root/check_nginx.log  

  2.修改两台keepalived服务器配置文件
  vi /etc/keepalived/keepalived.conf
  

#ConfigurationFile for keepalived  
global_defs {
  notification_email {                      ######定义接受邮件的邮箱  
  wangjj@hrloo.com
  
  }
  

  
notification_email_from jiankong@staff.tuge.com    ######定义发送邮件的邮箱  
  smtp_server mail.tuge.com  
  smtp_connect_timeout
10  
}
  

  
vrrp_script check_nginx {  ######定义监控nginx的脚本  
  script
"/root/check_nginx.sh"  interval
2                   ######监控时间间隔  weight
2                     ######负载参数  
}
  

  
vrrp_instance vrrptest {  ######定义vrrptest实例  
  state BACKUP              ######服务器状态  
interface eth0            ######使用的接口  virtual_router_id
51      ######虚拟路由的标志,一组lvs的虚拟路由标识必须相同,这样才能切换  priority
150              ######服务启动优先级,值越大,优先级越高,BACKUP 不能大于MASTER  advert_int
1              ######服务器之间的存活检查时间  
    authentication {  
  auth_type PASS         ######认证类型  
  auth_pass ufsoft       ######认证密码,一组lvs 服务器的认证密码必须一致
  
    }
  

  
track_script {######执行监控nginx进程的脚本  
  check_nginx
  
}
  

  
virtual_ipaddress {######虚拟IP地址  
10.192.203.106  
}  
  
}  
  


  3.vi /etc/sysconfig/iptables
  #注意,在两台机器上都要修改。添加:
  -A INPUT -d 10.192.203.106/32 -j ACCEPT
  -A INPUT -d 224.0.0.18 -j ACCEPT
  #第二行意思是添加VRRP通讯支持
  修改完后,重启防火墙
  service iptables restart
  4.启动keepalived
  在两台服务器上分别启动:
  service keepalived start

“脑裂”现象
  由于Keepalive某些节点的失效,部分节点的网络连接会断开,并形成一个与原集群一样名字的集群,这种情况称为集群脑裂(split-brain)现象。这个非常危险,因为两个新形成的集群会同时索引和修改集群的数据。
  如何避免脑裂


  • 可以采用第三方仲裁的方法。由于keepalived体系中主备两台机器所处的状态与对方有关。如果主备机器之间的通信出了网题,就会发生脑裂,此时keepalived体系中会出现双主的情况,产生资源竞争。
  • 一般可以引入仲裁来解决这个问题,即每个节点必须判断自身的状态。最简单的一种操作方法是,在主备的keepalived的配置文件中增加check配置,服务器周期性地ping一下网关,如果ping不通则认为自身有问题 。
  • 最容易的是借助keepalived提供的vrrp_script及track_script实现。如下所示。
  增加仲裁的配置:
    

global_defs {  router_id LVS_DEVEL
  
}
  
track_script {
  check_local
  
}
  
vrrp_script check_local {
  script
"/root/check_gateway.sh"  interval
5  
}
  
vrrp_sync_group VG_1 {
  group {
  VI_1
  }
  notify_master
/root/slave2master.py  notify_backup
/root/master2slave.py  
}
  

  
vrrp_instance VI_1 {
  vrrp_unicast_bind
192.168.150.21  vrrp_unicast_peer
192.168.150.20  state BACKUP
interface manbr  virtual_router_id
51  nopreempt
  priority
100  advert_int
10  authentication {
  auth_type PASS
  auth_pass XXXX
  }
  virtual_ipaddress {
192.168.150.23 dev manbr  }
  
}
  

  check_gateway.sh 就是我们的仲裁逻辑,发现ping不通网关,则关闭keepalived service keepalived stop。
  该方法在服务器通信正常之后无法再将keepalived启动起来。

运维网声明 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.iyunv.com/thread-427213-1-1.html 上篇帖子: Puppet nginx+passenger模式配置 下篇帖子: 配置 Nginx 负载均衡监测节点状态
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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