您的位置:首页 > 运维架构 > Nginx

NginX+keepalived实现高可用 推荐

2015-12-29 16:37 651 查看
Nginx+keepalived实现高可用1、规划准备
操作系统: Centos6.7_x86_64
主机名称
服务器地址
角色状态
服务
vip地址
Jason1
10.18.199.176
MASTER
nginx
10.18.199.106
Jason2
10.18.199.180
BACKUP
nginx
2、安装keepalived与nginx
在两个节点上均安装keepalived与nginx软件。
Nginx安装
tar zxvf nginx-1.6.3.tar.gz
cd nginx-1.6.3
./configure--sbin-path=/usr/local/nginx/nginx--conf-path=/usr/local/nginx/nginx.conf--pid-path=/usr/loacal/nginx/nginx.pid--with-http_ssl_module--with-http_realip_module--with-http_sub_module--with-http_gunzip_module --with-http_gzip_static_module--with-http_stub_status_module--with-openssl=../openssl-1.0.2d--with-pcre=../pcre-8.36--with-zlib=../zlib-1.2.8make
make install
nginx配置:
访问节点jasan1页面时显示




访问节点jasan2页面时显示




Keepalived安装
tarzxvf keepalived-1.2.19.tar.gzcd keepalived-1.2.19./configure --prefix=/usr/local/keeplivedMakemakeinstallcd/usr/local/keeplived/etc/cp-rp sysconfig/keepalived /etc/sysconfig/cp-rp keepalived /etc/cp -rp rc.d/init.d/keepalived /etc/init.d3、配置keepalived
master:
global_defs{
notification_email {
client@examge.com
}
notification_email_from admin@examge.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id lvs_ha
}
vrrp_scriptchk_http_port {
script"</dev/tcp/127.0.0.1/80"
interval 1
}
vrrp_instance VI_1 {
state master
nopreempt
interface eth0
virtual_router_id 50
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.18.199.106
}
track_script {
chk_http_port
}
}
backup:
global_defs{
notification_email {
client@examge.com
}
notification_email_fromadmin@examge.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id lvs_ha
}
vrrp_scriptchk_http_port {
script"</dev/tcp/127.0.0.1/80"
interval 1
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 50
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.18.199.106
}
track_script {
chk_http_port
}
}
4、测试
(1)启动keepalived
查看日志jason1为master状态,jason2为backup状态,飘移地址位于jason1上。
jason1:


查看vip



jason2:


通过vip地址访问站点显示



(2)、关闭jason1节点nginx
关闭主机nginx,keepalived检测到httpd失败,由master状态转为fault状态,发生切换。
jason1:



jason2:
状态由backup转为master,并添加漂移地址。


查看vip



刷新访问106的页面显示如下:



(3)、恢复jason1节点nginx
重新启动nginx,jason1主机仍未backup状态,jason2主机仍为master,角色未发生切换。这是因为jason1主机配置文件中设置了nopreempt,当资源恢复时不发生切回。
jason1:
keepalived检测到htppd正常,状态由fault转换为backup。


jason2:
日志没有任何变化,vip仍然在jason2上,jason2节点仍为master。



刷新访问106页面,未发生切换。



(4)、关闭jason2节点nginx
jason1:jason1节点由backup状态转换为master状态。


jason2:keepalived检测到httpd失败,由master状态转为fault状态,发生切换。


访问vip地址页面显示如下:



(5)、恢复jason2节点nginx
jason1:日志没有任何变化,vip仍然在jason1上,jason1节点仍为master。
jason2:keepalived检测到htppd正常,状态由fault转换为backup。



备注:
(1)、关闭、重启服务器、关闭keepalived软件同样会发生切换,这里没有进行测试,重点测试了资源失败进行切换状态分析。
(2)、资源的状态检测有多种方法,可以根据自己的实际情况编写脚本。以下为举列常见的检测方法。
通过killall命令探测服务运行状态。

vrrp_script chk_http {
script "killall -0 nginx"
interval 2
}
通过检测端口运行状态。
vrrp_script chk_http_port {
script "</dev/tcp/127.0.0.1/80"
interval 1
}
(3)、本实验vrrp_script中未使用weight参数。当设置weight参数之后,当master资源失败后可以切换至备机,当主机恢复资源后不发生切换,但是当备机资源失败时不会发生切换。不知道什么原因,因此取消该参数,测试切换一切正常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  keepalived nginx HA