如题所述
兄弟 您好上海献峰Web服务器集群搭建如下
一 需求分析:
1.整体需求:搭建一个高可用的网站服务器集群,能承受高并发请求,能抵御一般的网络攻击,任何一台服务器的退服不影响整个集群的运作,并且能对各服务器的运行情况作出实时监控。
2.详细需求分析:
根据需求,计划根据以下拓扑搭建运行环境:
二 详细功能描述:
1.前端服务器采用nginx实现反向代理和负载均衡,用keepalive实现HA。此部分由centos1和centos4实现,centos1作为主服务器,centos4作为热备服务器。Nginx会根据不同的请求ip机会均等地把请求发送到后端两台服务器,并且以ip hash的方式保持各个ip的会话。
2.后端服务器构建在centos2与centos3上,采用apache作为web发布软件,mysql作为数据库,测试网页用Django来实现。两台服务器的数据库能够自动同步。
3.作为热备服务器,centos4在centos1没有故障时并没有业务流量,处于相对空闲的状态,因此在centos4上配置nfs使它成为文件共享服务器,网站文件放在这台服务器上。
4.centos5作为监控服务器,运行nagios监控各服务器状态。出现告警时通过告警通知管理员。另外centos5还作为saltstack的服务器,其他主机的软件安装、文件传输、命令运行等操作均通过saltstack批量实现。
三 总体部署描述:
1.各个服务器均安装centos6.4 64位版本,采用cobbler实现批量自动安装。
2.各个软件均安装最新的稳定版,centos自带的软件也要进行升级,例如python,Centos自带的版本比较久,会影响Django的运行。
四 详细部署描述:
1.nginx设置
Nginx在这里的作用主要是反向代理、作为用户以及服务器之间的缓存、以及以负载均衡的方式把请求发送到后端两台服务器。
采用编译安装的方式安装nginx,具体过程就不在此记述了,不过为了更好地抵挡入侵,建议编译前修改一下安装文件,使入侵者难以查出nginx的版本号,修改安装文件中的nginx.h,把相关字段修改如下:
NGINX_VERSION "1.0" NGINX_VER "webserver" NGINX_VERSION
Nginx的配置文件如下:
212800
default_type application/octet- zone=20;
send_timeout 20;
client_body_buffer_size 1k;
client_header_buffer_size 1k;
large_client_header_buffers 2 1k;
server_tokens off;
client_body_timeout 20;
client_header_timeout 20;
ip_hash;
server 10.0.0.3;
server 10.0.0.280///100;
limit_rate 500k; 500 502 503 504 /= /
因为后端测试网页是用Django写的,因此nginx就不用处理php等动态网页的请求了。
设置完毕后,把nginx设置为开机启动,可以用如下方式:
echo “/usr/local/nginx/sbin/nginx” >>/etc/rc.local
2.Keeplive设置
Keeplive的作用是在两台服务器(centos1、centos4)之间,以VRRP协议实现HA。通过虚拟出一个Virtul IP(本例子中是192.168.00.000)来对外发布业务。两台服务器中的任一台退服了,keeplive会自动把业务转到另一台上。在这里centos1是主服务器,centos4是备用服务器。平时的数据流量只会通过centos1,只有centos1退服了,数据流量才会割接到centos4上。
centos1上的keepalive配置:
! Configuration File @test.com @127.0.0.130
virtual_router_id 51192.168.48.139
priority 100
advert_int 1 1111192.168.48.138
对于从服务器centos4,只需要把以上配置文件的部分内容修改即可:
192.168.48.14090
同样,配置好配置文件后,把keepalive添加到开机启动中。
对于keepalive,由于是使用VRRP协议来检查对端是否在线的,只要对端能ping通,那么keeplive就会认为对端在线。但也有一种情况是对端服务器没有宕机,但nginx出错关闭了,这种情况下keepalive仍然会判断对端在线,不会把业务割接到备用服务器。因此我们需要在服务器上运行一个脚本,监控nginx进程的状态。假如nginx进程关闭了,先尝试重启nginx,无法重启时就关闭keepalive的进程,使业务割接到备用端。