Nginx +keepalived

 

配置高可用的Nginx

准备环境:

节点node17,node18

 

lftp 172.16.0.1:/pub/Sources/6.x86_64/nginx

 

[root@node17 ~]# rpm -ivh nginx-1.6.2-1.el6.ngx.x86_64.rpm

 

[root@node17 ~]# scp -rp nginx-1.6.2-1.el6.ngx.x86_64.rpm node18:/root

 

[root@node18 ~]# rpm -ivh nginx-1.6.2-1.el6.ngx.x86_64.rpm

 

为两个 节点上都配置默认的网页,来以示区别

 

[root@node17 html]# vim index.html

<h1>node15.stu21.com</h1>

 

[root@node18 html]# vim index.html

<h1>node2.stu21.com </h1>

 

接下来启动两个 节点上的nginx 服务:

 

[root@node17 html]# service nginx start;ssh node18 'service nginx start';

 

测试:

 

 

 

 

 

 

 

 

 


题:我们一般进行主从切换测试时都是关闭keepalived或关闭网卡接口,有没有一种方法能实现在不关闭keepalived下或网卡接口来实现维护
呢?以及监测nginx的状态??
方法肯定是有的,在keepalived新版本中,支持脚本vrrp_srcipt,具体如何使用大家可以man keepalived.conf查看。下面我们来演示一下具体怎么实现。

 

    vrrp_srcipt chk_schedown { 

   script "[ -e /etc/keepalived/down ] && exit 1 || exit 0"  

   interval 1 #监控间隔  

   weight -5 #减小优先级  

   fall 2 #监控失败次数  

   rise 1 #监控成功次数  

}

    vrrp_script chk_nginx {

        script "killall -0 nginx"

        interval 1

        weight -5

        fall 2

        rise 1

}

 

(2).执行脚本

    track_script {

   chk_schedown #执行chk_schedown脚本

     chk_nginx #执行chk_nginx脚本

}

 

 

node17:我就继续沿用apache+lvs+keepalived的节点node17上keepalived相关配置,稍作修改

[root@node17 ~]# cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived

 

global_defs {

notification_email {

    root@node17.stu21.com

    root@node18.stu21.com #配置管理员邮箱

}

notification_email_from kaadmin@stu21.com #配置发件人

smtp_server 127.0.0.1 #配置邮件服务器

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_script chk_schedown { #定义vrrp执行脚本

script "[ -e /etc/keepalived/down ] && exit 1 || exit 0" #查看是否有down文件,有就进入维护模式

interval 1 #监控间隔时间

weight -5 #降低优先级

fall 2 #失败次数

rise 1 #成功数次

}

    vrrp_script chk_nginx {

        script "killall -0 nginx"

        interval 1

        weight -5

        fall 2

        rise 1

}

 

vrrp_instance VI_1 {

state MASTER #配置模式

#state BACKUP #测试配置模式

interface eth0

virtual_router_id 51

priority 100 #配置优先级

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

172.16.21.100 #配置虚拟IP地址

}

track_script { #执行脚本

chk_schedown

    chk_nginx #执行chk_nginx脚本

}

#增加以下三行

notify_master "/etc/keepalived/notify.sh -n master -a 172.16.21.100"

notify_backup "/etc/keepalived/notify.sh -n backup -a 172.16.21.100"

notify_fault "/etc/keepalived/notify.sh -n fault -a 172.16.21.100"

}

 

vrrp_instance VI_2 {

state BACKUP #配置模式 #修改为BACKUP

#state MASTER #测试配置模式

interface eth0

virtual_router_id 52

 

priority 99 #配置优先级 #修改优先级

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

172.16.21.101 #配置虚拟IP地址

}

track_script {

chk_schedown

chk_nginx #执行chk_nginx脚本

}

#增加以下三行

notify_master "/etc/keepalived/notify.sh -n master -a 172.16.21.101"

notify_backup "/etc/keepalived/notify.sh -n backup -a 172.16.21.101"

notify_fault "/etc/keepalived/notify.sh -n fault -a 172.16.21.101"

}

 

 

#virtual_server 172.16.21.100 80 {

# delay_loop 6

# lb_algo rr

# lb_kind DR

# nat_mask 255.255.255.0

# #persistence_timeout 50

# protocol TCP

#

# real_server 172.16.21.15 80 { #配置realaserver

# weight 1

# HTTP_GET {#监控配置

# url {

# path /

# #digest ff20ad2481f97b1754ef3e12ecd3a9cc

