设为首页 收藏本站

运维网

查看: 448|回复: 0

[经验分享] 详解利用Keepalived+Nginx解决站点高可用性

[复制链接]
YunVN网友  发表于 4 天前 |阅读模式
  背景:
  公司官网PV不高,压力不大,所以公司给出两台服务器来提供官网web服务,毕竟是公司门面,不能出现问题!所以就需要一个轻量级web容灾方案!
  方案:
  利用keepalived+nginx实现官网web的高可用性
  两台服务器一台为主,一台为备机,使两台机器公用一个虚拟IP,当主服务器宕机,106.3.32.6这个IP会自动切换到备机上,前端机恢复之后再自动切换回主服务机
DSC0000.png

  然后,主服务机和备机利用rsync实现实时同步数据,
  rsync的安装配置可以参照我之前的一篇文章:http://cuimk.blog.51cto.com/6649029/1322241
  环境:
  CentOS 6.4
  nginx-1.2.1
  keepalived-1.2.2
  一、安装
  主和辅都需要安装keepalived,安装方法相同
yum -y install  kernel-devel  
yum install openssl-* -y
  
wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
  
tar xzf keepalived-1.2.2.tar.gz
  
cd keepalived-1.2.2
  
./configure --prefix=/usr/local/keepalived
  
make && make install
  
ln -s /usr/src/kernels/2.6.18-238.el5-i686/ /usr/src/linux
  
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
  
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
  
mkdir -pv /etc/keepalived
  
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
  
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
  加入开机启动:chkconfigkeepalived on
  二、配置
  主和辅配置的差别只在stateMASTER和priority 100
  vi /etc/keepalived/keepalived.conf
  
! Configuration File for keepalived  
global_defs {
  
#   notification_email {    ####此处定义发生替换会邮件通知
  
#     cuimingkun@yinwuweiye.com
  
#   }
  
#   notification_email_from keepalived@domain.com
  
#   smtp_server 127.0.0.1
  
#   smtp_connect_timeout 30
  router_id LVS_DEVEL
  
}
  
vrrp_script chk_http_port {
  script "/root/shell/nginx_pid.sh" ##监控脚本位置
  interval 2
  weight 2
  
}
  
track_script {
  chk_http_port
  }
  
vrrp_instance VI_1 {
  state MASTER        #####备机为BACKUP
  interface em1
  virtual_router_id 51
  priority 100        #####备机要小于主
  advert_int 1
  authentication {
  auth_type PASS
  auth_pass 1111
  }
  virtual_ipaddress {
  106.3.32.6  ####虚拟IP
  }
  
}
  三、分别在主和辅服务器上建立nginx的监控脚本
  Keepalived管理虚IP是通过组播和优先级实现的,优先级高的会拥有虚IP的管理权,所以要实现IP自动切换,只需要建立一个监控脚本,让keepalived进行调用,一旦发现nginx出现故障就kill掉keepalived的进程,让其他keepalived管理此IP
  vi /root/shell/nginx_pid.sh
#!/bin/bash  
A=`ps -C nginx --no-header |wc -l`
  
if [ $A -eq 0 ];then
  /usr/local/nginx/sbin/nginx
  sleep 3
  if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
  killall keepalived
  fi
  
fi
  注意给脚本添加执行权限:chmod+x /root/shell/nginx_pid.sh
  两台机器启动keepalived:service keepalived start
  四、测试
  #ip a查看IP
  查看主的IP,目前虚IP在主这里
DSC0001.jpg

  Kill掉主的keepalived,再查看,虚IP消失
DSC0002.jpg

  查看辅的这边,可以看到虚IP
DSC0003.jpg

  再启动主的keepalived,虚IP又回到主的这边
DSC0004.jpg

  五、总结
  此方案没有做负载均衡,只是做了一个故障自动切换的处理,适用于PV不是很高的环境(当然Nginx做好调优其负载能力也是很强的),不过可以以同样的原理举一反三,把他做在高并发的负载均衡器上,来实现高必发的容灾方案!



运维网声明 1、欢迎大家加入本站运维交流群:群①:263444886群②:197202523群③:485755530群④:201730672群⑤:202807635运维网交流群⑥:281548029
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须注明原文的出处
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、运维网 - 服务您的运维操作管理专家!
6、联系人Email:admin@yunvn.com 网址:www.iyunv.com

点击关注更多内容
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

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

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

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

扫描微信二维码查看详情

客服 E-mail:kefu@yunvn.com

本站由青云提供云计算服务

运维网--中国最专业的运维工程师交流社区

京ICP备14039699号-1 Copyright © 2012-2018

使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

Good good study day day up !


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


独家合作伙伴: 青云cloud

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