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

[经验分享] nginx + keepalive

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-9-1 10:17:08 | 显示全部楼层 |阅读模式
目的: 学习nginx + keepalive结合实现双机热备。


【实现图】
wKioL1fG1n6ieUYGAABEkJkEL8A459.jpg
【环境】
master系统配置:
[iyunv@master html]# ifconfig |grep -A 1 eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:65:14:0F  
          inet addr:192.168.100.10  Bcast:192.168.100.255  Mask:255.255.255.0
[iyunv@master html]# hostname               
master
[iyunv@master html]# ifconfig |grep -A 1 eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:65:14:0F  
          inet addr:192.168.100.10  Bcast:192.168.100.255  Mask:255.255.255.0
[iyunv@master html]# cat /etc/issue | head -1
entOS release 6.4 (Final)


master nginx提前web环境:
[iyunv@master html]# curl 192.168.100.10        
<!DOCTYPE html>
<html>
  <h1>192.168.100.10 -- lnmp master -- bbs.test.com</h1>
</html>



slave系统配置:
[iyunv@master ~]# ifconfig |grep -A 2 eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:65:14:0F  
          inet addr:192.168.100.10  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe65:140f/64 Scope:Link
[iyunv@master ~]# hostname               
master
[iyunv@master ~]# ifconfig |grep -A 1 eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:65:14:0F  
          inet addr:192.168.100.10  Bcast:192.168.100.255  Mask:255.255.255.0
[iyunv@master ~]# head -1 /etc/issue
entOS release 6.4 (Final)


slave nginx配置:
[iyunv@slave ~]# curl 192.168.100.13
<!DOCTYPE html>
<html>
<h1>192.168.100.13 -- lnmp slave -- bbs.test.com</h1>
</html>


【安装keepalive】
yum install  keepalived
keepalived-1.2.13-5.el6_6.x86_64

版本号:
[iyunv@master html]# keepalived -v
Keepalived v1.2.13 (03/19,2015)


安装的重要文件:
/etc/keepalived   #配置文件目录
/etc/keepalived/keepalived.conf  #配置文件
/etc/rc.d/init.d/keepalived     #启动文件
/etc/sysconfig/keepalived      #keepalived的系统初识化文件
/usr/bin/genhash            #不知道 hash相关的吧
/usr/sbin/keepalived         #keepalived的可执行文件


【配置文件的编写】

去除默认的配置文件
> /etc/keepalived/keepalived.conf   
master配置配置文件

! Configuration File for keepalived

#core的定义
global_defs {
   notification_email {
        735896273@qq.com
      }
   notification_email_from andy@126.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

#定义检查脚本
vrrp_script check_http {
        script "/root/check_nginx.sh"    # verify the pid existance
        interval 2                    # check every 2 seconds
        weight   2                    # add 2 points of prio if OK 如果检测监本是成功的则优先级加2
}

#配置实例
vrrp_instance VI_1 {
    state MASTER    #主机为MASTER,备用机为BACKUP
    interface eth0                   #interface to monitor   #HA监测网络接口
    virtual_router_id 51             # Assign one ID for this route 主、备机的virtual_router_id必须相同
    priority 101                     # 101 on master,100 on backup
    nopreempt  #非抢占(因为默认如果master挂了,backup顶上去,即使master恢复也不抢占!
    debug
    authentication {
            auth_type PASS          ##VRRP认证方式
            auth_pass mynginx       #密码为mynginx
        }
#VIP地址
    virtual_ipaddress {
            192.168.100.12
        }

    track_script {
                 check_http  (调用nginx进程检测脚本)
        }


}


###############check_http的脚本
[iyunv@master html]# cat /root/check_nginx.sh
1
2
3
4
5
6
7
8
9
#!/bin/bash
A=`ps -C nginx --no-header | wc -l`
if [ $A -eq 0 ];then
   /etc/init.d/nginx start
   sleep 3
   if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
       killall keepalived
   fi
fi



当检测到nginx进程不存在的时候,就干掉所有的keepalived,这时候,请求将会由keepalived的backup接管!!
注意: 脚本一定要有执行权限
chmod +x /root/check_nginx.sh


slave配置配置文件:
......

......
state BACKUP    #主机为MASTER,备用机为BACKUP

...
priority 100



【启动】
master和slave 的keepalive和nginx都启动
/etc/init.d/keepalived start
/etc/init.d/nignx start

此时可以看到vip在master机器行,因为优先级高
[iyunv@master html]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:65:14:0f brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.10/24 brd 192.168.100.255 scope global eth0
    inet 192.168.100.12/32 scope global eth0
    inet6 fe80::20c:29ff:fe65:140f/64 scope link
       valid_lft forever preferred_lft forever






【会导致切换的情况】
1 master挂了(机器挂了或者keepalive进程没了),终归到底keepalive进程没了,此时会vrrp检查对端没包,此时backup接管VIP。
2 check_nginx.sh检查脚本,当检测到nginx进程挂了,且起不来的时候,就把keepalived全部杀掉。
这样当然,就切换到了backup咯。



【疑问】
1 抓包如何抓到vrrp包?
2 keepalive的日志如何弄?
    tail -f /var/log/messages
3 非强制好像不起作用。先关掉master的keepalivd再启动master 的keepalived和nginx,master依然会把VIP抢占古来
4 weight像没啥用?
5 检查时间
    advert_int 1 #检查间隔,默认1秒6 track_script其实就是用来检测nginx的。



运维网声明 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-266052-1-1.html 上篇帖子: nginx配置https网站 下篇帖子: nginx编译安装与配置使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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