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,虚拟主机站点目录结构要求

 [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 高可用架构方案与实施过程细节的更多相关文章

  1. MySQL数据库的优化(下)MySQL数据库的高可用架构方案

    MySQL数据库的优化(下)MySQL数据库的高可用架构方案 2011-03-09 08:53 抚琴煮酒 51CTO 字号:T | T 在上一篇MySQL数据库的优化中,我们跟随笔者学习了单机MySQ ...

  2. mysql复制(高可用架构方案的基础)

    mysql复制:把一个数据库实例上所有改变复制到另外一个数据库库服务器实例的过程特点:1.没有改变就无所谓复制 ;改变是复制的根本与数据源2.所有的改变:是指可以复制全部改变,也可以复制部分改变 可以 ...

  3. (5.1)mysql高可用系列——高可用架构方案概述

    关键词:mysql高可用概述,mysql高可用架构 常用高可用方案 20190918 现在业内常用的MySQL高可用方案有哪些?目前来说,用的比较多的开源方案分内置高可用与外部实现,内置高可用有如下: ...

  4. [MongoDB] 高可用架构方案

    一.缘由: 众所周知,Mongodb是在高速发展期,一些特性架构难免会发生变化.这里就总结下,我目前所知道的Mongodb 的高可用架构都有哪些.目前Mongodb版本3.2. 二.结构介绍: 1.R ...

  5. mysql高可用架构方案之二(keepalived+lvs+读写分离+负载均衡)

    mysql主从复制与lvs+keepalived实现负载高可用 文件夹 1.前言    4 2.原理    4 2.1.概要介绍    4 2.2.工作原理    4 2.3.实际作用    4 3方 ...

  6. mysql高可用架构方案之中的一个(keepalived+主主双活)

    Mysql双主双活+keepalived实现高可用           文件夹 1.前言... 4 2.方案... 4 2.1.环境及软件... 4 2.2.IP规划... 4 2.3.架构图... ...

  7. 数据库高可用架构(MySQL、Oracle、MongoDB、Redis)

    一.MySQL MySQL小型高可用架构 方案:MySQL双主.主从 + Keepalived主从自动切换   服务器资源:两台PC Server 优点:架构简单,节省资源 缺点:无法线性扩展,主从失 ...

  8. [转]数据库高可用架构(MySQL、Oracle、MongoDB、Redis)

    一.MySQL   MySQL小型高可用架构 方案:MySQL双主.主从 + Keepalived主从自动切换 服务器资源:两台PC Server 优点:架构简单,节省资源 缺点:无法线性扩展,主从失 ...

  9. 【亲述】Uber容错设计与多机房容灾方案 - 高可用架构系列

    此文是根据赵磊在[QCON高可用架构群]中的分享内容整理而成.转载请事先联系赵磊及相关编辑. 赵磊,Uber高级工程师,08年上海交通大学毕业,曾就职于微软,后加入Facebook主要负责Messen ...

随机推荐

  1. Ionic2集成DevExtreme

    安装Install DevExtreme Angular npm install --save devextreme devextreme-angular 或者在package.json 文件中增加依 ...

  2. 《C#高效编程》读书笔记10-使用可选参数减少方法重载数量

    C#现在支持调用者一方使用具名参数(named parameter).类型中的名称也成为了公有接口的一部分.修改公有参数名称将有可能破坏掉调用者的代码. public void SetName(str ...

  3. JAVA 面试重点知识个人总结

    一.集合: 1 .Collection(是java.util下的接口) 和 Collections(是java.util下的类). 2 .List, Set,是否继承自Collection接口,Map ...

  4. Second Highest Salary

    Write a SQL query to get the second highest salary from the Employee table. +----+--------+ | Id | S ...

  5. webpack实用小功能介绍

    1.overlay overlay属于devServer的属性,配置案例如下: ? 1 2 3 4 5 6 devServer: {  overlay: {   errors: true,   war ...

  6. mysql用户常见操作

    一, 创建用户: 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - 指 ...

  7. bootstrap标签tab切换

    <ul class="nav nav-tabs" id="myTab"> <li class="active">&l ...

  8. js函数获取ev对象

    今天工作中遇到一个问题,就是平时获取一个ev(event)对象时候一般直接在调用方法里面写一个ev参数,即可直接拿到这个对象,但是有时候会遇到函数调用不是直接加在一个dom对象的后面,如: var o ...

  9. nmon 工具的使用

    原文链接:https://www.ibm.com/developerworks/cn/aix/library/analyze_aix/ 引言 nmon 工具可以为 AIX 和 Linux 性能专家提供 ...

  10. LeetCode Missing Number (简单题)

    题意: 给一个含有n个整数的数组,数组中的元素应该是0-n.现在缺了其中某1个,找出缺少的那个整数? 思路: 0-n的总和是可以直接计算的,而缺少的那个就是sum减去数组的和. int missing ...