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 ...
随机推荐
- 根据FileUpload的值,控制textBox的可用与否
JS代码: <script type="text/javascript"> $(document).ready(function () { $("#<% ...
- Day1下午
T1 暴力50分 排A和B X,不用考虑X 用数组80分, 权值线段树.平衡树100, 一个函数? T2 打表 dp logn+1,+ 搜索,dp? txt..... T3 30分暴力和尽量均 ...
- AJPFX关于面向对象之封装,继承,多态 (上)
Java是一种面向对象的语言,这是大家都知道的,他与那些像c语言等面向过程语言不同的是它本身所具有的面向对象的特性--封装,继承,多态,这也就是传说中的面向对象三大特性 一:从类和对象开始说起: Oo ...
- bootstrapTable的数据后端分页排序
数据后端分页排序,其实就是sql语句中oeder by做一些限制. 之前在写sql语句中的order by是写死,既然要写活,就要传参数到后台. 之前讲到bootstrapTable的queryPar ...
- Linux 下查找指令
原文链接:http://www.cnblogs.com/sunleecn/archive/2011/11/01/2232210.html whereis <程序名称>查找软件的安装路径-b ...
- iOS - 毛玻璃动画效果
声明全局变量 #define kMainBoundsHeight ([UIScreen mainScreen].bounds).size.height //屏幕的高度 #define kMainBou ...
- Unity3D Shader性能排行
整体上,性能由高到低: Unlit,仅为纹理,光线不产生效果 VertexLit Diffuse 漫反射 Normal Mapped 法线贴图 Specular 高光 Normal Mapped Sp ...
- alias 新的命令='原命令 -选项/参数'。举例说明,alias l=‘ls -lsh' 将重新定义 ls 命令,现在只需输入 l 就可以列目录了。
alias 新的命令='原命令 -选项/参数'.举例说明,alias l=‘ls -lsh' 将重新定义 ls 命令,现在只需输入 l 就可以列目录了.
- javascript字符串格式化string.format
String.prototype.format = function () { var values = arguments; return this.replace(/\{(\d+)\}/g, fu ...
- Visual Studio 更改护眼颜色