打赏 jQuery火箭图标返回顶部代码

Keepalivaed +Nginx proxy 高可用架构方案与实施过程细节

1.开源产品介绍

1)CMS介绍

官方网站http://www.dedecms.com/,是一个网站应用系统构建平台,也是一个强大的网站内容管理系统,既可以用来构建复杂的体系的企业信息门户或者电子商务网站平台,也可以管理简单内容发布网站,能最大限度的去自由发挥网站的设计天才,更轻松的驾驭管理您的网站而不需要非常专业的网站技术,例如www.51.cto.com就是dedeCMS修改而成的。

2)discuz论坛介绍

官网:http://www.discuz.net

Crossday Discuz! Board (简称Discuz!)全球成熟度最高,覆盖率最大的论坛软件系统之一,10年8月23日腾讯收购它。

3)wordpress博客介绍

官网:https://cn.wordpress.org/

WordPress是一种PHP语言和MySQl数据库开发的开源,免费的blog(博客,网站)引xing,用户可以在支持PHP和mysql数据库的服务器上建立自己的Blog。

2.详细思路说明

1.架构图

2.数据流说明

  1,用户通过INTERNET访问到web服务器www.king.com/blog.king.com/bbs.kingcom域名,

  2,用户更新帖子,发布博客等,将数据写入到数据库(MySQL)

  3,用户上传图片,将通过web服务器把数据上传到NFS存储上,而不是保留在web服务器本地

  4,所有的数据最终都备份到备份的服务器上。

  5,NFS存储兼职分发的服务器,会把需要的分发文件批量分发到其他网内节点服务器。

3.生产环境搭建需求

1,软件需求

Linux CentOS 6.5 32bit/64bit
Apache 2.2.22
MySQL 5.5
PHP 5.3

2,ip地址需求

  内网 外网
web    
MySQl    
NFS    
rsync    

3,服务器需求

     
web A  
mysql B 1
NFS C  
rsync D  
分发服务器 C  

4,架构需求

1,配置web服务器A,搭建LAMP环境,设置是哪个虚拟主机,虚拟主机分别是www.king.com,blog.king.com,bbs.kingcom。

2,虚拟主机站点目录结构要求

