所处层 | 服务器类型 | 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