Keepalived+Nginx搭建高可用负载均衡集群

栏目: 服务器 · Nginx · 发布时间: 6年前

内容简介:Keepalived+Nginx搭建高可用负载均衡集群

前言

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

此架构需考虑的问题

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 命令来控制。

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

一、前期环境准备

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

Keepalived+Nginx搭建高可用负载均衡集群

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

Keepalived+Nginx搭建高可用负载均衡集群

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

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

Keepalived+Nginx搭建高可用负载均衡集群

机器IP规划如下:

Keepalived+Nginx搭建高可用负载均衡集群

二、后端apache的安装配置

apache1:

1、安装

[root@apache1 ~]# 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 opensslopenssl-devel libssl-dev libnl-devel popt-devel

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

2.安装nginx

yum install -y nginx

3.修改nginx的配置文件

yum install -y nginx

Keepalived+Nginx搭建高可用负载均衡集群

创建自定义配置文件

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

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

Keepalived+Nginx搭建高可用负载均衡集群

4.启动nginx

service nginx start

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

Keepalived+Nginx搭建高可用负载均衡集群

刷新一下

Keepalived+Nginx搭建高可用负载均衡集群

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

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

keepalived的安装与配置

机器上安装keepalived

yum install -y keepalived

2.修改keepalived配置文件

vim/etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

yangry@linuxidc.com

}

notification_email_fromyangry@linuxidc.com

smtp_server mail.linuxidc.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

实例

stateMASTER    #MASTER/BACKUP

interface eth1  ####HA 

监测网络接口

virtual_router_id 51  #

虚拟路由标识,是一个数字,同一个VRRP实例使用唯一的标识,master和backup要一样

priority100          #

用于主从模式,优先级主高于100,从低于100

advert_int1          #

主备之间的通告间隔秒数

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 

}

}

Keepalived+Nginx搭建高可用负载均衡集群

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.100netmask 255.255.255.0 up

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

Keepalived+Nginx搭建高可用负载均衡集群

在两台机器上分别重启nginx和keepalived做测试

service nginx restart

service keepalived restart

1.在master上可以看到

Keepalived+Nginx搭建高可用负载均衡集群

在backup上可以看到

Keepalived+Nginx搭建高可用负载均衡集群

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

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

Keepalived+Nginx搭建高可用负载均衡集群

在看此时的backup日志

Keepalived+Nginx搭建高可用负载均衡集群

显然已经成功把vip接管过来.

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

CentOS 7下Nginx服务器的安装配置 http://www.linuxidc.com/Linux/2017-04/142986.htm

CentOS上安装Nginx服务器实现虚拟主机和域名重定向 http://www.linuxidc.com/Linux/2017-04/142642.htm

CentOS 6.8 安装LNMP环境(Linux+Nginx+MySQL+PHP) http://www.linuxidc.com/Linux/2017-04/142880.htm

Linux下安装 PHP 环境并配置Nginx支持php-fpm模块 http://www.linuxidc.com/Linux/2017-05/144333.htm

Nginx服务的SSL认证和htpasswd认证 http://www.linuxidc.com/Linux/2017-04/142478.htm

Linux中安装配置Nginx及参数详解 http://www.linuxidc.com/Linux/2017-05/143853.htm

Nginx日志过滤 使用ngx_log_if不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm

CentOS 7.2下Nginx+PHP+MySQL+Memcache缓存服务器安装配置 http://www.linuxidc.com/Linux/2017-03/142168.htm

CentOS6.9编译安装Nginx1.4.7 http://www.linuxidc.com/Linux/2017-06/144473.htm

Nginx 的详细介绍 请点这里

Nginx 的下载地址 请点这里

本文永久更新链接地址 http://www.linuxidc.com/Linux/2017-06/144754.htm


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序设计语言

程序设计语言

斯科特 / 裘宗燕 / 电子工业出版社 / 2007-6 / 99.00元

★列为全球上百所大学标准教材和首席参考书! ★图书馆必备典藏,作者Michael L.Scott 是计算机领域的著名学者,译者是北京大学的裘宗燕教授,他熟悉专业,译笔流畅,因此,这是一本难得的著、译双馨的佳作。 这是一本很有特色的教材,其核心是讨论程序设计语言的工作原理和技术。本书融合了传统的程序设计语言教科书和编译教科书的有关知识,并增加了一些有关汇编层体系结构......一起来看看 《程序设计语言》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试