Nginx +keepalived
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的更多相关文章
- Nginx+keepalived双机热备(主主模式)
之前已经介绍了Nginx+Keepalived双机热备的主从模式,今天在此基础上说下主主模式的配置. 由之前的配置信息可知:master机器(master-node):103.110.98.14/19 ...
- Nginx+keepalived双机热备(主从模式)
负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行.关于负载均衡介绍,可以参考:linux负载 ...
- Nginx+Keepalived实现 转载
一.Keepalived简介 keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Keepalived的作用是检测web服务 ...
- Nginx+Keepalived主主负载均衡服务器
Nginx+keepalived主主负载均衡服务器测试实验环境: 主Nginx之一:192.168.11.27主Nginx之二:192.168.11.28Web服务器一:192.168.11.37We ...
- 架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层
1.概述 前两遍文章中,我们一直在说后文要介绍Nginx + Keepalived的搭建方式.这篇文章开始,我们就来兑现前文的承诺,后续的两篇文章我们将介绍Nginx + Keepalived和 LV ...
- nginx+keepalived双主高可用负载均衡
实验环境及软件版本:CentOS版本: 6.6(2.6.32.-504.el6.x86_64)nginx版本: nginx-1.6.3keepalived版本:keepalived-1.2.7 主LB ...
- Nginx+keepalived实现负载均衡
Nginx的优点是: 1.工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名.目录结构,它的正则规则比HAProxy更为强大和灵活,这也是它目前广泛流行的主要原因之一,Nginx ...
- Nginx+keepalived做双机热备加tomcat负载均衡
Nginx+keepalived做双机热备加tomcat负载均衡 环境说明: nginx1:192.168.2.47 nginx2:192.168.2.48 tomcat1:192.168.2.49 ...
- Nginx+Keepalived主备切换(包含nginx服务停止)
原文地址:http://blog.sina.com.cn/s/blog_79ac6aa80101bmed.html Nginx+Keepalived主备切换(包含nginx服务停止) 环境: VM中4 ...
随机推荐
- c++ 设计模式3 (重构技法 Template Method)
1. 重构 面向对象设计模式是“好的面向对象设计”,所谓“好的面向对象设计”指的是那些可以满足 “应对变化,提高复用”的设计. 设计模式的要点是“寻找变化点,然后在变化点处应用设计模式,从而更好地理解 ...
- 沈逸老师PHP魔鬼特训笔记(3)
一.由于上两节课我们把程序放到了/usr/local/bin里面.每次编辑需要sudo .这节课我们使用PHPSTORM来编辑代码,专门把它拷贝出来,然后放到一个叫做home/godpro的文件夹下. ...
- In-Memory:Hash Index
SQL Server 2016支持哈希查找,用户可以在内存优化表(Memory-Optimized Table)上创建Hash Index,使用Hash 查找算法,实现数据的极速查找.在使用上,Has ...
- uva 11234 Expressions 表达式 建树+BFS层次遍历
题目给出一个后缀表达式,让你求从下往上的层次遍历. 思路:结构体建树,然后用数组进行BFS进行层次遍历,最后把数组倒着输出就行了. uva过了,poj老是超时,郁闷. 代码: #include < ...
- 精通CSS高级Web标准解决方案(1-2 层叠与特殊性)
层叠与特殊性 选择器的特殊性分成四个等级,a.b.c . d 如果样式是行内样式,那么a=1 b=ID选择器的总数 c=类.伪类.属性选择器的总数 d=标签选择器与伪元素选择器数量 例如:style ...
- java实现https,https接口请求
/**********************https 接口'*******************/ /** * 安全证书管理器 */public class MyX509TrustManager ...
- WingIde的快捷键
tab:自动补全 Alt+1:打开所有折叠 Alt+2:折叠所有classes Alt+3:折叠所有函数和类 Alt+Backspace:删除光标所在单词的光标前的部分 ...
- Evaluation
precision是tp/(tp+fp),检索结果中正确的比例 recall是tp/(tp+fn),所有需要被检索出来的比例 1.真实情况:恶性,检查结果:恶性,这种情况就叫做:true positv ...
- Backbone.js学习之Model
首先,我们看一下官方文档中对Model的解释(或者说定义): Models are the heart of any JavaScript application, containing the in ...
- PAT1014——福尔摩斯的约会
大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”.大侦探很快就明白了,字条 ...