1 [root@king] # tree /data/
2 /data/
3 `--www
4   |--www
5   |--blog
6   |--bbs

3,搭建专用的数据库服务器B,存储web服务器上的cms,bbs,blog等动态数据,

4,搭建NFS共享共存服务器C,存储web服务器上的cms,bbs,blog资源数据,如图片,附件,头像等。(注意:NFS共享存储服务器只存放对用户来说上传的资源数据)

5,搭建备份服务器D,用来备份web,mysql,及NFS存储上的数据

6,NFS存储服务器上有写入的数据时,要实时将NFS上的图片,附件等同步到rsync服务的热备服务器D(当NFS存储宕机,可以手动切换,使得D服务器继续替代NFS提供服务)

7,web服务器每天晚上00点备份程序目录及访问日志,并推送到热备份服务器(Web服务器本地保留7天的数据,备份服务器上保留3个月数据副本)

8,MySQl服务器每天晚上00.30备份数据库,并推送到热备份服务器(数据库本地保留7天的数据,备份服务器上保留3个月数据副本)

9,NFS存储C兼职分发服务器,会把需要的分发的文件批量分发到其他网内节点,如;A.D

10,所有服务配置定时时间同步,这里会遭遇到问题,所有内网服务器(10.0.10.0/24)必须通过web server上网,当然你也可以配置 ntp server。

所用到技术: Linux ,apache,PHP ,ssh key ,NFS ,rsync,sersync,crontab,shell。

所用到的硬件配置

 

4.部署前系统检测

1,查看硬件产品名称

1 [root@sersync_server]# dmidecode|grep "Product Name"
2 Product Name :PowerEdge R710
3 Product Name :OVWNIR

2,查看CPU型号

1 [root@sercync_server ~]# grep name /proc/cpuinfo
2 modelname    : Intel(R) Xeon(R) CPU    E5606 @ 2.13GHZ

3,查看CPU个数

1  [root@sercync_server ~]# grep "physical id" /proc/cpuinfo
2  physical id    :    1

4,查看内存信息

1 [root@sercync_server ~]# grep MemTotal /proc/meminfo
2  MemToal:  403356 kB

 5,查看系统版本

1 [root@sercync_server ~]# cat /etc/redhat-release
2  CentOS release 6.5(Fina)
3 [root@sercync_server ~]#uname -r
4  2.6.18-308.el5
5 [root@sercync_server ~]#uname -m
6  x86_64

6,关闭防火墙

1 [root@sercync_server ~]# chkconfig iptables off
2 [root@sercync_server ~]# /etc/init.d/iptables stop
3 Flushing firewall reles                              [OK]              
4 Setting chains to policy ACCEPT :filter              [OK]   
5 Unloading iptables modules                           [OK]  

7,关闭selinux

 1 [root@sercync_server ~]#sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
 2 [root@sercync_server ~]# grep SELINUX /etc/selinux/config
 3 #SELINUX= can take one of these three values;
 4 #       enforcing -SELinux security policy is enforced.
 5 #       permissive -SELinux prints warnings instead of enforcing.
 6 #       disabled -SELinux is fully disabled.
 7 SELINUX=disabled
 8 [root@sercync_server ~]#setenforce 0
 9 [root@sercync_server ~]#getenforce
10 Permissive

8,添加一个用户

1 [root@sercync_server ~]#useradd king
2 [root@sercync_server ~]#id king
3 uid=500(king) gid=500(king) groups=500(king) context=root:system:unconfined:SystemLow-SystemHigh
4 [root@sercync_server ~]#

9,更改配置的yum源(aliyun)

1 [root@sercync_server ~]#cd /etc/yum.repos.d/
2 [root@sercync_server ~]#/bin/mv CentOS-Base.repo CentOS-Base.repo.ori      #这是对系统自带的源做个备份
3 [root@sercync_server ~]#wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
4 [root@sercync_server ~]#

5.系统调优

1,清理开机自启动的服务

1 [root@sercync_server ~]#for service in 'chkconfig --list|grep 3:on'|sed 's/0:off.*//g';do chkconfig --level 3 $service off;done
2 [root@sercync_server ~]#for service in crond network syslog sshd;do chkconfig --level -$service on;done
3 [root@sercync_server ~]#chkconfig --list |grep 3:on
4 cond         0:off    1:off    3:on    4:on    5:on    6:off
5 network      0:off    1:off    3:on    4:on    5:on    6:off
6 sshd         0:off    1:off    3:on    4:on    5:on    6:off
7 syslog       0:off    1:off    3:on    4:on    5:on    6:off

 2,更改ssh登陆配置

1 [root@sercync_server ~]#cp /etc/ssh/sshd_config /etc/ssh/sshd_config.ori    #更改配置前进行备份。
2 [root@sercync_server ~]#vim /etc/ssh/sshd_config
3 ####by king#2018-10-14##
4 Port 112    #ssh连接默认的端口,默认端口为22
5 PermitRootLogin no     #禁止root远程登陆
6 PermitEmptyPasswords no    #禁止空密码登陆
7 UseDNS no            #不适用DNS
8 ####by king#2018-10-14##

用脚本来实现

1 [root@sercync_server ~]#\cp  /etc/ssh/sshd_config /etc/ssh/sshd_config.`date+%Y-%m-%d_%H-%M-%S`
2 sed -i 's%#Port 22%Port 112%' /etc/ssh/sshd_config
3 sed -i 's%#PermitRootLogin yes%PermitRootLogin no%' /etc/ssh/sshd_config
4 sed -i 's%#PermitEmptyPasswordsyes%PermitEmptyPasswords no%' /etc/ssh/sshd_config
5 sed -i 's%#UseDNS yes%UseDNS  no%' /etc/ssh/sshd_config

3,将king普通用户加入到sudo管理

1 [root@sercync_server ~]#visudo #相当于编辑/etc/sudoer
2 #User privilege specification
3 root ALL=(ALL)ALL
4 king ALL=(ALL)ALL    #这样表示king可以拥有完全的系统管理权限,

4,修改中文显示

1 [root@sercync_server ~]#echo 'LANG="zh_CN.GB18030"'>/etc/sysconfig/il8n
2  source /etc/sysconfig/il8n    #使修改的生效

5,服务器时间同步

1 [root@sercync_server ~]#echo '*/5* * * * /usr/sbin/ntpdatetime.windows.com>dev/null2>&1'>>/var/spool/cron/root    
#相当于执行crontab -e 然后加入内容为*/5* * * * /usr/sbin/ntpdatetime.windows.com>dev/null2>&1退出保存

6,定时清理优化的任务

#find /var/spool/clientmqueue/ -type f -mtime +30/xargs rm -f

7,加大服务器文件描述符

1 [root@sercync_server ~]#echo'*        -          nofile     2048'        >>/etc/security/limits.conf #注意这里需要重登陆才生效
2 [root@sercync_server ~]#tail -1 /etc/security/limits.conf
3 *        -          nofile     2048
4 [root@sercync_server ~]#limit -n
5 2048

 8,简单的优化

 1 [root@sercync_server ~]#cp /etc/sysctl.conf /etc/sysctl.conf.`data+%Y-%m-%d_%H-%M-%S`
 2 [root@sercync_server ~]#cat >>/etc/sysctl.conf<<EOF
 3 net.ipv4 tcp_timestamp =0
 4 net.ipv4 tcp_synack_retries =2
 5 net.ipv4 tcp_syn_retries =2
 6 net.ipv4 tcp_mem =120000 120000 120000
 7 net.ipv4 tcp_max_orphans =3276800
 8 net.core.rmem_default =8388608
 9 net.core.wmem_default =8388608
10 net.core.rmem_max=16777216
11 net.core.wmem_max=16777216
12 net.ipv4.tcp_rmem=4096 87380 16777216  
13 net.ipv4.tcp_wmem=4096 65536 16777216
14 net.core.netdev_max_backlog = 30000
15 net.core.somaxconn = 32768
16 net.ipv4.tcp_syncookies = 1
17 net.ipv4.tcp_tw_reuse = 1
18 net.ipv4.tcp_tw_recycle = 1
19 net.ipv4.tcp_fin_timeout = 1
20 net.ipv4.tcp_keepalive_time = 1200
21 net.ipv4.tcp_max_syn_backlog = 65536
22 net.ipv4.ip_local_port_range = 1024 65536  
23 EOF

6.系统安装

1,批量创建用户king{1..10}

[root@sercync_server ~]#echo king{01..10}|tr " " "\n"|sed -r 's#(.*)#useradd \1 ; pass=$((RANDOM+1000)); echo "$pass"|passwd --stdin \1; echo -e "\1 \t `echo "$pass"`">>/tmp/king.log#g'|bash

2,安装MySQL

首先我们应该分析那台服务器需要安装mysql,Apache承担web服务,MySQL承担数据存储,所以这俩台服务器应该安装MySQl,安装MySQL:点我,注意,这里Apache只需要make install 就可以了。

3,配置rsync,ssh_key,expect

 首席我们还是应该分析那台服务器需要安装rsync,NFS是分发服务器并兼职分发,所以我们应该在NFS服务器上安装rsync,安装ssh_key,这里我们是把公钥id_rsa.pub分发到你的Apache服务器,和MySQL服务器,和热备份服务器,因为ssh_key分发的时候会向你要yes ,和密码所以我们用expect来分发。

1 [root@rsync_server ~] yum install -y expect #安装expect

Keepalivaed +Nginx proxy Loading。。。待更新。。

 

posted @ 2018-10-18 19:59  浪漫De刺猬  阅读(643)  评论(0编辑  收藏  举报