一个完整的网站上线流程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一个完整的网站上线流程
上线的流程
1. 上线流程包含下列几个方面:
1.1. 网络规划
1.2. 系统规划
1.3. 数据迁移
2. 网络规划包含的内容
2.1. 挑选机房
2.2. 是否需要划分多个网段
2.3. 出口是否需要VSRP
2.4. 交换机之间如何进行备份
2.5. 各个交换机之间的连接速度大小
3. 系统规划包含的内容
3.1. 挑选服务器
3.2. 选择存储
3.3. 选择操作系统
3.4. 网站如何进行分层
3.5. 各个应用如何良好分配到不同的服务器上
3.6. 系统的监控
3.7. 系统的备份
4. 数据迁移
4.1. 静态存储的迁移
4.2. 数据库的迁移
选择机房
选择机房在中国是一个非常头疼的事情,你必须考虑到你网站所服务的对象是属于网通还是电信,以及其它小的运营商。

不过在国外基本没有这样的问题。

只要选择路由好点的基本就可以了。

从国内到国外服务器之间如果能够在保持在20跳以内就算可以的了。

要是你还是不放心,要进行世界各地的测试,那可以找类似的测速网站来进行测试。

比如Banreee, Networkbench, gamez都是比较好的测试网站。

网段规划
在机房选择好以后,就要进行网段规划了,特别是当你内部服务器之间交互非常频繁的情况下,那就更要很好的进行规划了,不同需求的服务器必须放在不同的VLAN之中,特别嫉划分非常大的网段,那样广播风暴就会比较严重。

分网段有2种情况我个人认为,有人是把整套的服务器放在同一网段中,这一整套服务器包含了所有的前端,中间层和后端以及数据库,这个感觉是游戏类的会进行这样的规划。

还有一种是所有前端一个单独的VLAN,中间层一个单独网段,后端存储一个网段,数据库单独一个网段。

这种当你网站规模比较小的情况下就不能进行这样的划分,毕竟交换机没那么多,以后如果要把服务器换做其它用途,还必须更改交换机某个端口的VLAN号,一旦改的多了连自己都记不清了。

VSRP
VSRP是一种交换机的高级协议,用来2个交换机之间进行互相冗余的协议。


提下,那只能选择GFS这样的分布式文件系统来进行存储了。

这个现在有比较多的解决方案,有YAHOO的HADOOP,redhat 的GFS, 还有其它的如Fastfs等等,但是每种GFS都有自己适应的需求,有的是针对大文件例如视频文件这样的存储,而有的是针对小文件如各种日志的存储。

选择操作系统
操作系统作当然是linux的为主了,看各种需求也有一些适合其它操作系统,比如做个网关服务器,那使用Freebsd就合适的。

而作为web网站需求还是用Linux好了,操作系统有gentoo, ubuntu, centos, opensusu,这些现在还都是开源免费的。

选择操作系统不光要看操作系统本身,还有所带的驱动,要是装上了服务器,运行后发现操作系统自带的网卡驱动出问题了,那就麻烦了。

像这次装的DELL R710的服务器上,装了centos居然网卡驱动有问题,还好测试的时候发现了问题,用补丁给解决了。

不然要是在线上跑了再出问题就麻烦了。

所以买服务器的时候还得去官方网站查它做支持的操作系统。

选择好操作系统就要看选择什么内核了,2.6.30和2.6.31在有些应用程序跑起来还是差别很大的。

特别是对于多线程程序的支持。

选择好文件系统,这个现在我只是选择ext3,毕竟非常成熟,而JFS, EXT4还是不敢在线上直接使用。

网站分层
网站分层,对于大型网站这个是必须的,负载均衡器(LVS, nginx,
F5,Netscaler),前端web服务器(Tomcat, apache, resin, lighttpd, nginx 等等),中间层(如memcached,ice)等,数据库(Oracle, postgresql, mysql 等等)。

这个还是需要程序开发之前就应该计划好的。

而数据库的分区也是很重要的,可以把不同的数据库分布到不同机器上,同时做好master-slave,实现读写分离。

系统的监控
在系统正式上线开放之前可必须是搭建好的,有些公司会有自己的一套监控系统,也有很多自定义的监控内容。

但是更多的是使用开源的监控产品nagios, cacti, munin等等。

而nagios我个人觉得非常不错,特别是结合nrpe作为客户端,可以自定义很多监控需求,你自己可以编写监控内容,比如监控内存啊,监控Memcached等等。

而nagios更是提供了很多监控脚本。

而nagios现在不光能进行发报警邮件,还能发短信,发msn。

而对于系统历史的展示,用cacti 和munin就是非常不错的。

Cacti是基于snmp的,易于监控,但是一旦跨网络,比如跨个电信网通啥的,那你用cacti就会发生经常发生取不到数据的情况发生。

