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博客介绍

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,虚拟主机站点目录结构要求
[root@king] # tree /data/
/data/
`--www
|--www
|--blog
|--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,查看硬件产品名称
[root@sersync_server]# dmidecode|grep "Product Name"
Product Name :PowerEdge R710
Product Name :OVWNIR
2,查看CPU型号
[root@sercync_server ~]# grep name /proc/cpuinfo
modelname : Intel(R) Xeon(R) CPU E5606 @ .13GHZ
3,查看CPU个数
[root@sercync_server ~]# grep "physical id" /proc/cpuinfo
physical id :
4,查看内存信息
[root@sercync_server ~]# grep MemTotal /proc/meminfo
MemToal: kB
5,查看系统版本
[root@sercync_server ~]# cat /etc/redhat-release
CentOS release 6.5(Fina)
[root@sercync_server ~]#uname -r
2.6.-.el5
[root@sercync_server ~]#uname -m
x86_64
6,关闭防火墙
[root@sercync_server ~]# chkconfig iptables off
[root@sercync_server ~]# /etc/init.d/iptables stop
Flushing firewall reles [OK]
Setting chains to policy ACCEPT :filter [OK]
Unloading iptables modules [OK]
7,关闭selinux
[root@sercync_server ~]#sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
[root@sercync_server ~]# grep SELINUX /etc/selinux/config
#SELINUX= can take one of these three values;
# enforcing -SELinux security policy is enforced.
# permissive -SELinux prints warnings instead of enforcing.
# disabled -SELinux is fully disabled.
SELINUX=disabled
[root@sercync_server ~]#setenforce
[root@sercync_server ~]#getenforce
Permissive
8,添加一个用户
[root@sercync_server ~]#useradd king
[root@sercync_server ~]#id king
uid=(king) gid=(king) groups=(king) context=root:system:unconfined:SystemLow-SystemHigh
[root@sercync_server ~]#
9,更改配置的yum源(aliyun)
[root@sercync_server ~]#cd /etc/yum.repos.d/
[root@sercync_server ~]#/bin/mv CentOS-Base.repo CentOS-Base.repo.ori #这是对系统自带的源做个备份
[root@sercync_server ~]#wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
[root@sercync_server ~]#
5.系统调优
1,清理开机自启动的服务
[root@sercync_server ~]#for service in 'chkconfig --list|grep 3:on'|sed 's/0:off.*//g';do chkconfig --level $service off;done
[root@sercync_server ~]#for service in crond network syslog sshd;do chkconfig --level -$service on;done
[root@sercync_server ~]#chkconfig --list |grep :on
cond :off :off :on :on :on :off
network :off :off :on :on :on :off
sshd :off :off :on :on :on :off
syslog :off :off :on :on :on :off
2,更改ssh登陆配置
[root@sercync_server ~]#cp /etc/ssh/sshd_config /etc/ssh/sshd_config.ori #更改配置前进行备份。
[root@sercync_server ~]#vim /etc/ssh/sshd_config
####by king#--##
Port #ssh连接默认的端口,默认端口为22
PermitRootLogin no #禁止root远程登陆
PermitEmptyPasswords no #禁止空密码登陆
UseDNS no #不适用DNS
####by king#--##
用脚本来实现
[root@sercync_server ~]#\cp /etc/ssh/sshd_config /etc/ssh/sshd_config.`date+%Y-%m-%d_%H-%M-%S`
sed -i 's%#Port 22%Port 112%' /etc/ssh/sshd_config
sed -i 's%#PermitRootLogin yes%PermitRootLogin no%' /etc/ssh/sshd_config
sed -i 's%#PermitEmptyPasswordsyes%PermitEmptyPasswords no%' /etc/ssh/sshd_config
sed -i 's%#UseDNS yes%UseDNS no%' /etc/ssh/sshd_config
3,将king普通用户加入到sudo管理
[root@sercync_server ~]#visudo #相当于编辑/etc/sudoer
#User privilege specification
root ALL=(ALL)ALL
king ALL=(ALL)ALL #这样表示king可以拥有完全的系统管理权限,
4,修改中文显示
[root@sercync_server ~]#echo 'LANG="zh_CN.GB18030"'>/etc/sysconfig/il8n
source /etc/sysconfig/il8n #使修改的生效
5,服务器时间同步
[root@sercync_server ~]#echo '*/5* * * * /usr/sbin/ntpdatetime.windows.com>dev/null2>&1'>>/var/spool/cron/root
#相当于执行crontab -e 然后加入内容为*/* * * * /usr/sbin/ntpdatetime.windows.com>dev/null2>&1退出保存
6,定时清理优化的任务
#find /var/spool/clientmqueue/ -type f -mtime +/xargs rm -f
7,加大服务器文件描述符
[root@sercync_server ~]#echo'* - nofile 2048' >>/etc/security/limits.conf #注意这里需要重登陆才生效
[root@sercync_server ~]#tail - /etc/security/limits.conf
* - nofile
[root@sercync_server ~]#limit -n
8,简单的优化
[root@sercync_server ~]#cp /etc/sysctl.conf /etc/sysctl.conf.`data+%Y-%m-%d_%H-%M-%S`
[root@sercync_server ~]#cat >>/etc/sysctl.conf<<EOF
net.ipv4 tcp_timestamp =
net.ipv4 tcp_synack_retries =
net.ipv4 tcp_syn_retries =
net.ipv4 tcp_mem =
net.ipv4 tcp_max_orphans =
net.core.rmem_default =
net.core.wmem_default =
net.core.rmem_max=
net.core.wmem_max=
net.ipv4.tcp_rmem=
net.ipv4.tcp_wmem=
net.core.netdev_max_backlog =
net.core.somaxconn =
net.ipv4.tcp_syncookies =
net.ipv4.tcp_tw_reuse =
net.ipv4.tcp_tw_recycle =
net.ipv4.tcp_fin_timeout =
net.ipv4.tcp_keepalive_time =
net.ipv4.tcp_max_syn_backlog =
net.ipv4.ip_local_port_range =
EOF
6.系统安装
1,批量创建用户king{1..10}
[root@sercync_server ~]#echo king{..}|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来分发。
[root@rsync_server ~] yum install -y expect #安装expect
Keepalivaed +Nginx proxy Loading。。。待更新。。
Keepalivaed +Nginx proxy 高可用架构方案与实施过程细节的更多相关文章
- MySQL数据库的优化(下)MySQL数据库的高可用架构方案
MySQL数据库的优化(下)MySQL数据库的高可用架构方案 2011-03-09 08:53 抚琴煮酒 51CTO 字号:T | T 在上一篇MySQL数据库的优化中,我们跟随笔者学习了单机MySQ ...
- mysql复制(高可用架构方案的基础)
mysql复制:把一个数据库实例上所有改变复制到另外一个数据库库服务器实例的过程特点:1.没有改变就无所谓复制 ;改变是复制的根本与数据源2.所有的改变:是指可以复制全部改变,也可以复制部分改变 可以 ...
- (5.1)mysql高可用系列——高可用架构方案概述
关键词:mysql高可用概述,mysql高可用架构 常用高可用方案 20190918 现在业内常用的MySQL高可用方案有哪些?目前来说,用的比较多的开源方案分内置高可用与外部实现,内置高可用有如下: ...
- [MongoDB] 高可用架构方案
一.缘由: 众所周知,Mongodb是在高速发展期,一些特性架构难免会发生变化.这里就总结下,我目前所知道的Mongodb 的高可用架构都有哪些.目前Mongodb版本3.2. 二.结构介绍: 1.R ...
- mysql高可用架构方案之二(keepalived+lvs+读写分离+负载均衡)
mysql主从复制与lvs+keepalived实现负载高可用 文件夹 1.前言 4 2.原理 4 2.1.概要介绍 4 2.2.工作原理 4 2.3.实际作用 4 3方 ...
- mysql高可用架构方案之中的一个(keepalived+主主双活)
Mysql双主双活+keepalived实现高可用 文件夹 1.前言... 4 2.方案... 4 2.1.环境及软件... 4 2.2.IP规划... 4 2.3.架构图... ...
- 数据库高可用架构(MySQL、Oracle、MongoDB、Redis)
一.MySQL MySQL小型高可用架构 方案:MySQL双主.主从 + Keepalived主从自动切换 服务器资源:两台PC Server 优点:架构简单,节省资源 缺点:无法线性扩展,主从失 ...
- [转]数据库高可用架构(MySQL、Oracle、MongoDB、Redis)
一.MySQL MySQL小型高可用架构 方案:MySQL双主.主从 + Keepalived主从自动切换 服务器资源:两台PC Server 优点:架构简单,节省资源 缺点:无法线性扩展,主从失 ...
- 【亲述】Uber容错设计与多机房容灾方案 - 高可用架构系列
此文是根据赵磊在[QCON高可用架构群]中的分享内容整理而成.转载请事先联系赵磊及相关编辑. 赵磊,Uber高级工程师,08年上海交通大学毕业,曾就职于微软,后加入Facebook主要负责Messen ...
随机推荐
- Day3上
T1 星空[问题描述]你是能看到第一题的friends 呢.——hja点点星空是一张
- usb-host一步一步学(二)安卓在usb-host模式下列出当前连接的usb设备
之前写了一个简单的例子usb-host一步一步学(一)安卓在usb-host模式下列出当前连接的usb设备,下面的这个例子是获取各种usb设备.usb接口以及usb连接点(endpoint) 正如上一 ...
- hadoop集群搭建简要记录
2019/03/09 21:46 准备4台服务器或者虚拟机[centos7],分别设置好静态ip[之所以设置静态ip主要就是为了省心!!!][ centos7下面配置静态IP 参考地址: https ...
- vue-实现一个购物车结算页面
这是路由之间的跳转,传递值最好采用传参,而不是用$emit和$on,不起作用 如果实在一个页面中的兄弟组件,可以使用$emit和$on 中间件,eventBus.js 放在components目录下面 ...
- js绑定事件方法:addEventListener的兼容问题
js的事件绑定方法中,ie只支持attachEvent,而FF和Chrome只支持addEventListener;严格来说:addEventListener只有IE9以上版本的IE浏览器上能够兼容, ...
- SVN Working copy '***' locked
问题描述: 用svn在项目文件夹下commit或者update时会出现错误提示“working copy locked” 解决方法: 1.在项目文件夹下,单击鼠标右键,选择tortoisesvn-&g ...
- iOS - 协议实现的例子
在实际开发中,协议的应用非常广泛,以下是实际应用的例子. 1.协议的定义: myProtocolDelegate.h // // myProtocolDelegate.h // zlwPlayerAp ...
- centos 安装 freeswitch,开启与关闭
---恢复内容开始--- 官网说明地址 :https://freeswitch.org/confluence/display/FREESWITCH/CentOS+7+and+RHEL+7 1.获取源码 ...
- Myeclipse 突然打不开的问题
用的好好的Myeclipse今天突然打不开了,打开myeclipse提示 :an error has occurred see the log file 然后我打开日志文件,看到如下的报错信息: ! ...
- uLua学习之读取外部Lua脚本(四)
前言 上节说到了Lua脚本与unity3d中C#脚本的数据交互,但是我感觉上节中的数理方式不太好,因为我们是把Lua脚本以字符串形式粘贴到C#脚本中的,如果读取配置数据都这样做的话,那就太可怕了.想想 ...