原理为:
调度器 利用 keepalived 保持高可用性,实现对系统的监控和VIP 的floating
NGINX 利用upstream模块进行调度
关键点:
keepalived 对NGINX 状态的监控: //利用配置文件中设定的脚本对调度器的nginx 进程的监控
实验步骤:
基于上一篇LVS-DR架构来做,具体LVS-DR架构请参考上一篇
-
先设置主备单VIP 式LVS架构
-
调度器分别安装nginx
#yum install nginx -y
-
修改配置文件,填加反代设置 /etc/nginx/nginx.conf
upstream websrvs{
server 172.18.48.63:80 ;
server 172.18.48.64:80 ;
server 127.0.0.1:80 backup;
}
注:这里是最基本的配置
location / {
proxy_pass http://websrvs;
}
-
配置keepalived 配置文件
订制监控脚本:
vrrp_script nginxstatus {
script “kill -0 nginx && exit 0 || exit 1”
interval 1
weight -5
}
调用脚本:
track_script {
nginxstatus
}
-
启动 nginx 和 keepalived 服务
service nginx start
service keepalived start
-
测试链接:
-
循环链接测试
-
-
现在构建双主模型 // 即再次配置一套keepalived
- 备调度器设置
从调度器设置
重新启动keepalived
#service keepalived restart
VIP分布:
测试链接:
-
现在停掉一个调度器中的nginx服务:
- VIP地址 已经转移;再次链接实验
- 再次链接: //成功
-
-
现在测验nginx 的调度算法为ip_hash 时,VIP Floating 会不会带来影响:
预想应该不会受影响,nginx 的哈希算法不变的话就不会变
- 注: ip_hash 不能于backup 共存,
-
官方说明:
If one of the servers needs to be temporarily removed, it should be marked with the down parameter in order to preserve the current hashing of client IP addresses.
-
重启服务:
service nginx restart
-
链接测试:
双调度器都在线时:
-
停掉149 的nginx 服务时:
测试链接:
-
149 nginx 服务重启后:
-
-
测试链接:
- 148测试也没有变化:
思考题
nginx使用ip_hash或hash $request_uri算法时,故障切换后,同一个客户端是否依然能关联至此前绑定的upstream server;
答:由于hash 时nginx 根据预定的算法进行的计算,所以只要IP和请求资源不变,被调度的地址就不会变
原创文章,作者:zhoulz,如若转载,请注明出处:http://www.178linux.com/75428