已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
小型网站服务器构建方案44目录一.网站平台的项目分析11.平台性能要求12.平台并发量分析1二.网站平台集群架构设计21.网站平台集群服务器列表22.网站平台项目拓扑图3三.构建服务器集群网站平台31.安装管理服务器admin31.1安装并初始化系统31.2管理服务器安装kickstar42.搭建反向代理主备服务器72.1配置反向代理主服务器72.2配置备反向代理服务器103.安装网站服务器web1和web2113.1 安装网站服务器web1113.1 安装网站服务器web2184.安装和配置数据库服务器mysql1和mysql2184.1安装和配置主mysql服务器mysql1184.2安装和配置从mysql服务器mysql2214.3测试web1服务器的mysql-proxy读写分离214.4实现mysql主从服务器的主从复制225.部署admin管理服务器和集群服务器235.1安装部署sersync+rsync服务235.2安装部署SVN+apache275.3安装部署nagios集群监控296.部署早迅新闻网网站模板35四.集群网站平台的安全调优381.代理nginx服务器安全调优381.1修改nginx配置文件参数381.2安装fail2ban防暴力破解382.web服务器安全调优392.1修改apache配置文件参数392.2使apache获取访问者ip403.数据库服务器安全调优413.1修改mysql性能参数413.2数据库文件的备份423.3网站目录的备份44一. 网站平台的项目分析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反向代理服务器32Centos6.5/64双核/2G内存m-proxy2备反向代理服务器34Centos6.5/64双核/2G内存web1网站服务器1提供读写分离35Centos6.5/64双核/2G内存web2网站服务器2提供session共享36Centos6.5/64双核/2G内存mysql1主数据库服务器37Centos6.5/64双核/2G内存mysql2从数据库服务器38Centos6.5/64双核/2G内存admin管理服务器提供备份、装机、监控、web网页分发功能39Centos6.5/64四核/8G内存2. 网站平台项目拓扑图网站平台整体拓扑如下:三. 构建服务器集群网站平台1. 安装管理服务器admin1.1安装并初始化系统1) 光盘安装操作系统启动一台服务器,使用光盘安装CentOS6.5操作系统,安装类型为基本安装(安装过程略)。2) 初始化系统操作系统安装完成后,配置/etc/sysconfig/network-scripts/ifcfg-eth0网卡配置文件。修改IP为39,网关为54指向路由器的地址。(集群服务器的所有数据通过路由器转发出去),网卡部分主要的配置如下:ONBOOT=yesBOOTPROTO=noneIPADDR=39NETMASK=GATEWAY=54关闭防火墙和SElinux,修改主机名chkconfig iptables off;/etc/init.d/iptables stopsetenforce 0; sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/configvi /etc/sysconfig/network修改HOSTNAME=localhost为HOSTNAME=admin1.2管理服务器安装kickstart由于服务器过多,可以在管理服务器上搭建kickstart来自动安装其余的集群服务器,减少手工操作。1) 安装配置DHCP服务器使用yum安装DHCP服务器yum -y install dhcp2) 配置dhcp服务器cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.confvi !$添加下列参数:subnet netmask range 172.18 109.100 49;option domain-name-servers 9;option routers 54;option broadcast-address 55;default-lease-time 600;max-lease-time 7200;next-server 41;filename “pxelinux.0”;chkconfig dhcpd onservice dhcpd start3) 安装配置tftpyum -y install tftp tftp-server xinetd修改tftp配置文件,指定共享目录和开机启动v i /etc/xinetd.d/tftp修改的内容:server_args = -s /tftpbootdisable = no挂载光盘,并拷贝光盘中的文件和kickstart文件到tftp共享目录下,并配置引导启动文件,过程代码如下:yum -y install system-config-kickstart glib2-delvelmkdir /mnt/sr0 mkdir -p /tftpboot/pxelinux.cfgmount /dev/sr0 /mnt/sr0cp /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/defaultchmod 644 /tftpboot/pxelinux.cfg/default配置tftp共享目录中的引导启动配置文件vim /tftpboot/pxelinux.cfg/default修改第一行:default vesamenu.c32 linux在lable linux项下,最后添加ks=41/ks.cfgservice xinetd start4) 安装vsftp服务yum -y inysall vsftpdchkconfig vsftpd startservice vsftpd start5) 配置kickstartsystem-config-kickstart进入图形界面配置系统安装所需操作(配置过程略),配置完成后,在”安装后脚本”此步,使用/bin/bash解释器,编写一个脚本来关闭iptables和selinux,脚本内容如下:chkconfig iptables off;/etc/init.d/iptables stopsetenforce 0; sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config完成后,生成配置文件ks.cfg,将配置文件拷贝到ftp共享目录中,并为ftp准备挂载好系统安装文件cp /root/ks.cfg /var/ftpumount /dev/sr0mount /dev/sr0 /var/ftp/pubecho mount /dev/sr0 /var/ftp/pub/ /etc/rc.local service vsftpd restart2. 搭建反向代理主备服务器反向代理服务器作为网站平台的前端,负责将web用户的请求按轮询方式发送给后端的真实服务器,并将静态请求交给nginx服务器,动态请求提交给后端的apache服务器。服务器使用nginx在网络模型第七层提供负载均衡功能。搭建步骤如下:2.1配置反向代理主服务器1) 安装系统、配置IP修改bios中启动项为网络开机启动,自动连接到管理服务器使用kickstart安装好操作系统。安装完成后,修改bios启动项,进入操作系统。修改网卡配置文件,修改ip为32(修改方式和其他网卡参数参照admin服务器的网卡配置)2) 安装nginx使用yum解决nginx依赖包groupadd wwwuseradd -s /sbin/nologin -g www wwwyum -y install gcc gcc-c+ autoconf automake zlib zlib-devel openssl openssl-devel pcre*xftp上传nginx源码安装包,编译安装nginxtar -zxvf nginx-1.8.1.tar.gzcd nginx-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 & make install3) 配置nginx进行反向代理和负载均衡nginx的静态并发处理能力比apache要好,但是动态处理不如apache,所以将静态的web请求交给nginx服务器处理,而动态的php请求交给后端的两个apache服务器轮流处理。配置过程如下:新建一个配置文件 vi /usr/local/nginx/conf/proxy.conf 配置文件内容如下upstream web #ip_hashserver 35:80 weight=1 max_fails=2 fail_timeout=30s;server 36:80 weight=1 max_fails=2 fail_timeout=30s; server listen 80;server_name ; index index.html index.htm index.php;root /home/wwwroot/default;#网页文件主目录location .*.(php|php5)?$proxy_next_upstream http_502 http_504 error timeout invalid_header;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $remote_addr;#使后端apache能获得访问者的ip地址proxy_http_version 1.1#proxy_redirect off;#proxy_pass端口不为80时,使用proxy_pass http:/web;在主配置文件中引用此配置文件:vi /usr/local/nginx/conf/nginx.conf第一行添加参数,使nginx使用www用户运行user www www在字段http. .括号中修改:删除字段server . .在http. .括号中末尾,添加include proxy.conf;创建网页目录,并添加权限mkdir -p /home/wwwroot/defaultsetfacl -m u:www:rwx -R /home/wwwroot/default4) 安装和配置keepalived为了防止前端服务器宕机出现业务中断,造成不必要的损失。所以使用keepalived来实现反向代理服务器的高可用。安装过程如下:上传keepalived源码安装包到服务器上yum -y install kernel-develln -s /usr/src/kernels/2.6.32-642.13.1.el6.i686/ /usr/src/linux/tar -zxvf keepalived-1.2.15.tar.gz cd keepalived-1.2.15./configuremkdir /etc/keepalivedcp /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修改如下:service keepalived startchkconfig keepalived on查看vip是否添加:ip add2.2配置备反向代理服务器备服务器和服务器基本相同:1) 重复主反向代理服务器前5步骤修改网卡配置文件时,修改ip为342) 配置keepalived配置文件备服务器配置keepalived配置文件,如下service keepalived startchkconfig keepalived on3. 安装网站服务器web1和web2网站服务器web1和web2作为处理动态php请求的服务器,使用apache作为网站服务器。3.1 安装网站服务器web11) 安装操作系统修改bios中启动项为网络开机启动,自动连接到管理服务器使用kickstart 安装好操作系统。安装完成后,修改bios启动项,进入操作系统。修改网卡配置文件,修改ip为35(修改方式和其他网卡参数参照admin服务器的网卡配置)2) 安装和配置apache服务器首先xftp上传安装apache服务器所需依赖包:apr-1.4.6.tar.gz、apr-util-1.4.1.tar.gz、pcre-8.34.tar.gzyum -y install make gcc gcc-c+ openssl openssl-develtar -zxvf apr-1.4.6.tar.gzcd apr-1.4.6./configure -prefix=/usr/local/aprmake & make installtar -zxvf apr-util-1.4.1.tar.gzcd apr-util-1.4.1./configure -prefix=/usr/local/apr-util/ -with-apr=/usr/local/apr/bin/apr-1-configmake & make installtar -zxvf pcre-8.34.tar.gzcd pcre-8.34./configure -prefix=/usr/local/pcremake & make installxftp上传apache安装包:httpd-2.4.7.tar.gztar -zxvf httpd-2.4.7.tar.gzcd httpd-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 & make install生成启动脚本:cp /usr/local/apache/bin/apachectl /etc/init.d/httpd修改/etc/init.d/httpd脚本文件vim /etc/init.d/httpd在#/bin/bash下添加2行:启动关闭顺序和描述行,内容如下:#chkconfig:345 66 33#description:apache server修改完成后chkconfig -add httpdchkconfig httpd on修改apache主配置文件,指定网站文件目录vim /usr/local/apache/conf/httpd.conf修改DocumentRoot /usr/local/apache/htdocs为DocumentRoot /home/wwwroot/default修改为修改#ServerName :80为ServerName :80创建网页目录,并添加权限mkdir -p /home/wwwroot/defaultsetfacl -m u:daemon:rwx -R /home/wwwroot/default3) 安装和配置php服务器安装所需的依赖包yum -y install php-mcrypt libmcrypt libmcrypt-devel autoconf freetype gd libmcrypt libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-develxftp上传php安装包:php-5.4.25.tar.gztar -zxvf php-5.4.25.tar.gz cd php-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&make installcp php.ini-production /usr/local/php/etc/php.ini修改apache的主配置文件,使它支持phpvi /usr/local/apache/conf/httpd.conf在配置文件末尾添加:AddType application/x-httpd-php .php .phtml修改 DirectoryIndex index.html 为: DirectoryIndex index.html index.php生成测试文件echo “” /home/wwwroot/default/index.phpservice httpd restart在浏览器输入服务器ip地址,查看php文件是否解析成功4) 安装memcache当使用session登录的用户,多个动态请求经过反向代理服务器的负载均衡作用,分别请求在两台不同的web服务器上时,由于session只保存在其中一台web服务器上,会造成用户的自动登出。因此需要将session共享在2个服务器上,使服务器可以同时读取到用户的session。使用memcache服务进行session共享,基于内存的存储可以达到session的快速读取,降低用户登录时需要的时间。xftp上传memcache源码包解决依赖包yum -y install zlib-develtar -zxvf memcache-3.0.8cd memcache-3.0.8/usr/local/php/bin/phpize./configure -with-php-config=/usr/local/php/bin/php-configmake & make install修改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:/36:11211#ip地址为session服务端的地址重启apache服务器service httpd restart刷新apache测试页,可以看到memcache模块 5) 安装读写分离mysql-proxy读写分离,使mysql主库进行数据增、删、改操作,mysql从库进行查询操作。而数据库主从复制把事务性查询导致的变更同步到集群中的从库。安装依赖包和mysql-server环境yum -y install lua mysql-serverxftp上传mysql-proxy软件包tar -zxvf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -C /usr/local/cd /usr/localmv mysql-proxy-0.8.5-linux-el6-x86-64bit/ mysql-proxy将mysq-proxy执行命令写入环境变量echo export PATH=/usr/local/mysql-proxy/bin/:/usr/local/mysql/bin:$PATH /etc/profilesource /etc/profile修改mysql-proxy配置文件vim /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua修改min_idle_connections = 4,为min_idle_connections = 1,修改max_idle_connections = 8,为max_idle_connections = 1,配好数据库服务器后,则可以启动mysql-proxy读写分离了,启动mysql-proxy读写分离命令如下:mysql-proxy -proxy-read-only-backend-addresses=38:3306 -proxy-backend-addresses=37:3306 -proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua &开机自启动echo “mysql-proxy -proxy-read-only-backend-addresses=38:3306 -proxy-backend-addresses=37:3306 -proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua &”/etc/rc.local测试当安装完mysql数据库服务器后,进行测试测试位置3.1 安装网站服务器web2web2网站服务器作为负载的动态处理服务器之一,安装步骤如下:1) 重复web1安装的前4步骤修改网卡配置文件时,修改ip为362) 安装memcached服务端web2除了作为负载的动态处理服务器之外,还将提供session共享功能:xftp上传memcached源码包memcached-1.4.17.tar.gztar -zxvf memcached-1.4.17.tar.gzcd /lamp/memcached-1.4.17./configure -prefix=/usr/local/memcachemake & make installuseradd -M -s /sbin/nologin memcache/usr/local/memcache/bin/memcached -u memcache &开机自启动echo “/usr/local/memcache/bin/memcached -u memcache &” /etc/rc.local4. 安装和配置数据库服务器mysql1和mysql24.1 安装和配置主mysql服务器mysql11) 安装依赖包yum -y install gcc-c+ gcc cmake bison ncurses-devel2) 安装、配置mysqlftp上传mysql源码包mysql-5.6.23.tar.gztar -zxvf mysql-5.6.23.tar.gz cd mysql-5.6.23cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306make&make install给mysql目录文件权限chown -R mysql:mysql /usr/local/mysql将MySQL的命令写入环境变量,方便直接执行命令而不输入路径echo export PATH=$PATH:/usr/local/mysql/bin/ /etc/profilesource /etc/profile生成mysql的初始配置文件cp support-files/f /etc/f初始化mysql/usr/local/mysql/scripts/mysql_install_db -defaults-file=/etc/f -basedir=/usr/local/mysql -datadir=/data -user=mysql启动优化cp support-files/mysql.server.sh /etc/init.d/mysql修改启动脚本vi /etc/init.d/mysql修改basedir=为basedir=/usr/local/mysql修改datadir=为datadir=/datachmod 755 /etc/init.d/mysqlchkconfig mysql on启动mysql/etc/init.d/mysql start进行mysql的安全初始化设置mysql_secure_installation设置如下图:3) 主数据库配置数据库和数据库用户使用设置好的密码登录mysql,并创建一个数据库给网站使用create database cms_db;授权读写分离用户grant all on cms_db.* to mypro35 identified by Umypro123;授权主从同步用户grant replication slave on *.* to rpl38 indentified by rpl1234.2 安装和配置从mysql服务器mysql21) 重复安装和配置主服务器mysql1的前2个步骤2) 从数据库配置数据库和数据库用户授权读写分离用户grant all on cms_db.* to mypro35 identified by Umypro123;4.3 测试web1服务器的mysql-proxy读写分离主从服务器都已经授权给web2服务器远程,连接,现在登录web2服务器的mysql-proxy服务mysql -umypro -pUmypro123 -P4040 -h354.4 实现mysql主从服务器的主从复制1) 修改mysql配置文件修改主数据库服务器mysql1的mysql配置文件vim /etc/f在mysqld字段下添加log-bin=mysql-binbinlog-do-db=db_cmsbinlog-ignore-db=mysql修改从数据库服务器mysql2的mysql配置文件vim /etc/f修改server-id=1为server-id=2master-host=37 master-user=rplmaster-password=rpl123master-connect-retry=60 2) 主库数据导入到从库在主数据库服务器mysql1上:mysqldump -uroot -pchair909 -A all_db.sqlscp all_db.sql 38:/home#输入mysql2的登录用户名和密码service mysql restarthistory -c在从数据库服务器mysql2上:mysql -uroot -pchair909 /etc/rsyncd.passwdchmod 600 /etc/rsyncd.passwd启动rsyncrsync -daemon 开机自启动echo rm -f /var/run/rsyncd.pid;rsync -daemon /etc/rc.d/rc.local2) 管理服务器admin配置sersync生成rsync连接秘钥文件echo abc123 /etc/rsyncd.passwd测试rsync连接rsync -avz index.html rooter34:www -password-file=/etc/rsyncd.passwd安装sersyncxftp上传sersync软件包到管理服务器上并安装到指定目录下tar -zxvf sersync_64bit_binary_stable_final.tar.gz mv GNU-Linux-x86/ sersync/ mkdir -p /usr/local/sersync/bin/cd sersync/ mv confxml.xml /usr/local/sersync/mv sersync2 /usr/local/sersync/bin/cd /usr/local/sersync/修改 !- !- 为: 修改 为 运行sersync/usr/local/sersync/bin/sersync2 -d -r -o /usr/local/sersync/confxml.xmlset the system paramexecute:echo 50000000 /proc/sys/fs/inotify/max_user_watchesexecute:echo 327679 /proc/sys/fs/inotify/max_queued_eventsparse the command paramoption: -d run as a daemonoption: -r rsync all the local files to the remote servers before the sersync workoption: -o config xml name: /usr/local/sersync/confxml.xmldaemon thread num: 10parse xml config filehost ip : localhosthost port: 8008daemon start,sersync run behind the console config xml parse successplease set /etc/rsyncd.conf max connections=0 Manuallysersync working thread 12 = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads) Max threads numbers is: 22 = 12(Thread pool nums) + 10(Sub threads)please according your cpu ,use -n param to adjust the cpu rate-开机自动运行echo ”/usr/local/sersync/bin/sersync2 -d -r -o /usr/local/sersync/confxml.xml” /etc/rc.local5.2安装部署SVN+apache当对网站进行开发时,可以在管理服务器上部署subversion来管理代码版本,将开发完成的网页文件先测试后,在拷贝到web文件分发目录,分发到集群服务中。安装SVN和apche和apache的svn模块y
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年铜仁辅警招聘考试题库附答案详解(黄金题型)
- 2025内蒙古鄂尔多斯政务服务中心招聘28人笔试历年常考点试题专练附带答案详解2套试卷
- 汽车修理保修质量保证协议合同
- 2025餐馆租赁合同模板
- 采购合同审查工具表订单及交付标准解析版
- 2025标准店铺租赁合同协议范本
- 2025劳动合同字体格式要求
- 企业信息安全管理制度与风险应对模板
- 2025商场租赁经营合同【商业广场租赁经营合同】
- 商务合作信誉承诺函3篇范文
- 2025-2026学年贵州省安顺市三年级道德与法治上册期中考试试卷及答案
- 青岛市人民医院肛肠术后疼痛管理考核
- 2025年全国交管12123驾驶证学法减分(学法免分)考试题含参考答案
- 2025年物联网行业发展现状与趋势分析研究报告
- 入团考试试题及答案大学
- 2025年工会考试真题附答案
- 《铁道机车车辆(第3版)》课件 模块8 内燃机车
- 2025年发展对象考试题库及参考答案
- 河南省新未来2025-2026学年高三上学期10月联合测评化学试题(含答案)
- 2025年辽宁省本溪市辅警招聘考试题库及答案
- 2025年浙江省高考地理试卷(含答案)
评论
0/150
提交评论