热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

1.开源产品介绍1)CMS介绍官方网站http:www.dedecms.com,是一个网站应用系统构建平台,也是一个强大的网站内容管理系统,既可以用来构建复杂的体系的企业信息门户或

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。。。待更新。。

 


推荐阅读
  • AppFog 是一个基于 CloudFoundry 的多语言 PaaS(平台即服务)提供商,允许用户在其平台上轻松构建和部署 Web 应用程序。本文将通过详细的图文步骤,指导读者如何在 AppFog 免费云平台上成功部署 WordPress,帮助用户快速搭建个人博客或网站。 ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • 过去查询Mysql的时候,都见3306对所有端口开放着,感觉不安全。netstat&nbsp;-anlp&nbsp;|&nbsp;grep&nbsp;mysqltcp&nbsp;0&am ... [详细]
  • 网络爬虫的规范与限制
    本文探讨了网络爬虫引发的问题及其解决方案,重点介绍了Robots协议的作用和使用方法,旨在为网络爬虫的合理使用提供指导。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 大家好,我是李白。本文将分享一个从零开始的全栈项目,涵盖了设计、前端、后端和服务端的全面学习过程。通过这个项目,我希望能够帮助初学者更好地理解和掌握全栈开发的技术栈。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • MySQL下载与安装指南:详细记录常见问题及解决方法
    MySQL下载与安装指南:详细记录常见问题及解决方法 ... [详细]
  • 类加载机制是Java虚拟机运行时的重要组成部分。本文深入解析了类加载过程的第二阶段,详细阐述了从类被加载到虚拟机内存开始,直至其从内存中卸载的整个生命周期。这一过程中,类经历了加载(Loading)、验证(Verification)等多个关键步骤。通过具体的实例和代码示例,本文探讨了每个阶段的具体操作和潜在问题,帮助读者全面理解类加载机制的内部运作。 ... [详细]
  • 系统转换的三种方法及其具体应用分析
    系统转换是信息技术领域中常见的任务,本文详细探讨了三种主要的系统转换方法及其具体应用场景。这些方法包括:代码迁移、数据迁移和平台迁移。文章通过实例分析了每种方法的优势和局限性,并提供了实际操作中的注意事项和技术要点。例如,代码迁移适用于从VB6获取网页源码,数据迁移在Ubuntu中用于隐藏侧边栏,而平台迁移则涉及Tomcat 6.0的使用和谷歌爬虫的测试。此外,文章还讨论了蓝翰互动PHP面试和5118 SEO工具在系统转换中的应用,为读者提供了全面的技术参考。 ... [详细]
  • Swoole加密机制的安全性分析与破解可能性探讨
    本文深入分析了Swoole框架的加密机制,探讨了其在实际应用中的安全性,并评估了潜在的破解可能性。研究结果表明,尽管Swoole的加密算法在大多数情况下能够提供有效的安全保护,但在特定场景下仍存在被攻击的风险。文章还提出了一些改进措施,以增强系统的整体安全性。 ... [详细]
author-avatar
b01453901
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有