部署nginx高可用集群

一、引言

在之前几篇文章中,都是介绍了如何安装nginx,万一Nginx代理服务器挂掉了怎么办?后面的服务就都没有办法访问了,这是一个严重的问题。那怎么解决这个文件呢?这就是下面要说的Nginx的高可用集群,也可以叫双机热备。

但是部署nginx高可用集群,必须安装keepalived,具体步骤,见上篇文章。

二、Nginx 高可用集群

高可用集群的架构图

下面使用两台Nginx做反向代理服务器,当其中一台Nginx宕机之后,仍能用另一台来工作,两台Nginx之间用keeplived来监测心跳。

nginx集群同步文件工具 多台nginx集群方案_nginx集群同步文件工具

三、如何配置

1、需要的环境
两台 Linux 并各自安装 Nginx 和 keepalived

2、配置高可用的准备工作
(1)需要两台服务器 192.168.17.129 、192.168.17.131
(2)在两台服务器安装 Nginx(可以参考前面文章)
(3)在两台服务器安装 keepalived

3、两台服务器都安装 keepalived

keepalived 安装之后,其配置文件目录如下:

vim /usr/local/etc/keepalived/keepalived.conf

4、完成高可用配置(主从配置)
(1)修改配置文件`

vim /usr/local/etc/keepalived/keepalived.conf

`

global_defs {
	 notification_email {
		 acassen@firewall.loc
		 failover@firewall.loc
		 sysadmin@firewall.loc
	 }
	 notification_email_from Alexandre.Cassen@firewall.loc
	 #smtp_server 192.168.17.129
	  smtp_server 127.0.0.1
	 smtp_connect_timeout 30
 # 通过它,可以访问到主机,在hosts文件中,要做映射关系,类似于 127.0.0.1 LVS_DEVEL
	 router_id LVS_DEVEL  
}
vrrp_script chk_http_port {
	 script "/usr/local/src/nginx_check.sh"	 # 执行脚本所在的位置
	 interval 2 	#检测脚本执行的间隔,单位秒,每个2秒执行一次脚本
	 weight 2
}
vrrp_instance VI_1 {
	 state MASTER	 # 备份服务器上将 MASTER 改为 BACKUP
	 interface ens33	 # 绑定的网卡,有的是ens0,可用ifconfig查看虚拟Ip的绑定
	 virtual_router_id 51	 # 主、备机的 virtual_router_id 必须相同
	 priority 90 	# 主、备机取不同的优先级,主机值较大,备份机值较小
	 advert_int 1 	#每隔一秒发送一次心跳,确保从服务器是否还活着
	 authentication {		# 心跳检测需要的密码
		 auth_type PASS
		 auth_pass 1111
 	}
	 virtual_ipaddress {
	 192.168.17.50 	# VRRP H 虚拟地址,可以使用ifconfig,查看虚拟Ip的绑定
	 }
}

(2)在/usr/local/src 添加检测脚本,检查Nginx是否还活着

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`if [ $A -eq 0 ];then
 /usr/local/nginx/sbin/nginx 	#Nginx启动命令的位置
 sleep 2
 if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
 killall keepalived
 fifi

(3)把两台服务器上 nginx 和 keepalived 启动

启动 nginx:	./nginx
启动 keepalived:	service keepalived status/start/restart
PS:

可以使用ifconfig,查看虚拟Ip的绑定

5、最终测试

(1)在浏览器地址栏输入 虚拟 ip 地址 192.168.17.50 (VIP=virtual_ipaddress)

nginx集群同步文件工具 多台nginx集群方案_Nginx_02

(2)把主服务器上的(192.168.17.129)Nginx 和 keepalived 停止,再输入 192.168.17.50,依旧可以访问Nginx。

nginx集群同步文件工具 多台nginx集群方案_nginx集群同步文件工具_03

PS:

192.168.200.16/17/18,是虚拟IP(VIP), 此IP 是:

vim /usr/local/etc/keepalived/keepalived.conf

里面的virtual_ipaddress配置数据。

nginx集群同步文件工具 多台nginx集群方案_运维搭建环境_04

查看IP地址信息:
host1上 IP 地址信息

ip addr show eth0

抓包查看:

tcpdump -i eth0 vrrp -n

nginx集群同步文件工具 多台nginx集群方案_nginx_05

从抓包可以看出,服务器192.168.65.166和 192.168.65.167 都向外发送通告。