#     status_code 200

# }

#

# connect_timeout 3

# nb_get_retry 3

# delay_before_retry 1

# }

# }

# real_server 172.16.21.16 80 { #配置realaserver

# weight 1

# HTTP_GET {#监控配置

# url {

# path /

# #digest ff20ad2481f97b1754ef3e12ecd3a9cc

# status_code 200

# }

#

# connect_timeout 3

# nb_get_retry 3

# delay_before_retry 1

# }

# }

# sorry_server 127.0.0.1 80 #增加一行sorry_server

#}

#

#

#virtual_server 172.16.21.101 80 {

# delay_loop 6

# lb_algo rr

# lb_kind DR

# nat_mask 255.255.255.0

# #persistence_timeout 50

# protocol TCP

#

# real_server 172.16.21.15 80 { #配置realaserver

# weight 1

# HTTP_GET {#监控配置

# url {

# path /

# #digest ff20ad2481f97b1754ef3e12ecd3a9cc

# status_code 200

# }

#

# connect_timeout 3

# nb_get_retry 3

# delay_before_retry 1

# }

# }

# real_server 172.16.21.16 80 { #配置realaserver

# weight 1

# HTTP_GET {#监控配置

# url {

# path /

# #digest ff20ad2481f97b1754ef3e12ecd3a9cc

# status_code 200

# }

#

# connect_timeout 3

# nb_get_retry 3

# delay_before_retry 1

# }

# }

# sorry_server 127.0.0.1 80 #增加一行sorry_server

#}

#

 

#virtual_server#10.10.10.2 1358 {

# delay_loop 6

# lb_algo rr

# lb_kind NAT

# persistence_timeout 50

# protocol TCP

 

# sorry_server 192.168.200.200 1358

 

# real_server 192.168.200.2 1358 {

# weight 1

# HTTP_GET {

# url {

# path /testurl/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334d

# }

# url {

# path /testurl2/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334d

# }

# url {

# path /testurl3/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334d

# }

# connect_timeout 3

# nb_get_retry 3

# delay_before_retry 3

# }

# }

 

# real_server 192.168.200.3 1358 {

# weight 1

# HTTP_GET {

# url {

# path /testurl/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334c

# }

# url {

# path /testurl2/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334c

# }

# connect_timeout 3

# nb_get_retry 3

# delay_before_retry 3

# }

# }

#}

 

#virtual_server#10.10.10.3 1358 {

# delay_loop 3

# lb_algo rr

# lb_kind NAT

# nat_mask 255.255.255.0

# persistence_timeout 50

# protocol TCP

 

# real_server 192.168.200.4 1358 {

# weight 1

# HTTP_GET {

# url {

# path /testurl/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334d

# }

# url {

# path /testurl2/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334d

# }

# url {

# path /testurl3/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334d

# }

# connect_timeout 3

# nb_get_retry 3

# delay_before_retry 3

# }

# }

 

# real_server 192.168.200.5 1358 {

# weight 1

# HTTP_GET {

# url {

# path /testurl/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334d

# }

# url {

# path /testurl2/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334d

# }

# url {

# path /testurl3/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334d

# }

# connect_timeout 3

# nb_get_retry 3

# delay_before_retry 3

# }

# }

#}

 

node18:同样也是沿用apache+lvs+keepalived的节点node17上keepalived相关配置,稍作修改,着色说明需要加上

 

[root@node18 keepalived]# cat keepalived.conf

! Configuration File for keepalived

 

global_defs {

notification_email {

    root@node17.stu21.com

    root@node18.stu21.com #配置管理员邮箱

}

notification_email_from kaadmin@stu21.com #配置发件人

smtp_server 127.0.0.1 #配置邮件服务器

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_script chk_schedown {

script "[ -e /etc/keepalived/down ] && exit 1 || exit 0"

interval 1

weight -5

fall 2

rise 1

}

    vrrp_script chk_nginx {

        script "killall -0 nginx"

        interval 1

        weight -5

        fall 2

        rise 1

}

 

vrrp_instance VI_1 {

state BACKUP #配置模式 #修改为BACKUP

# state MASTER #测试配置模式

interface eth0

virtual_router_id 51

priority 99 #配置优先级 #修改优先级

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

172.16.21.100 #配置虚拟IP地址

}

track_script {

chk_schedown

chk_nginx #执行chk_nginx脚本

}

#增加以下三行

notify_master "/etc/keepalived/notify.sh -n master -a 172.16.21.100"

notify_backup "/etc/keepalived/notify.sh -n backup -a 172.16.21.100"

notify_fault "/etc/keepalived/notify.sh -n fault -a 172.16.21.100"

}

 

