keepalived+nginx实现nginx的高可用
=================================
nginx的高可用
nginx实现后端realserver的负载均衡
==================================
实验环境:
OS:Centos 6.4(redhat 6.4)
yum源:
[centos] name=sohu-centos baseurl=http://mirrors.sohu.com/centos/$releasever/os/$basearch gpgcheck=1 enable=0 gpgkey=http://mirrors.sohu.com/centos/RPM-GPG-KEY-CentOS-6 [epel] name=sohu-epel baseurl=http://mirrors.sohu.com/fedora-epel/$releasever/$basearch/ enable=1 gpgcheck=0 |
拓扑图:
拓扑图的规划:
IP地址 |
软件 |
|
Master |
172.16.22.1(VIP:172.16.22.100) |
keepalived+nginx |
Backup |
172.16.22.2(VIP:172.16.22.100) |
keepalived+nginx |
apache1 |
172.16.22.3 |
httpd |
apache2 |
172.16.22.4 |
httpd |
此架构需考虑的问题
1)、Master没挂,则Master占有vip且nginx运行在Master上
2)、Master挂了,则backup抢占vip且在backup上运行nginx服务
3)、如果master服务器上的nginx服务挂了,则vip资源转移到backup服务器上
4)、检测后端服务器的健康状态
Master和Backup两边都开启nginx服务,无论Master还是Backup,当其中的一个keepalived服务停止后,vip都会漂移到keepalived服务还在的节点上,
如果要想使nginx服务挂了,vip也漂移到另一个节点,则必须用脚本或者在配置文件里面用shell命令来控制。
首先必须明确后端服务器的健康状态检测keepalived在这种架构上是无法检测的,后端服务器的健康状态检测是有nginx来判断的,但是nginx的检测机制有一定的缺陷,后端服务器某一个宕机之后,nginx还是会分发请求给它,在一定的时间内后端服务响应不了,nginx则会发给另外一个服务器,然后当客户的请求来了,nginx会一段时间内不会把请求分发给已经宕机的服务器,但是过一段时间后,nginx还是会把分发请求发给宕机的服务器上。
一、安装keepalived+nginx
Master:
1、安装keepalived和编译安装nginx
2、提供nginx的system V服务脚本文件
3、修改配置文件