所处层 | 服务器类型 | 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集群提供数据库写入服务,使用mariadb的master/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![[高可用web服务器集群]Nginx/高可用服务器搭建 [高可用web服务器集群]Nginx/高可用服务器搭建](https://www.slll.info/wp-content/uploads/2017/03/logo.png)
![[高可用web服务器集群]Nginx/高可用服务器搭建 - 1 [高可用web服务器集群]Nginx/高可用服务器搭建 - 1](https://www.slll.info/wp-content/plugins/wp-images-lazy-loading/images/grey.gif)