vrrp_instance VI_2 {

#state BACKUP #配置模式 #修改为BACKUP

state MASTER #测试配置模式

interface eth0

virtual_router_id 52

 

priority 101 #配置优先级 #修改优先级

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

172.16.21.101 #配置虚拟IP地址

}

track_script {

chk_schedown

chk_nginx #执行chk_nginx脚本

}

#增加以下三行

notify_master "/etc/keepalived/notify.sh -n master -a 172.16.21.101"

notify_backup "/etc/keepalived/notify.sh -n backup -a 172.16.21.101"

notify_fault "/etc/keepalived/notify.sh -n fault -a 172.16.21.101"

}

 

 

#virtual_server 172.16.21.100 80 {

# delay_loop 6

# lb_algo rr

# lb_kind DR

# nat_mask 255.255.255.0

# #persistence_timeout 50

# protocol TCP

#

# real_server 172.16.21.15 80 { #配置realaserver

# weight 1

# HTTP_GET {#监控配置

# url {

# path /

# #digest ff20ad2481f97b1754ef3e12ecd3a9cc

#     status_code 200

# }

#

# connect_timeout 3

# nb_get_retry 3

# delay_before_retry 1

# }

# }

# real_server 172.16.21.16 80 { #配置realaserver

# weight 1

# HTTP_GET {#监控配置

# url {

# path /

# #digest ff20ad2481f97b1754ef3e12ecd3a9cc

# status_code 200

# }

#

# connect_timeout 3

# nb_get_retry 3

# delay_before_retry 1

# }

# }

# sorry_server 127.0.0.1 80 #增加一行sorry_server

#}

#

#virtual_server 172.16.21.101 80 {

# delay_loop 6

# lb_algo rr

# lb_kind DR

# nat_mask 255.255.255.0

# #persistence_timeout 50

# protocol TCP

#

# real_server 172.16.21.15 80 { #配置realaserver

# weight 1

# HTTP_GET {#监控配置

# url {

# path /

# #digest ff20ad2481f97b1754ef3e12ecd3a9cc

# status_code 200

# }

#

# connect_timeout 3

# nb_get_retry 3

# delay_before_retry 1

# }

# }

# real_server 172.16.21.16 80 { #配置realaserver

# weight 1

# HTTP_GET {#监控配置

# url {

# path /

# #digest ff20ad2481f97b1754ef3e12ecd3a9cc

# status_code 200

# }

#

# connect_timeout 3

# nb_get_retry 3

# delay_before_retry 1

# }

# }

# sorry_server 127.0.0.1 80 #增加一行sorry_server

#}

#

 

#virtual_server#10.10.10.2 1358 {

# delay_loop 6

# lb_algo rr

# lb_kind NAT

# persistence_timeout 50

# protocol TCP

 

# sorry_server 192.168.200.200 1358

 

# real_server 192.168.200.2 1358 {

# weight 1

# HTTP_GET {

# url {

# path /testurl/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334d

# }

# url {

# path /testurl2/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334d

# }

# url {

# path /testurl3/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334d

# }

# connect_timeout 3

# nb_get_retry 3

# delay_before_retry 3

# }

# }

 

# real_server 192.168.200.3 1358 {

# weight 1

# HTTP_GET {

# url {

# path /testurl/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334c

# }

# url {

# path /testurl2/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334c

# }

# connect_timeout 3

# nb_get_retry 3

# delay_before_retry 3

# }

# }

#}

 

#virtual_server#10.10.10.3 1358 {

# delay_loop 3

# lb_algo rr

# lb_kind NAT

# nat_mask 255.255.255.0

# persistence_timeout 50

# protocol TCP

 

# real_server 192.168.200.4 1358 {

# weight 1

# HTTP_GET {

# url {

# path /testurl/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334d

# }

# url {

# path /testurl2/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334d

# }

# url {

# path /testurl3/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334d

# }

# connect_timeout 3

# nb_get_retry 3

# delay_before_retry 3

# }

# }

 

# real_server 192.168.200.5 1358 {

# weight 1

# HTTP_GET {

# url {

# path /testurl/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334d

# }

# url {

# path /testurl2/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334d

# }

# url {

# path /testurl3/test.jsp

# digest 640205b7b0fc66c1ea91c463fac6334d

