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

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

内容简介: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


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

查看所有标签

猜你喜欢:

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

Impractical Python Projects

Impractical Python Projects

Lee Vaughan / No Starch Press / 2018-11 / USD 29.95

Impractical Python Projects picks up where the complete beginner books leave off, expanding on existing concepts and introducing new tools that you’ll use every day. And to keep things interesting, ea......一起来看看 《Impractical Python Projects》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具