[高可用web服务器集群]Nginx/高可用服务器搭建

[高可用web服务器集群]Nginx/高可用服务器搭建 - 1

所处层

服务器类型

IP

备注

Storage

NFS主服务器

172.16.1.20

web集群提供文件存储与共享服务,使各web服务器中的web程序数据能够同步

NFS备份服务器

172.16.1.21

该服务器为NFS服务器的备份服务器,使用rsync+ inotify与主NFS服务器进行数据同步,在主NFS服务器宕机\数据被破坏时将web服务器集群挂载切换到该服务器,能够得到相应补救

Mysql主服务器

172.16.1.10

web集群提供数据库写入服务,使用mariadbmaster/slave架构进行读写分离,提高数据库稳定性

Mysql从服务器

172.16.1.11

web集群提供数据读取服务

Server Array

Web服务器0

172.16.1.30

Nginx+xcache架构,挂载NFS主服务器共享目录,Web应用程序为Thinkphp自带读写分离,链接172.16.1.10-11两台服务器,xcache提供PHP编译缓存加速访问速度

Web服务器1

172.16.1.31

同上

Load Blance

Nginx反向代理主服务器

内:172.16.1.1

外:8.8.8.6

Nginx负载均衡+keepalived架构,Nginx反向代理内网web服务器并配置负载均衡,keepalived一旦检测到NGINX服务停止便使用vrrp协议向备用服务器发送组播通告将VIP-8.8.8.8绑定到备用服务器

Nginx反向代理备服务器

内:172.16.1.2

外:8.8.8.7

作用同上

Redis服务器

172.16.1.32

Redis服务器负责两台web服务器的session共享服务,保证用户访问负载均衡服务器能够拥有相同的session

负载均衡简述
负载平衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁碟驱动器或其他资源中分配负载,以达到最佳化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。
使用带有负载平衡的多个伺服器组件,取代单一的组件,可以通过冗余提高可靠性。负载平衡服务通常是由专用软體和硬體来完成。
keepalived简述
Keepalived的作用是检测服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

高可用服务器0:

hostname highAvailableServer0
yum -y update
yum -y install epel-release

#nginx配置 反向代理+负载均衡配置
yum -y install nginx
vim /etc/nginx/nginx.conf
##http下面添加cache保存目录
http{
	proxy_cache_path /tmp/nginx/cache levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=50m;
}
##添加upstream服务器组
upstream webCluster{
	server 172.16.1.30;
	server 172.16.1.31;
	server 127.0.0.1:8080 backup;
}
##反向代理web服务器集群
server {
	listen 80;
	location / {
		proxy_pass http://webCluster/;
		proxy_connect_timeout 1;
		proxy_read_timeout 1;
		proxy_send_timeout 1;
		proxy_cache STATIC;
		proxy_cache_valid 200 1d;
	}
}
##定义错误显示服务器
server {
	listen 8080;
	root /web/error/;
	index index.html;
}
systemctl enable nginx
systemctl start nginx

#keepalived配置
yum -y install keepalived配置
##配置keepalived.conf
cat > /etc/keepalived/keepalived.conf << EOF
! Configuration File for keepalived

global_defs {
	router_id NodeA
}
vrrp_script check_nginx{
	script "/root/check_nginx.sh"
	interval 2
	weight 2
}
vrrp_instance VI_1 {
	state MASTER
	interface eno33554960
	virtual_router_id 51
	priority 101
	advert_int 1
	authentication {
		auth_tyoe proxy_pass
		auth_pass 1234
	}
	virtual_uoaddress {
		8.8.8.8/24 dev ens37
	}
	track_script {
		check_nginx
	}
}
EOF
#监控nginx脚本吗
cat > /root/check_nginx.sh << EOF
#!/bin/bash
if ["$(ps -ef | grep "nginx: master process" | grep -v grep)" == ""]
then
/usr/sbin/nginx
sleep 5
if ["$(ps -ef | grep "nginx: master process" | grep -v grep)" == ""]
then
killall keepalived
fi
fi
EOF

#自启动
systemctl enable keepalived
systemctl start keepalived

高可用服务器1:

hostname highAvailableServer1
yum -y update
yum -y install epel-release

#nginx配置 反向代理+负载均衡配置
yum -y install nginx
vim /etc/nginx/nginx.conf
##http下面添加cache保存目录
http{
	proxy_cache_path /tmp/nginx/cache levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=50m;
}
##添加upstream服务器组
upstream webCluster{
	server 172.16.1.30;
	server 172.16.1.31;
	server 127.0.0.1:8080 backup;
}
##反向代理web服务器集群
server {
	listen 80;
	location / {
		proxy_pass http://webCluster/;
		proxy_connect_timeout 1;
		proxy_read_timeout 1;
		proxy_send_timeout 1;
		proxy_cache STATIC;
		proxy_cache_valid 200 1d;
	}
}
##定义错误显示服务器
server {
	listen 8080;
	root /web/error/;
	index index.html;
}
systemctl enable nginx
systemctl start nginx
#keepalived配置
yum -y install keepalived配置
##配置keepalived.conf
cat > /etc/keepalived/keepalived.conf << EOF
! Configuration File for keepalived

global_defs {
	router_id NodeB
}
vrrp_script check_nginx{
	script "/root/check_nginx.sh"
	interval 2
	weight 2
}
vrrp_instance VI_1 {
	state backup
	interface eno33554960
	virtual_router_id 51
	priority 100
	advert_int 1
	authentication {
		auth_tyoe proxy_pass
		auth_pass 1234
	}
	virtual_uoaddress {
		8.8.8.8/24 dev ens37
	}
	track_script {
		check_nginx
	}
}
EOF
#监控nginx脚本吗
cat > /root/check_nginx.sh << EOF
#!/bin/bash
if ["$(ps -ef | grep "nginx: master process" | grep -v grep)" == ""]
then
/usr/sbin/nginx
sleep 5
if ["$(ps -ef | grep "nginx: master process" | grep -v grep)" == ""]
then
killall keepalived
fi
fi
EOF

#自启动
systemctl enable keepalived
systemctl start keepalived

Leave a Reply

Your email address will not be published. Required fields are marked *