而且对于服务器太多的情况下就会发生5分钟一个轮询都来不及,这个就需要对cacti本身进行优化,这个直接参考上面的提示一步步的进行优化,主要是cacti默认的那个数据库居然所有表都没有索引。

而munin
也是基于客户端,是走tcp协议,这样就相比snmp的稳定的多。

而且也不需要数据库支持。

系统的备份
系统的备份也是需要上线之前做好。

备份有简单的tar和比较企业级的开源产
品bacula等等。

Bacula之前也在内部使用过,对于大型的备份确实是比较好的,备份方式也有增量,全体备份等等各种方式。

它有中心服务器,备份服务器,客户端,也支持磁带备份等等。

也许我不怎么会用,因为它备份完成了也是单个文件,这样对我来说不够可视化,虽然bacula也支持很好的恢复,但是不够直接,万一处理不好就实在没法恢复了。

所以我还是选用了直接的tar来进行备份。

首先要选择好哪些东西是需要备份的,在我这里主要是数据库和用户上传的数据,而程序性文件本来就是分布在多台机器上,只需要简单的备份就可以了。

用户上传的数据现在是基本5分就同步到其它文件服务器上,并且进行一次增量备份。

同时每天都会一次进行一次完整的备份。

而对于数据库,首先是必须要有slave,同时还必须每30分钟备份一次,myisam 数据引擎的还是比较容易备份的,可以直接备份数据文件,也可以进行mysqldump,也有mysql默认提供的Hotcopy。

而Innodb的可以用mysqldump直接导出sql文件和直接进行xcopy导出数据文件。

但是个人觉得xcopy性能上也并不是特别优越,速度上也不是特别快,而且以后需要恢复备份的时候还必须安装一下xcopy才可以。

每30分钟备份一次,同时每天凌晨就保留当天唯一一份,而不是全部保留。

静态数据迁移
这个完全可以实现通过rsync来进行,而一旦真的开始迁移,还是使用rsync
来进行同步,而最好不要进行tar来进行迁移,这样首先是传输的文件太大,其次未必能完全同步。

数据库迁移
这个有2种方式,一种是本身就有slave,这样直接切换的时候把这个slave专成master就可以了,但是如果你是临时搭建的slave,那很有可能会造成数据库不同步,毕竟你在搭建slave的时候master肯定是在进行更新,而你就算slave 指定了从哪个position开始,你也会发生同步出错的情况。

所以另外一种方式还是停机进行mysqldump,这个还是最保险的方式,但是当你数据量特别大或者索引特别多的情况下会比较花时间,几乎都是以小时来进行的,但是其实mysqldump也是可以进行增量式的备份,其实就是根据mysql bin log的position来进行增量式备份。

完整的网站上线过程
首先确定需要新的网站支持多少在线人数,根据这个来确定网站的带宽和服务器数量,然后根据这个服务器的数量和带宽来确定交换机的数量和型号。

确定服务器的配置和相关品牌。

然后根据这些你必须画出网站的架构图,网络图,网络接线图,服务器接线图。

架构图是网站的整体的逻辑架构,是一个整体的逻辑概览
网络图是展示网络交换机的逻辑架构,比如VSRP,VLAN的配置就在这里展示。

网络接线图这里展示的网络交换机直接如何连线,连多少线,要标明到连接哪个端口。

服务器接线图,这里展示了服务器的哪些端口接哪个网络交换机的哪个端口。

后面2个图对于操作人员是最重要的,如果画的不清楚,很可能会耽误很多时间在沟通上。

接上线后就需要安装操作系统,这个现在基本都是网络来进行安装了,不会一
台台通过光驱来进行安装,这样不光买机器的时候多付不必要的钱,而且安装比较慢,同时光驱有时候还会有使用寿命,有时候时间长了就没办法进行安装了。

Redhat系统的都可以选择kickstart来进行远程安装,kickstart在安装过程中还能安装时候执行自己的系统初始化脚本。

比如指定hostname, 修改相关的tcp/ip设置,设置好Iptables等等。

而对于网络环境特别复杂的服务器必须要在网络配置文件中指定好去各个vlan之间的网关,这个以前我都是放到rc.local中,而这种虽然能在系统启动的时候会自动进行加载,而如果手动启动网卡会丢失这些网络信息。

安装完操作系统后,就要进行各自程序文件的部署。

相关程序文件部署完毕后就可以进行线上测试,这个不光是应用程序的测试,更要进行压力测试,测试新的系统到底能够承受多大的负载。

这个当中可能出现各种各样的瓶颈,这个一般是由于web服务器的问题,特别是resin,tomcat 这些出现问题的情况比较大,而Php网站由于fast-cgi现在往往可以承受更大的并发。

另外一个可能的瓶颈会是数据库。

比如Mysql就需要根据你选择的数据引擎来调整buffer的大小,这个是数据库整体性能的调整,个别的调整就需要根据你的slow log来进行相应的调整。

相关文档
最新文档