# }

# connect_timeout 3

# nb_get_retry 3

# delay_before_retry 3

# }

# }

#}

 

 

 

Nginx +keepalived的更多相关文章

  1. Nginx+keepalived双机热备(主主模式)

    之前已经介绍了Nginx+Keepalived双机热备的主从模式,今天在此基础上说下主主模式的配置. 由之前的配置信息可知:master机器(master-node):103.110.98.14/19 ...

  2. Nginx+keepalived双机热备(主从模式)

    负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行.关于负载均衡介绍,可以参考:linux负载 ...

  3. Nginx+Keepalived实现 转载

    一.Keepalived简介 keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Keepalived的作用是检测web服务 ...

  4. Nginx+Keepalived主主负载均衡服务器

    Nginx+keepalived主主负载均衡服务器测试实验环境: 主Nginx之一:192.168.11.27主Nginx之二:192.168.11.28Web服务器一:192.168.11.37We ...

  5. 架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层

    1.概述 前两遍文章中,我们一直在说后文要介绍Nginx + Keepalived的搭建方式.这篇文章开始,我们就来兑现前文的承诺,后续的两篇文章我们将介绍Nginx + Keepalived和 LV ...

  6. nginx+keepalived双主高可用负载均衡

    实验环境及软件版本:CentOS版本: 6.6(2.6.32.-504.el6.x86_64)nginx版本: nginx-1.6.3keepalived版本:keepalived-1.2.7 主LB ...

  7. Nginx+keepalived实现负载均衡

    Nginx的优点是: 1.工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名.目录结构,它的正则规则比HAProxy更为强大和灵活,这也是它目前广泛流行的主要原因之一,Nginx ...

  8. Nginx+keepalived做双机热备加tomcat负载均衡

    Nginx+keepalived做双机热备加tomcat负载均衡 环境说明: nginx1:192.168.2.47 nginx2:192.168.2.48 tomcat1:192.168.2.49 ...

  9. Nginx+Keepalived主备切换(包含nginx服务停止)

    原文地址:http://blog.sina.com.cn/s/blog_79ac6aa80101bmed.html Nginx+Keepalived主备切换(包含nginx服务停止) 环境: VM中4 ...

随机推荐

  1. C++编程练习(14)-------“单例模式”的实现

    原文:http://blog.csdn.net/oohaha_123/article/details/25190833 单例模式 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例 ...

  2. 分享10款常用的jQuery焦点图插件

    爱编程一直在收集整理编程相关的知识和解决方案,今天小编为大家带来10款非常常用的jquery焦点图插件. 1.jQuery可自动播放动画的焦点图插件 之前我们已经分享过很多非常实用的jQuery焦点图 ...

  3. chrome打不开12306

    chrome打不开12306怎么办?chrome怎么会打不开12306? chrome打不开12306: 1.没有安装12306网站的根证书. 2.打开https://dynamic.12306.cn ...

  4. No Entertainment!

    今天决定去打印一个“No Entertainment”的横幅,贴在电脑的旁边.这其实是很久以前的事了,却搁浅到了现在.也正因为如此,今天想起来也觉得格外刻不容缓,内心好似义愤填膺,便写下这愤慨的独白. ...

  5. 多线程和并发管理 .NET多线程服务

    线程相关静态变量 默认静态变量应用程序域所有线程可见.如果静态变量需要在线程间共享,同步访问也就必然了. 线程相关静态变量保证线程安全,同一时间只有一个线程可访问,且每个线程都有该静态变量的拷贝. p ...

  6. Keywords Search

    Keywords Search Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  7. Java Collection集合接口

    Collection接口是赖以集合框架建立的基础.它声明的所有集合的核心方法.这些方法概括于下表中. 因为所有集合都要实现Collection,熟悉它的方法是对框架有清晰的认识很有必要.这几种方法都可 ...

  8. Android小项目之五 splash动画效果

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...

  9. CMP指令(转)

    刚刚看到了cmp指令,一开始有点晕.后来上网找了些资料,终于看明白了,为了方便初学者,我就简单写下我的思路吧.高手绕过,谢谢! cmp(compare)指令进行比较两个操作数的大小 例:cmp opr ...

  10. C#调用C++的DLL搜集整理的所有数据类型转换方式

    //C#调用C++的DLL搜集整理的所有数据类型转换方式,可能会有重复或者多种方案,自己多测试 //c++:HANDLE(void *) ---- c#:System.IntPtr //c++:Byt ...