keepalived+nginx实现高可用and负载均衡集群

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keepalived+nginx实现高可用and负载均衡集群相关的知识,希望对你有一定的参考价值。

keepalived+nginx实现高可用and负载均衡集群

前言

生产环境需要,现需要搭建一个前端nginxHA双向互备、后端为nginx代理的loadbalance负载均衡集群。nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能。在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都 由主进程发出,Slave(worker)进程所有的超时任务都会被Master中止,属于非阻塞式任务模型。KeepalivedLinux下面实现VRRP 备份路由的高可靠性运行件。基于Keepalived设计的服务模式能够真正做到主服务器和备份服务器故障时IP瞬间无缝交接

此架构需考虑的问题
1Master没挂,则Master占有vipnginx运行在Master
2Master挂了,则backup抢占vip且在backup上运行nginx服务
3)如果master服务器上的nginx服务挂了,则vip资源转移到backup服务器上
4)检测后端服务器的健康状态
MasterBackup两边都开启nginx服务,无论Master还是Backup,当其中的一个keepalived服务停止后,vip都会漂移到keepalived服务还在的节点上,
如果要想使nginx服务挂了,vip也漂移到另一个节点,则必须用脚本或者在配置文件里面用shell命令来控制。

以下实验过程由难及易,易于上手,便于操作

一、 前期环境准备

1. 系统环境均为CentOS release 6.5 (Final)32位,均在虚拟机上成功实现。

技术分享

2. 所有的软件包均为yum方式安装yum源均在用阿里云服务器所使用的

技术分享

3. 避免后续不必要的麻烦,全都关闭防火墙

4. 本实验结构的拓扑图如下:

技术分享

5. 机器IP规划如下:

技术分享

、后端apache的安装配置
 apache1

1、安装

[[email protected] ~]# yum install -y httpd

2、建立测试网页文件

echo "this is apache1" > /var/www/html/index.html

3、开启服务

service httpd start

apache2

1、安装

yum -y install httpd

2、建立测试网页文件

echo "this is apache2" > /var/www/html/index.html

3、开启服务

service httpd start

三、 Nginx安装与配置

1安装环境所需依赖包

yum -y install gcc gcc+ gcc-c++

yum install popt-devel openssl openssl-devel libssl-dev libnl-devel popt-devel

yum install -y net-snmp.x86_64 net-snmp-devel.x86_64

2.安装nginx

yum install -y nginx

3.修改nginx的配置文件

yum install -y nginx

技术分享 

创建自定义配置文件

mkdir /etc/nginx/conf.d/extra/

vim /etc/nginx/conf.d/extra/yang.conf

技术分享 

4.启动nginx

service nginx start

此时可以在浏览器测试一下输入IP:192.168.1.135

技术分享 

刷新一下

技术分享 

这一台nginx已经配置成功,在另外一台机器上同样的方式配置nginx,这里不再赘述

以上配置文件里的内容虽然稀少,但都是重要部分,以后用的到的功能逐渐添加。

 

四、 keepalived的安装与配置

1.master机器上安装keepalived

yum install -y keepalived

2. 修改keepalived配置文件

vim /etc/keepalived/keepalived.conf 

! Configuration File for keepalived

global_defs {
   notification_email {
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server mail.shiwei.com
   smtp_connect_timeout 30
   router_id LVS_MASTER1  #表示运行keepalived服务器的一个标识,发邮件时显示在邮件主题中的信息
}
vrrp_script chk_http_port {
script "/usr/local/keepalived/nginx.sh" ####检测nginx状态的脚本链接
interval 2
weight 2
}
vrrp_instance VI_2 {   #vrrp实例
    state MASTER     #MASTER/BACKUP
    interface eth1   ####HA 监测网络接口
    virtual_router_id 51  #虚拟路由标识,是一个数字,同一个VRRP实例使用唯一的标识,master和backup要一样
    priority 100          #用于主从模式,优先级主高于100,从低于100
    advert_int 1           #主备之间的通告间隔秒数
    authentication {        #认证用于主从模式,mater和backup配置一样
        auth_type PASS          ###主备切换时的验证
        auth_pass 1111          #密码
    }
track_script {
chk_http_port ### 执行监控的服务
}
    virtual_ipaddress {
      
 192.168.1.100 dev eth1 label eth1:0   ###########虚拟ip 
    }
}

技术分享 

3.编写nginx检测脚本

vim /usr/local/keepalived/nginx.sh

if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then

killall keepalived

fi

一定要记得赋予其可执行权限哦

chmod +x /usr/local/keepalived/nginx.sh

另外一台backup机器上同样操作,注意/etc/keepalived/keepalived.conf修改的地方如下

state BACKUP

priority 99(一定要比master值要小)

五、 手动添加一个虚拟IP

分别master和backup上执行以下命令:

ifconfig eth1:0 192.168.1.100 netmask 255.255.255.0 up

然后查看,就会有两个IP了

 技术分享

六、 在两台机器上分别重启nginxkeepalived做测试

service nginx restart

service keepalived restart

1.在master上可以看到

技术分享 

backup上可以看到

技术分享 

看日志可以看出,两台服务器的 MASTRE  BACUKUP 已经都正常了

 

2.当我手动master上的nginx停掉,可以看到master日志

技术分享 

在看此时的backup日志

技术分享 

显然已经成功vip接管过.

自此本实验已经成功完成。


本文出自 “清淼淡写” 博客,请务必保留此出处http://qingmiao.blog.51cto.com/7286083/1885996

以上是关于keepalived+nginx实现高可用and负载均衡集群的主要内容,如果未能解决你的问题,请参考以下文章

nginx + keepalived 实现高可用性

nginx和keepalived实现nginx高可用

Nginx+Keepalived实现站点高可用

Nginx+Keepalived实现站点高可用

Nginx+Keepalived实现站点高可用

Nginx+Keepalived实现Nginx高可用