小型网站服务器构架方案.docx
《小型网站服务器构架方案.docx》由会员分享,可在线阅读,更多相关《小型网站服务器构架方案.docx(37页珍藏版)》请在冰豆网上搜索。
![小型网站服务器构架方案.docx](https://file1.bdocx.com/fileroot1/2023-1/30/0c2d8425-1b65-426b-a74f-942c167786d9/0c2d8425-1b65-426b-a74f-942c167786d91.gif)
小型网站服务器构架方案
小型网站服务器构建方案
一.网站平台的项目分析
1.平台性能要求
搭建一个本地新闻门户网站访问平台,该平台必须能符合以下几点:
性能需求
备注
满足一天3-5万PV访问量
应对高并发访问,具有负载均衡功能;
具有安全策略,抵御一定程度网络攻击
防暴力破解等
备份重要数据
脚本定时备份
监控平台数据,随时报告异常情况
服务器容灾功能
重要服务器主备运行
平台自动化运维,降低人工维护成本
shell脚本自动化管理
2.平台并发量分析
日访问3到5万PV是一个很小的流量访问。
可以假设三种访问情况:
(1)最差情况:
50000个请求同时发生,那么最大并发请求数应为50000
(2)最好情况:
50000个请求在时间上均匀地发起请求。
那么并发数为50000/24*60*60=0.579。
折合一分钟内之有34个请求,基本上就没有并发,只是单个执行。
(3)80/20原则:
但是在现实生活中,以上两种情况发生的概率很小。
根据统计学原理,采用80/20原则计算并发用户数。
50000*0.8/(8*60*60*0.2)=6.94,即每秒约有7个并发。
二.网站平台集群架构设计
1.网站平台集群服务器列表
根据项目需求和并发量,考虑网站的高可用性,和未来网站业务进步,访问并发量增大,平台的服务器集群表如下:
服务器名称
功能描述
ip地址
操作系统
硬件信息
m-proxy1
反向代理服务器
172.18.109.232
Centos6.5/64
双核/2G内存
m-proxy2
备反向代理服务器
172.18.109.234
Centos6.5/64
双核/2G内存
web1
网站服务器1
提供读写分离
172.18.109.235
Centos6.5/64
双核/2G内存
web2
网站服务器2
提供session共享
172.18.109.236
Centos6.5/64
双核/2G内存
mysql1
主数据库服务器
172.18.109.237
Centos6.5/64
双核/2G内存
mysql2
从数据库服务器
172.18.109.238
Centos6.5/64
双核/2G内存
admin
管理服务器
提供备份、装机、监控、web网页分发功能
172.18.109.239
Centos6.5/64
四核/8G内存
2.网站平台项目拓扑图
网站平台整体拓扑如下:
三.构建服务器集群网站平台
1.安装管理服务器admin
1.1安装并初始化系统
1)光盘安装操作系统
启动一台服务器,使用光盘安装CentOS6.5操作系统,安装类型为基本安装(安装过程略)。
2)初始化系统
操作系统安装完成后,配置/etc/sysconfig/network-scripts/ifcfg-eth0网卡配置文件。
修改IP为172.18.109.239,网关为172.18.109.254指向路由器的地址。
(集群服务器的所有数据通过路由器转发出去),网卡部分主要的配置如下:
ONBOOT=yes
BOOTPROTO=none
IPADDR=172.18.109.239
NETMASK=255.255.255.0
GATEWAY=172.18.109.254
关闭防火墙和SElinux,修改主机名
chkconfigiptablesoff;/etc/init.d/iptablesstop
setenforce0;sed-i"s/^SELINUX\=enforcing/SELINUX\=disabled/g"/etc/selinux/config
vi/etc/sysconfig/network
修改HOSTNAME=localhost为HOSTNAME=admin
1.2管理服务器安装kickstart
由于服务器过多,可以在管理服务器上搭建kickstart来自动安装其余的集群服务器,减少手工操作。
1)安装配置DHCP服务器
使用yum安装DHCP服务器
yum-yinstalldhcp
2)配置dhcp服务器
cp/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample/etc/dhcp/dhcpd.conf
vi!
$
添加下列参数:
subnet172.18.109.0netmask255.255.255.0{
range172.18109.100172.18.109.249;
optiondomain-name-servers61.139.2.69;
optionrouters172.18.109.254;
optionbroadcast-address172.18.109.255;
default-lease-time600;
max-lease-time7200;
next-server172.18.109.241;
filename“pxelinux.0”;
}
chkconfigdhcpdon
servicedhcpdstart
3)安装配置tftp
yum-yinstalltftptftp-serverxinetd
修改tftp配置文件,指定共享目录和开机启动
vi/etc/xinetd.d/tftp
修改的内容:
server_args=-s/tftpboot
disable=no
挂载光盘,并拷贝光盘中的文件和kickstart文件到tftp共享目录下,并配置引导启动文件,过程代码如下:
yum-yinstallsystem-config-kickstartglib2-delvel
mkdir/mnt/sr0
mkdir-p/tftpboot/pxelinux.cfg
mount/dev/sr0/mnt/sr0
cp/usr/share/syslinux/pxelinux.0/tftpboot/
cp/mnt/sr0/images/pxeboot/initrd.img/tftpboot/
cp/mnt/sr0/images/pxeboot/vmlinuz/tftpboot/
cp/mnt/sr0/isolinux/isolinux.cfg/tftpboot/pxelinux.cfg/default
chmod644/tftpboot/pxelinux.cfg/default
配置tftp共享目录中的引导启动配置文件
vim/tftpboot/pxelinux.cfg/default
修改第一行:
defaultvesamenu.c32linux
在lablelinux项下,最后添加
ks=ftp:
//172.18.109.241/ks.cfg
servicexinetdstart
4)安装vsftp服务
yum-yinysallvsftpd
chkconfigvsftpdstart
servicevsftpdstart
5)配置kickstart
system-config-kickstart
进入图形界面配置系统安装所需操作(配置过程略),配置完成后,在”安装后脚本”此步,使用/bin/bash解释器,编写一个脚本来关闭iptables和selinux,脚本内容如下:
chkconfigiptablesoff;/etc/init.d/iptablesstop
setenforce0;sed-i"s/^SELINUX\=enforcing/SELINUX\=disabled/g"/etc/selinux/config
完成后,生成配置文件ks.cfg,将配置文件拷贝到ftp共享目录中,并为ftp准备挂载好系统安装文件
cp/root/ks.cfg/var/ftp
umount/dev/sr0
mount/dev/sr0/var/ftp/pub
echo"mount/dev/sr0/var/ftp/pub/">>/etc/rc.local
servicevsftpdrestart
2.搭建反向代理主备服务器
反向代理服务器作为网站平台的前端,负责将web用户的请求按轮询方式发送给后端的真实服务器,并将静态请求交给nginx服务器,动态请求提交给后端的apache服务器。
服务器使用nginx在网络模型第七层提供负载均衡功能。
搭建步骤如下:
2.1配置反向代理主服务器
1)安装系统、配置IP
修改bios中启动项为网络开机启动,自动连接到管理服务器使用kickstart安装好操作系统。
安装完成后,修改bios启动项,进入操作系统。
修改网卡配置文件,修改ip为172.18.109.232(修改方式和其他网卡参数参照admin服务器的网卡配置)
2)安装nginx
使用yum解决nginx依赖包
groupaddwww
useradd-s/sbin/nologin-gwwwwww
yum-yinstallgccgcc-c++autoconfautomakezlibzlib-developensslopenssl-develpcre*
xftp上传nginx源码安装包,编译安装nginx
tar-zxvfnginx-1.8.1.tar.gz
cdnginx-1.8.1/
./configure--user=www--group=www--prefix=/usr/local/nginx--with-http_stub_status_module--with-http_ssl_module--with-http_gzip_static_module--with-ipv6--with-pcre
make&&makeinstall
3)配置nginx进行反向代理和负载均衡
nginx的静态并发处理能力比apache要好,但是动态处理不如apache,所以将静态的web请求交给nginx服务器处理,而动态的php请求交给后端的两个apache服务器轮流处理。
配置过程如下:
新建一个配置文件
vi/usr/local/nginx/conf/proxy.conf
配置文件内容如下
upstreamweb{
#ip_hash
server172.18.109.235:
80weight=1max_fails=2fail_timeout=30s;
server172.18.109.236:
80weight=1max_fails=2fail_timeout=30s;
}
server{
listen80;
server_name;
indexindex.htmlindex.htmindex.php;
root/home/wwwroot/default;
#网页文件主目录
location~.*\.(php|php5)?
${
proxy_next_upstreamhttp_502http_504errortimeoutinvalid_header;
proxy_set_headerHost$host;
proxy_set_headerX-Forwarded-For$remote_addr;
#使后端apache能获得访问者的ip地址
proxy_http_version1.1
#proxy_redirectoff;
#proxy_pass端口不为80时,使用
proxy_passhttp:
//web;
}
}
在主配置文件中引用此配置文件:
vi/usr/local/nginx/conf/nginx.conf
第一行添加参数,使nginx使用www用户运行
userwwwwww
在字段http{......}括号中修改:
删除字段server{......}
在http{......}括号中末尾,添加includeproxy.conf;
创建网页目录,并添加权限
mkdir-p/home/wwwroot/default
setfacl-mu:
www:
rwx-R/home/wwwroot/default
4)安装和配置keepalived
为了防止前端服务器宕机出现业务中断,造成不必要的损失。
所以使用keepalived来实现反向代理服务器的高可用。
安装过程如下:
上传keepalived源码安装包到服务器上
yum-yinstallkernel-devel
ln-s/usr/src/kernels/2.6.32-642.13.1.el6.i686//usr/src/linux/
tar-zxvfkeepalived-1.2.15.tar.gz
cdkeepalived-1.2.15
./configure
mkdir/etc/keepalived
cp/usr/local/etc/rc.d/init.d/keepalived/etc/init.d/
cp/usr/local/etc/sysconfig/keepalived/etc/sysconfig/
cp/usr/local/etc/keepalived/keepalived.conf/etc/keepalived/
cp/usr/local/sbin/keepalived/usr/sbin/
配置keepalived配置文件:
vim/etc/keepalived/keepalived.conf
修改如下:
servicekeepalivedstart
chkconfigkeepalivedon
查看vip是否添加:
ipadd
2.2配置备反向代理服务器
备服务器和服务器基本相同:
1)重复主反向代理服务器前5步骤
修改网卡配置文件时,修改ip为172.18.109.234
2)配置keepalived配置文件
备服务器配置keepalived配置文件,如下
servicekeepalivedstart
chkconfigkeepalivedon
3.安装网站服务器web1和web2
网站服务器web1和web2作为处理动态php请求的服务器,使用apache作为网站服务器。
3.1安装网站服务器web1
1)安装操作系统
修改bios中启动项为网络开机启动,自动连接到管理服务器使用kickstart安装好操作系统。
安装完成后,修改bios启动项,进入操作系统。
修改网卡配置文件,修改ip为172.18.109.235(修改方式和其他网卡参数参照admin服务器的网卡配置)
2)安装和配置apache服务器
首先xftp上传安装apache服务器所需依赖包:
apr-1.4.6.tar.gz、apr-util-1.4.1.tar.gz、pcre-8.34.tar.gz
yum-yinstallmakegccgcc-c++opensslopenssl-devel
tar-zxvfapr-1.4.6.tar.gz
cdapr-1.4.6
./configure--prefix=/usr/local/apr
make&&makeinstall
tar-zxvfapr-util-1.4.1.tar.gz
cdapr-util-1.4.1
./configure--prefix=/usr/local/apr-util/--with-apr=/usr/local/apr/bin/apr-1-config
make&&makeinstall
tar-zxvfpcre-8.34.tar.gz
cdpcre-8.34
./configure--prefix=/usr/local/pcre
make&&makeinstall
xftp上传apache安装包:
httpd-2.4.7.tar.gz
tar-zxvfhttpd-2.4.7.tar.gz
cdhttpd-2.4.7
./configure--prefix=/usr/local/apache--enable-so--enable-rewrite--enable-ssl--with-apr=/usr/local/apr--with-apr-util=/usr/local/apr-util/--with-pcre=/usr/local/pcre/
make&&makeinstall
生成启动脚本:
cp/usr/local/apache/bin/apachectl/etc/init.d/httpd
修改/etc/init.d/httpd脚本文件
vim/etc/init.d/httpd
在#/bin/bash下添加2行:
启动关闭顺序和描述行,内容如下:
#chkconfig:
3456633
#description:
apacheserver
修改完成后
chkconfig--addhttpd
chkconfighttpdon
修改apache主配置文件,指定网站文件目录
vim/usr/local/apache/conf/httpd.conf
修改DocumentRoot"/usr/local/apache/htdocs"为
DocumentRoot"/home/wwwroot/default"
修改为
修改#ServerName:
80为
ServerName127.0.0.1:
80
创建网页目录,并添加权限
mkdir-p/home/wwwroot/default
setfacl-mu:
daemon:
rwx-R/home/wwwroot/default
3)安装和配置php服务器
安装所需的依赖包
yum-yinstallphp-mcryptlibmcryptlibmcrypt-develautoconffreetypegdlibmcryptlibpnglibpng-devellibjpeglibxml2libxml2-develzlibcurlcurl-devel
xftp上传php安装包:
php-5.4.25.tar.gz
tar-zxvfphp-5.4.25.tar.gz
cdphp-5.4.25
./configure--prefix=/usr/local/php/\
--with-apxs2=/usr/local/apache/bin/apxs\
--enable-mbstring\
--with-curl\
--with-gd\
--enable-fpm\
--with-config-file-path=/usr/local/php/etc/
make&&makeinstall
cpphp.ini-production/usr/local/php/etc/php.ini
修改apache的主配置文件,使它支持php
vi/usr/local/apache/conf/httpd.conf
在配置文件末尾添加:
AddTypeapplication/x-httpd-php.php.phtml
修改
DirectoryIndexindex.html
为:
DirectoryIndexindex.htmlindex.php
生成测试文件
echo“
phpinfo();?
>”>>/home/wwwroot/default/index.php
servicehttpdrestart
在浏览器输入服务器ip地址,查看php文件是否解析成功
4)安装memcache
当使用session登录的用户,多个动态请求经过反向代理服务器的负载均衡作用,分别请求在两台不同的web服务器上时,由于session只保存在其中一台web服务器上,会造成用户的自动登出。
因此需要将session共享在2个服务器上,使服务器可以同时读取到用户的session。
使用memcache服务进行session共享,基于内存的存储可以达到session的快速读取,降低用户登录时需要的时间。
xftp上传memcache源码包
解决依赖包
yum-yinstallzlib-devel
tar-zxvfmemcache-3.0.8
cdmemcache-3.0.8
/usr/local/php/bin/phpize
./configure--with-php-config=/usr/local/php/bin/php-config
make&&makeinstall
修改php.ini配置文件,加载memcache模块,并且指定session存放位置
vi/usr/local/php/etc/php.ini
修改;extension_dir="./"为
extension_dir="/usr/local/php/lib/php/extensions/no-debug-zts-20100525/"
并在其下添加一行
extension="memcache.so";
修改session.save_handler=files为
session.save_handler=memcache
并在其下添加一行
session.save_path="tcp:
//172.18.109.236:
11211"
#ip地址为session服务端的地址
重启apache服务器
servicehttpdrestart
刷新apache测试页,可以看到memcache模块
5)安装读写分离mysql-proxy
读写分离,使mysql主库进行数据增、删、改操作,mysql从库进行查询操作。
而数据库主从复制把事务性查询导致的变更同步到集群中的从库。
安装依赖包和mysql-server环境
yum-yinstallluamysql-server
xftp上传mysql-proxy软件包
tar-zxvfmysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz-C/usr/local/
cd/usr/local
mvmysql-proxy-0.8.5-linux-el6-x86-64bit/mysql-proxy
将mysq-proxy执行命令写入环境变量
echo"exportPATH=/usr/local/mysql-proxy/bin/:
/usr/local/mysql/bin:
$PATH">>/etc/profile