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. 1.     系统环境均为CentOS release 6.5 (Final)32位,均在虚拟机上成功实现。

wKiom1hftqfxG2t1AAAGYjpikTQ080.png

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

wKioL1hftraDorpdAAAQ9lqeEJo675.png

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

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

wKioL1hfttPxmHF4AAEvSgnSbFA053.png

  1. 机器IP规划如下:

wKiom1hftuKj30bJAAALG__xOjY227.png

二、后端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

wKioL1hftvmAN90NAAAcYKhhLyA794.png

创建自定义配置文件

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

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

wKiom1hftw-y5lFVAAAU2YHTF8I698.png

4.启动nginx

service nginx start

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

wKiom1hftyDjP6FDAAAsWr4KXTE030.png

刷新一下

wKioL1hfty_TO5c_AAAsMcH1MmY653.png

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

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

 

  • keepalived的安装与配置

  • 机器上安装keepalived

yum install -y keepalived

2.修改keepalived配置文件

vim/etc/keepalived/keepalived.conf 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
! Configuration File for keepalived
global_defs {
    notification_email {
      yangry@shiwei.com
    }
    notification_email_fromyangry@shiwei.com
    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
实例
     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 
     }
}


wKioL1hft1LTAFeGAAAyzACe_uI578.png

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了

 wKiom1hft2bycUafAAAOJZ33tHE831.png

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

service nginx restart

service keepalived restart

  1. 1.在master上可以看到

wKioL1hft3TCvGPYAABQTQnVuI4291.png

在backup上可以看到

wKiom1hft4viYHSgAABAXyDxoXM998.png

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


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

wKioL1hft6fz17_RAAAceX89JyM645.png

在看此时的backup日志

wKiom1hft7mApJmwAAAwe54SNrg211.png

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

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



本文转自 青苗飞扬 51CTO博客,原文链接:http://blog.51cto.com/qingmiao/1886000

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
9天前
|
负载均衡 算法 应用服务中间件
面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
27 0
|
2月前
|
负载均衡 应用服务中间件 Linux
高可用系列文章之三 - NGINX 高可用实施方案
高可用系列文章之三 - NGINX 高可用实施方案
|
2月前
|
负载均衡 Java 应用服务中间件
|
2月前
|
存储 缓存 运维
解密一致性哈希算法:实现高可用和负载均衡的秘诀
解密一致性哈希算法:实现高可用和负载均衡的秘诀
130 0
|
2月前
|
负载均衡 监控 应用服务中间件
Nginx负载均衡:你的网站流量翻倍利器
Nginx负载均衡:你的网站流量翻倍利器
42 0
|
2月前
|
消息中间件 关系型数据库 MySQL
使用Nginx的stream模块实现MySQL反向代理与RabbitMQ负载均衡
使用Nginx的stream模块实现MySQL反向代理与RabbitMQ负载均衡
60 0
|
3月前
|
缓存 负载均衡 算法
【Nginx】Nginx 负载均衡
【1月更文挑战第25天】【Nginx】Nginx 负载均衡
|
3月前
|
负载均衡 应用服务中间件 nginx
【实践】使用Nginx作为GrayLog日志接入的负载均衡
【实践】使用Nginx作为GrayLog日志接入的负载均衡
44 0
|
3月前
|
负载均衡 应用服务中间件 nginx
百度搜索:蓝易云【Nginx和tomcat实现负载均衡教程】
至此,你已经成功地使用Nginx和Tomcat实现了负载均衡。Nginx将根据配置的负载均衡策略将客户端请求分发到多个Tomcat服务器上,以提高系统的性能和可用性。请注意,在实际生产环境中,还需要进行其他配置和优化,如健康检查、会话保持等,以满足具体的需求。
34 0
|
3月前
|
负载均衡 安全 前端开发
百度搜索:蓝易云【Nginx与Tomcat负载均衡-动静分离教程】
这些是将Nginx与Tomcat结合使用实现负载均衡和动静分离的基本步骤。根据您的需求和具体环境,可能还需要进行其他配置和调整。请确保在进行任何与网络连接和安全相关的操作之前,详细了解您的网络环境和安全需求,并采取适当的安全措施。
48 1