15.2.2 集群架构服务搭建规划设计
您可以在百度里搜索“跟老男孩学Linux运维:Web集群实战 艾草文学(www.321553.xyz)”查找最新章节!
15.2.2 集群架构服务搭建规划设计
1.集群所有服务器节点的基础优化设置
首先要按照前文的规划对所有服务器设置好IP地址,然后通过SSH远程登录把如下初始化文件和脚本文件拷贝到每一台集群节点系统中的对应位置上,并执行optimization.sh脚本对服务器进行初始化设置。
[root@oldboy scripts]# pwd /server/scripts [root@STORE-Rsync-01base]# cat/etc/hosts 127.0.0.1 localhost localhost.localdomainlocalhost4 localhost4.localdomain4::1 localhostlocalhost.localdomain localhost6 localhost6.localdomain6 172.16.1.1LB-nginx-01 lb01.etiantian.org 172.16.1.2 LB-nginx-02lb02.etiantian.org 172.16.1.10 WEB-LNMP-01 web01.etiantian.org172.16.1.11 WEB-LNMP-02 web02.etiantian.org 172.16.1.30STORE-NFS-01 nfs.etiantian.org 172.16.1.31 STORE-Rsync-01rsync.etiantian.org 172.16.1.32 nfs_vip.etiantian.org 172.16.1.50MySQL-master-01 dbmaster01.etiantian.org 172.16.1.51MySQL-master-02 dbmaster02.etiantian.org 172.16.1.52dbmaster_vip.etiantian.org 172.16.1.53 MySQL-slave-01dbslave01.etiantian.org 172.16.1.61 Cache-Mc-01cache01.etiantian.org 172.16.1.62 Cache-Mc-02 cache02.etiantian.org172.16.1.63 mc_vip.etiantian.org 172.16.1.200 MAGE-monitor-01monitor.etiantian.org 172.16.1.201 MAGE-jump-01 jump.etiantian.org10.0.0.3 www.etiantian.org blog.etiantian.org bbs.etiantian.org
hosts文件为规划好的所有服务器的统一模板,每新增服务器就要增加一条对应主机名和IP的hosts解析,并且要全部重新分发到所有机器上(通过SSH及saltstack等软件可实现),这里的hosts文件会被系统初始化优化脚本optimization.sh调用。
下面的sysctl.conf文件为设置优化好的内核文件模板,此文件也会被优化脚本optimization.sh调用。
[root@oldboy scripts]# cat/etc/sysctl.conf # Kernel sysctlconfiguration file for Red Hat Linux # # For binary values, 0 isdisabled, 1 is enabled. See sysctl(8) and # sysctl.conf(5) for moredetails. # Controls IP packet forwarding net.ipv4.ip_forward = 0 #Controls source route verification net.ipv4.conf.default.rp_filter= 1 # Do not accept source routingnet.ipv4.conf.default.accept_source_route = 0 # Controls the SystemRequest debugging functionality of the kernel kernel.sysrq = 0 #Controls whether core dumps will append the PID to the corefilename. # Useful for debugging multi-threaded applications.kernel.core_uses_pid = 1 # Controls the use of TCP syncookiesnet.ipv4.tcp_syncookies = 1 # Disable netfilter on bridges.net.bridge.bridge-nf-call-ip6tables = 0net.bridge.bridge-nf-call-iptables = 0net.bridge.bridge-nf-call-arptables = 0 # Controls the defaultmaxmimum size of a mesage queue kernel.msgmnb = 65536 # Controlsthe maximum size of a message, in bytes kernel.msgmax = 65536 #Controls the maximum shared segment size, in bytes kernel.shmmax =68719476736 # Controls the maximum number of shared memorysegments, in pages kernel.shmall = 4294967296 ############byoldboy#######################################net.ipv4.tcp_fin_timeout = 2 net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_keepalive_time = 600 net.ipv4.ip_local_port_range =4000 65000 net.ipv4.tcp_max_syn_backlog = 16384net.ipv4.tcp_max_tw_buckets = 36000 net.ipv4.route.gc_timeout = 100net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_synack_retries = 1net.core.somaxconn = 16384 net.core.netdev_max_backlog = 16384net.ipv4.tcp_max_orphans = 16384#以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理 net.nf_conntrack_max =25000000 net.netfilter.nf_conntrack_max = 25000000net.netfilter.nf_conntrack_tcp_timeout_established = 180net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120net.core.wmem_default = 8388608 net.core.rmem_default = 8388608net.core.wmem_max = 16777216 net.core.rmem_max = 16777216
下面的optimization.sh为Linux系统优化基础脚本,需要在每一台机器上执行该脚本配置优化系统。
[root@oldboy scripts]# cat optimization.sh #!/bin/bash########################################################## # FileName : linux system config # description : This script is used toset linux system # Author : oldboy # Mail : [email protected]########################################################## ./etc/init.d/functions IP=`/sbin/ifconfig|awk -F '[ :]+''NR==2{print $4}'` # Defined result function function Msg(){ if [ $-eq 0 ];then action "$1" /bin/true else action "$1" /bin/false fi }# Defined Close selinux Functions function selinux(){ [ -f"/etc/selinux/config" ] && { sed -i's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/configsetenforce 0 Msg "Close selinux" } } # Defined add Ordinary usersFunctions function AddUser(){ id oldboy &>/dev/null if [ $-ne 0 ];then useradd oldboy &>/dev/null echo "123456"|passwd--stdin oldboy &>/dev/null && sed -ir '98a oldboyALL=(ALL) NOPASSWD:ALL' /etc/sudoers && visudo -c&>/dev/null Msg "AddUser oldboy" else echo "oldboy user isexist." fi } # Defined Hide the system version number Functionsfunction HideVersion(){ [ -f "/etc/issue" ] &&>/etc/issue [ -f "/etc/issue.net" ] && >/etc/issue.net Msg "Hide sys info." } # Defined SSHD configFunctions function sshd(){ sshd_file=/etc/ssh/sshd_config if [`grep "52113" $sshd_file|wc -l` -eq 0 ];then sed -ir "13 iPort52113PermitRootLogin noPermitEmptyPasswords noUseDNSnoGSSAPIAuthentication no" $sshd_file sed -i 's@#ListenAddress0.0.0.0@ListenAddress '${IP}':52113@g' $sshd_file /etc/init.d/sshdrestart >/dev/null 2>&1 Msg "sshd config" fi } # DefinedOPEN FILES Functions function openfiles(){ if [ `grep "nofile65535" /etc/security/limits.conf|wc -l` -eq 0 ];then echo '* -nofile 65535' >> /etc/security/limits.conf ulimit -SHn 65535Msg "open files" fi } function hosts(){ if [ ! -f/server/scripts/hosts ];then echo "/server/scripts/hosts is notexist,pls solve this question" sleep 300 exit 1 fi /bin/cp/server/scripts/hosts /etc/hosts } # Defined System StartupServices Functions function boot(){ export LANG=en for oldboy in`chkconfig --list|grep "3:on"|awk '{print $1}'|grep -vE"crond|network|rsyslog|sshd|sysstat"` do chkconfig $oldboy off doneMsg "BOOT config" } # Defined Time Synchronization Functionsfunction Time(){ grep "time.nist.gov" /var/spool/cron/root >/dev/null 2>&1 if [ $ -ne 0 ];then echo "#time sync byoldboy at $(date +%F)" >>/var/spool/cron/root echo '*/5 * * ** /usr/sbin/ntpdate time.nist.gov &>/dev/null'>>/var/spool/cron/root fi Msg "Time Synchronization" } #Defined Kernel parameters Functions function kernel(){ /bin/cp/etc/sysctl.conf /etc/sysctl.conf.$RANDOM /bin/cp/server/scripts/sysctl.conf /etc/ Msg "kernel" } functioniptables(){ /etc/init.d/iptables stop /etc/init.d/iptables stop Msg"iptables" } function hostname(){ ip=`/sbin/ifconfig eth1|awk -F "[:]+" 'NR==2{print $4}'` name=`grep -w "$ip" /etc/hosts |awk '{print$2}'` sed -i 's/HOSTNAME=*/HOSTNAME='"$name"'/g'/etc/sysconfig/network /bin/hostname $name Msg "hostname" } #Defined main Functions function main(){ AddUser HideVersion sshdopenfiles hosts boot Time kernel iptables hostname } main
执行时的输出信息如图15-2所示。
图15-2 优化系统脚本的执行后输出信息
执行后的具体检查结果就不多描述了,读者也可以写一个检查的脚本。关于优化部分内容请参考第3章“CentOS6.6连接管理及优化”。
下面即将介绍的backup_to_rsync.sh脚本是所有服务器通用的重要数据备份脚本,此脚本需要rsync服务的支持,因此,需要先部署完rsync备份服务器,然后才可正确运行,通过执行设定脚本set_backup_script.sh即可将backup_to_rsync.sh设置为定时任务,即每天晚上0点执行backup_to_rsync.sh,实现所有节点异地数据的集中备份,备份服务器为rsync备份服务器。
在介绍backup_to_rsync.sh脚本之前,先介绍一下backuplist,它为要备份的数据文件名称或目录,需要以全路径形式列出来,可以是文件或目录,读者可以根据业务服务器的需要在文件内添加需要备份的数据。这里列举要备份的基本内容,如下:
[root@oldboy scripts]# cat /server/scripts/backuplist/server/scripts /etc /var/spool/cron
backup_to_rsync.sh为通用常规数据备份脚本,功能是先在本地打包备份数据并记录数据包文件的md5值,然后推送到rsync备份服务器上,最后在本地留存7天内的数据副本。
[root@oldboy scripts]# cat backup_to_rsync.sh #!/bin/bash #Source function library . /etc/init.d/functionsrsync_host=rsync.etiantian.org # Defined variables IP=$(ifconfigeth1|awk -F '[ :]+' 'NR==2 {print $4}') Path="/backup/$IP"TIME=`/bin/date +%F` BackupFile=/server/scripts/backuplist # Judgedthe existence of variables [ ! -d $Path ] && mkdir -p $Path[ ! -f $BackupFile ] && { echo "Please give me $BackupFile"exit 1 } # Defined result function function Msg(){ if [ $ -eq 0];then action "$*" /bin/true else action "$*" /bin/false fi } #Backup config files tar zcfh $Path/conf_${TIME}.tar.gz `cat$BackupFile` &>/dev/null Msg 'Backup config files' # Make aflag for backup find $Path -type f -name "*${TIME}.tar.gz"|xargsmd5sum >$Path/flag_$TIME 2>/dev/null Msg 'Make a flag forbackup' # Send backup to backup server rsync -az $Pathrsync_backup@${rsync_host}::backup--password-file=/etc/rsync.password &>/dev/null Msg 'Sendbackup to backup server' # Delete backup a week ago find${Path-/tmp} -type f -name "*.tar.gz" -mtime +7|xargs rm -f&>/dev/null Msg 'Delete backup a week ago'
通过set_backup_script.sh脚本可实现为备份数据脚本设置为系统定时任务,每天0点备份推送数据,并清除7天前的数据副本。
[root@oldboy scripts]# cat set_backup_script.sh #!/bin/shfunction crond_backup(){ [ `crontab -l|grep "backup data"|wc -l`-eq 0 ] &&{ echo -e "#backup data00 00 * * * /bin/sh/server/scripts/backup_to_rsync.sh >/dev/null 2>&1">> /var/spool/cron/root crontab -l sleep 2 }||{ echo "backupcron is exist,no config." } } crond_backup
2.监控管理服务器的安装部署规划
(1)监控管理服务器信息说明
监控管理服务器在集群中的作用非常关键,它可用来监控所有集群服务器节点的工作是否正常,因此这个服务器安排到集群节点第一或仅次于rsync备份服务的位置部署,详细说明如下。
主机名及IP为:MAGE-monitor-01(eth1:172.16.1.200)。监控管理服务器在集群中非常关键,监控的内容除了确定所有集群服务器节点工作是否正常以外,还包括服务器是否宕机、各类服务是否异常(例如:Web、数据库、存储等),因此,优先部署此服务对整个集群服务的部署很有利,这个监控服务器相当于军队里哨兵的角色。
表15-11为监控管理服务器的Nagios信息规划明细。
表15-11 监控管理服务器Nagios信息规划
(2)监控管理服务器部署说明
有关监控管理服务器部署过程请参考第14章“企业级监控Nagios服务应用”,部署完基础监控平台后,以后每新增一个服务器,都要部署一个nrpe客户端到新增服务器上,并在监控服务器上添加对应的服务器及服务监控,nrpe等客户端也可随优化脚本自动安装好。监控管理服务器的逻辑图如图15-3所示。
图15-3 监控管理服务器架构逻辑图
(3)兼任批量部署、管理服务
由于机器有限,可以让监控服务器同时兼任Saltstack批量部署和管理的服务器,如果机器数量少也可以使用SSHkey的方案,此内容的学习和搭建,请参考老男孩的其他相关课程。
3.rsync备份服务器的安装部署规划
(1)rsync备份服务器信息说明
rsync备份服务器在集群中的作用非常关键,它是用来存放所有集群服务器节点的重要数据备份的,这个服务器安排到第二位来部署,详细说明如下。
主机名及IP为:STORE-Rsync-01(eth1:172.16.1.31),rsync服务器主要是用作备份服务器,用来存储所有集群服务器节点的重要文件,例如:/etc/rc.local[开机自启动文件]、/data0[web站点目录]、/app/logs[web日志目录]、/server/scripts[脚本目录]、/var/spool/cron[定时任务目录]等数据的备份;并与NFS存储服务器实现文件、图片等资源异机实时复制,及NFS服务故障的接管等,表15-12为rsync备份服务器信息规划。
表15-12 rsync备份服务器信息规划
下面是该rsync备份服务器部署的主要应用:
·安装及配置rsync服务,见脚本rsync.sh。
·开发rsync服务启动脚本,见脚本rsyncd。
·检查rsync服务器上的备份数据是否完整并将结果通过定时任务,于每天早晨8点发送至管理员信箱,见脚本check_bak.sh。
·安装Keepalived软件,具体方法请参考第12章“Keepalived高可用集群应用实践”。
(2)部署的主要应用说明
安装配置rsync服务,操作过程见rsync.sh脚本,如下:
[root@STORE-Rsync-01 rsync]# cat/server/scripts/rsync.sh#!/bin/bash######################################################################### File Name : rsync.sh # description : install and config rsyncserver # Author : oldboy # Mail : [email protected]########################################################################[ -f /etc/init.d/functions ] && . /etc/init.d/functionsfunction Msg(){ if [ $ -eq 0 ];then action "$*" /bin/true elseaction "$*" /bin/false fi } function rsyncd_conf(){cat>/etc/rsyncd.conf<<-EOF sync server #created by oldboy15:01 2015-6-18 ##rsyncd.conf start## uid = rsync gid = rsync usechroot = no max connections = 2000 timeout = 600 pid file =/var/run/rsyncd.pid lock file = /var/run/rsync.lock log file =/var/log/rsyncd.log ignore errors read only = false list = falsehosts allow = 172.16.1.0/24 hosts deny = 0.0.0.0/24 auth users =rsync_backup secrets file = /etc/rsync.password##################################### [backup] comment = backserver by oldboy 14:18 2015-6-18 path = /backup EOF Msg"rsyncd_conf" } function rsync(){ useradd -u 666 rsync -M -s/sbin/nologin [ ! -d /backup ] && mkdir -p /backup [ ! -d/server/tools ] && mkdir -p /server/tools [ ! -d/server/seripts ] && mkdir -p /server/scripts chown -Rrsync.rsync /backup echo "rsync_backup:oldboy123" >/etc/rsync.password && chmod 600 /etc/rsync.password#判断rsync是否启动 [ ! -f /server/scripts/rsyncd ] && { echo"/server/scripts/rsyncd is not exist,error." exit 2 } cp/server/scripts/rsyncd /etc/init.d/ chmod 755 /etc/init.d/rsyncdnetstat -nultp |grep "873" if [ $ -eq 0 ]; then echo "rsync isrunning" >/dev/null else /etc/init.d/rsyncd restart fi/sbin/chkconfig --add rsyncd /sbin/chkconfig rsyncd on Msg "rsync"sleep 1 } ###set mail### function postfix(){ if [ `grep "oldboyedu"/etc/mail.rc|wc -l` -eq 0 ];then /bin/cp /etc/mail.rc/etc/mail.rc.$RANDOM echo -e "set [email protected]=smtp.163.comset smtp-auth-user=oldboyedusmtp-auth-password=oldboy123 smtp-auth=login" >>/etc/mail.rc/etc/init.d/postfix restart else echo "postfix is not need toconfig it." fi sleep 1 } function crond_check(){ [ `crontab -l|grep"check.sh"|wc -l` -eq 0 ] &&{ echo -e "#check backup00 08 ** * /bin/sh /server/scripts/check.sh >/dev/null 2>&1">> /var/spool/cron/root crontab -l sleep 2 }||{ echo"check.sh cron is exist,no config." } } function main(){rsyncd_conf rsync postfix crond_check } main
开发rsync服务的启动脚本,以下为rsyncd脚本内容。
[root@oldboy rsync]# cat rsyncd #!/bin/bash #start the rsync#chkconfig: 2345 56 24 #description: This is about rysnc restartshell . /etc/init.d/functions RETVAL=0 prog="rsync" #check if rsyncis already running start(){ if [ ! -f /var/run/rsyncd.pid ];then/usr/bin/rsync --daemon --config=/etc/rsyncd.conf fi RETVAL=$ sleep1 if [ $RETVAL -eq 0 ];then action "starting $prog ......"/bin/true else action "starting $prog ......" /bin/false fi return$RETVAL } stop(){ killproc /usr/sbin/rsync RETVAL=$ sleep 1 if [$RETVAL -eq 0 ];then rm -f /var/run/rsyncd.pid action "stopped$prog ......" /bin/true else action "stopped $prog ......"/bin/false fi } restart(){ $0 stop $0 start } case "$1" in start)start;; stop) stop;; restart|reload) restart;; *) echo "Usage:$0{start|stop|restart}" exit 1 esac
检查备份数据是否完整,并将结果通过定时任务于每天早晨8点发送管理员信箱,具体见脚本check_bak.sh,如下。
#!/bin/bash DIR=/backup TIME=`/bin/date +%F`log=/tmp/$TIME-check.log [ -d $DIR ] &&{ find $DIR -type f-name "flag_$TIME"|xargs md5sum -c >$log 2>/dev/null mail -s"$(date +%F_%T) backup check result" [email protected] <$log }
提示:
1)邮箱服务器的配置见rsync.sh脚本内容。
2)利用指纹比对文件时,要求节点服务器和备份服务器的路径相同。
安装Keepalived高可用服务软件,可在NFS存储服务宕机时,让rsync热备服务器及时接管NFS存储服务,Keepalived高可用服务内容请参考第12章“Keepalived高可用集群应用实践”。
部署实现后的rsync备份服务器的逻辑图如图15-4所示。
图15-4 rsync备份服务器逻辑图
4.NFS服务器安装部署规划设计
(1)NFS服务器相关说明
NFS服务被用作所有相同业务网站集群服务节点的后端共享存储,例如:图片、附件、头像、视频等的共享存储,由于NFS服务为单点,因此,要通过inotify(也可以通过drbd或程序双写等实时同步方案备份NFS数据)实现把NFS数据实时同步到rsync备份服务器,并且配置Keepalived服务,实现NFS服务的高可用宕机接管。
以下是NFS服务器(STORE-NFS-01(VIP:172.16.1.32)(eth1:172.16.1.30))在集群中的作用说明:NFS是整个集群服务的后端数据共享服务器,主要用于集群节点的所有Web服务器的挂载,以及图片、附件等资源的存放,并通过inotify把NFS数据实时同步到rsync备份服务器,此外,它还配置了Keepalived服务,来实现NFS服务的高可用宕机接管。表15-13为NFS服务器信息规划。
表15-13 NFS服务器信息规划
NFS服务器安装部署的主要应用如下:
·安装了NFS共享存储服务。
·安装了Keepalived高可用服务。
·安装了inotify实时监控,并编写了脚本启动inotify服务,见inotify.sh脚本。
·对基础重要数据定时备份(见“集群所有服务器系统的基础优化”相关内容)。
(2)安装的应用说明
·安装的NFS共享存储服务,用于存放所有集群Web服务器上传的图片、附件、头像等。此部分内容请参考第10章“企业级NFS网络文件共享服务”。
·安装的Keepalived高可用服务,用于NFS服务宕机时,可让rsync服务器热备NFS服务接管NFS服务,此部分内容请参考第12章“Keepalived高可用集群应用实践”,NFS服务器为MASTER,VIP为172.16.1.32,前端所有集群Web服务器节点都挂载到NFS的这个VIP地址上。
install_inotify.sh为安装inotify实时监控服务的脚本,如下。
[root@STORE-NFS-01 nfs]# cat install_inotify.sh #!/bin/bash [ !-f /etc/yum.repos.d/epel.repo ] && wget -O/etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo if [ $ -eq 0 -a `rpm -qainotify-tools|wc -l` -ne 1 ];then yum -y install inotify-toolsfi
inotifyd.sh实时监控服务的脚本,如下。
[root@STORE-Rsync-01 nfs]# cat inotifyd.sh #!/bin/bash [ ! -f/etc/yum.repos.d/epel.repo ] && wget -O/etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo if [ $ -eq 0 -a `rpm -qainotify-tools|wc -l` -ne 1 ];then yum -y install inotify-tools fiinotify=/usr/bin/inotifywait rsync_host=rsync.etiantian.org [ ! -d/data0 ]&& mkdir /data0 $inotify -mrq --format '%w%f' -ecreate,close_write,delete /data0 |while read file do cd /&& rsync -az /data0 --deletersync_backup@${rsync_host}::backup/--password-file=/etc/rsync.password done
提示:此脚本依赖于rsync备份服务器
NFS服务器基础重要数据的定时备份见“集群所有服务器系统的基础优化设置”相关内容。
最终部署完成的NFS共享存储服务器逻辑图如图15-5所示,见虚线部分。
图15-5 NFS共享存储服务逻辑图
5.MySQL数据库服务器安装配置规划设计
本文采用企业典型的MySQL双主多从的数据库架构,所有从库都和主库对外提供服务的VIP进行复制。在部署网站产品数据库数据时,需要将前面章节搭建好的bbs、cms、blog库备份出来,还原到MySQL主库上。表15-14为MySQL服务器在集群中的架构及作用说明,表15-15为MySQL数据库服务器信息规划情况。
表15-14 MySQL服务器在集群中的架构及作用说明
表15-15 MySQL数据库服务器信息规划
特别说明:MySQL主数据库VIP为172.16.1.52 dbmaster_vip.etiantian.org
图15-6为MySQL数据库服务集群架构的逻辑图,见虚线部分。
一主多从的实现部分请参考第9章“MySQL数据库企业级应用实践”,有关LVS的部署请参考其他文章或者老男孩发布的其他集群课程,这里作为架构框架进行说明。
6.Memcached缓存服务及架构规划设计
Memcached缓存服务器相关说明
表15-16为Memcached缓存服务在集群中的架构及作用说明,表15-17为Memcached缓存服务器信息规划情况。
图15-6 MySQL数据库集群架构图
表15-16 Memcached缓存服务在集群中的架构及作用说明
表15-17 Memcached缓存服务器信息规划
特别说明:Memcached缓存服务器的VIP为172.16.1.63 mc_vip.etiantian.org。
关于Memcached缓存服务的安装请参考第13章“Memcached数据缓存服务应用”图15-7为Memcached数据缓存服务架构逻辑图,见虚线部分。
图15-7 Memcached数据缓存服务架构逻辑图
7.LNMP Web服务及架构规划设计
LNMP Web服务器的主要服务为Nginx静态服务,以及结合Nginx的PHPFastcGI动态PHP服务。这里设计搭建一个类51CTO网站的IT资讯平台,具体的搭建说明请参看前面的Web应用章节,有一点特别要注意,在部署bbs、cms、blog三个开源PHP网站产品时,如果之前已经装好了上述产品,这里就不需要从Web界面安装网站产品了,只需打包部署好的网站程序到多个LNMP服务器的对应目录上即可,网站产品数据库的数据也是导出来就可以还原到主数据库服务器上的。表15-18为LNMPWeb服务器在集群中的架构及作用说明,表15-19为LNMP Web服务器信息规划情况。
表15-18 LNMP Web服务器在集群中的架构及作用说明
表15-19 LNMP Web服务器信息规划
特别说明:Memcached缓存服务器VIP为10.0.0.3 lb01_vip.etiantian.org。
图15-8为LNMP Web服务器架构逻辑图,见虚线部分。
图15-8 LNMP Web服务器架构逻辑图
下面是LNMP Web服务架构图说明。
·LNMP Web服务负责接收用户的请求,将用户上传的资源文件(图片、附件、视频、头像等),放入NFS共享存储服务器中。
·LNMP Web服务将用户发布的帖子博文等内容写入到MySQL主数据库中。
·LNMPWeb服务读取用户要请求的数据时,会先读取Memcached缓存服务器,如果有用户请求的数据,则直接返回数据给用户。
·如果Memcached缓存服务器没有用户请求的数据,LNMPWeb服务会去请求从负载均衡数据库集群上获取数据。获取数据返回用户后,又把数据缓存到Memca-ched服务内存中,以便下次可以直接从缓存获得数据,从而减轻数据库的压力。
8.Nginx反向代理及负载均衡服务及架构规划设计
表15-20为Nginx反向代理及负载均衡服务器相关说明,表15-21为Nginx反向代理及负载均衡服务器信息规划。
表15-20 Nginx反向代理及负载均衡服务器相关说明
表15-21 Nginx反向代理及负载均衡服务器信息规划
图15-9为Nginx反向代理及负载均衡服务架构逻辑图,见虚线部分。
在大并发大流量的时候,企业也会在Nginx反向代理的前面加LVS等四层负载均衡,将Nginx反向代理用于7层应用层的负载均衡,此部分内容请参考老男孩的其他课程。
9.跳板机管理服务器及架构规划设计
表15-22为跳板机管理功能服务器相关说明,表15-23为跳板机管理服务器信息规划。
图15-10为跳板机管理服务架构逻辑图,见虚线部分。
图15-9 Nginx反向代理及负载均衡服务架构逻辑图
表15-22 集群管理功能服务器相关说明
表15-23 跳板机管理服务器信息规划
图15-10 集群管理功能服务架构逻辑图 跟老男孩学Linux运维:Web集群实战