主页 > 其他 | 数据库技术 | 服务器技术 > 漫谈企业级Drupal架构应用与部署

漫谈企业级Drupal架构应用与部署

PDF版本

在以drupal为框架的企业级或者商业网站的开发与部署中,不仅仅只是对Drupal的开发以及自定义模块和Drupal API的开发和应用,在整个企业级应用中,Drupal只是作为Web框架中的一个环节,其他方面,如数据库架构、负载、持续集成等都是必须考虑的环节,本文就Drupal商业级应用中必须的结构与部署方案做一个简单的探讨。

作为中小型商业网站,以Drupal为框架开发是一个较好的选择,除了Drupal开发本身,我们还必须掌握Drupal相关以及其他部署方面的环节,才能得以网站运营更加正常。

1. 服务器

起步阶段建议用VPS或者云主机,(Linode是不错的选择),正式上线之后,建议配置一台服务器,随着流量增大可以增加一台服务器,web和db分开。
访问量再次增加,我们可以增加到3台服务器。

3台机器的架构

3台服务器的架构图

其中DB和LoadBalancer为同一台机器,故DB比较重要,硬件资源以及备份策略要占优。这种架构的优势就是web节点可以随意切换。

4台服务器的结构就是增加一台MySQL的slave节点,以及将这个节点可以作为一个Loadbalancer的备份。

4台服务器的Drupal部署结构

4台服务器的Drupal部署结构

5台及多台服务器可以参考如下的结构,就是把LB独立出来,web节点和db可以随意扩展,具体需要分析性能的瓶颈在哪里,然后按需增加服务器。

5台及以上多台服务器架构

5台及以上多台服务器架构

2.硬盘以及存储结构

服务器的数据存储非常重要,从硬件的角度来说,我们需要有备份及容错机制。
常见的方式是RAID,推荐使用RAID5,经济实惠的方案。如果有4块,可以做RAID10,性能和备份的综合体,比RAID5更高效。从软件硬件的实现角度来说,作为服务器,推荐使用硬件RAID,不要使用软件RAID。
SSD和HDD的选择,这个可以依据成本和预算,SSD肯定比HDD要好很多。

硬盘的分区的划分推荐使用LVM,虽然会有些性能上的损失,但从其带来的有点来说,这点不足是可用忽略不计的。
具体的RAID+LVM规划,大家可用参考网上其他相关文章,本文不做详细的介绍。

RAID10结构图

3.负载均衡、反向代理

负载均衡节点,如果有多台服务器,建议做双机热备,如LVS、keepalived。
做负载均衡的软件选择比较多,如Haproxy,Nginx, varnish等,推荐使用varnish作为负载均衡服务器,不但因为其并发处理能力,而且还能对静态文件(甚至动态文件)进行缓存,更好的减轻web节点的压力。
具体的Varnish相关文章请参考相关博文:

4.WEB服务器

以Drupal架构的网站通常比较消耗资源,因此建议Web服务器的CPU比较好,加上Memcache的话,内存需要也比较大。
软件选择方面,Web服务可以用Apache或者Nginx,这个差别没有太大,即使Nginx要比Apache性能好很多,但Aapache经过优化以及其稳定的表现,个人觉得没必要一定使用Nginx。

多个web服务器需要共享文件,共享文件可以使用NFS或者GlusterFS
最终需要部署的:Apache/Nginx + PHP (APC) + Memcache + NFS/GlusterFS

5.数据库层

数据库服务器,当然是MySQL,MySQL的负载均衡自然离不开主从结构,这些都是经典的配置,网上的参考资料比较多。
值得注意的是,MySQL服务器的内存需求比较多,在my.cnf里面设置查询缓存等相关的缓存值,加大这些值,以满足查询需求。

default-storage-engine=innodb
innodb_file_per_table
 
#查询缓存系列
tmp_table_size=32M
max_heap_table_size=32M
key_buffer_size=64M
query_cache_size=128M
query_cache_limit=16M
query_cache_min_res_unit=1K
 
##########################
###RAID下,最好用O_DIRECT
innodb_flush_method=O_DIRECT
innodb_flush_log_at_trx_commit=2 ###每次事务提交或事务外的指令都需要把日志写入(flush)硬盘。推荐使用2
innodb_buffer_pool_size=8G  ###重要参数## InnoDB使用该参数指定大小的内存来缓冲数据和索引。建议把该值设为物理内存的50-80%;
 
innodb_log_file_size = 256M  #太小太大都不好
innodb_log_buffer_size = 16M #同上

 

如果MySQL的性能瓶颈比较严重的话,可以尝试使用MySQL的替代软件,比较出名的是percona公司的MySQL产品。
MySQL数据库服务器
 

MySQL的备份可以参考博文:Drupal数据库备份以及MySQL备份策略
MySQL同步可以参考博文:MySQL主从同步机制及同步中的问题处理

数据层,从理论上来说,也包括全文索引方面。我们把作为全文索引的数据服务也放在这层。
作为商业站点的应用,推荐使用Apache solr做独立的索引服务,Drupal的Solr模块也是使用最多的模块之一。

Solr的相关博文请参考 :

6.持续集成以及任务管理

执行drupal的cron、定期执行drush命令,或者定期数据导出等服务器操作,我们不可能完全依赖Linux的crontab,并且我们需要管理众多任务以及记录执行结果,CI软件就要在这里发挥作用了。
推荐大家使用Jenkins,Jenkins支持多个服务器,Master/Slave结构,可以配置任意多个slave节点,管理众多服务器的任务执行情况,具体的Jenkins使用教程,网上教程较多,这里就不做赘述。
Jenkins持续集成

7.服务器维护/监控

最后,我们谈一下服务器监控。对于服务器监控,一般推荐使用开源软件,如cacti、zabbix、collected等,(Collectd参考博文系统性能监控利器-collectd详解,对于一般的服务器down机检查可以使用一些免费的服务,如监控宝等免费服务。
一般情况开源软件可以满足我们对于服务器的运行、负载、网络、IO等各方面的监控任务,但是对于更高要求的跟踪,也可以使用一些收费服务,如NewRelic,AppDynamics , ExtraHop, Librato等等,国内就是监控宝(创业者是《构建高性能Web站点》的作者),收费服务肯定有一些功能是值得借鉴的,有条件的朋友可以注册一下免费账号试试。

   

对于Linux服务器的日常维护和监控,推荐大家了解一些常用的Linux命令,推荐博文:Linux服务器性能追踪以及服务器监控常用命令

注意:本文中提及的任何服务及网站都属于无任何商业行为的参考网址,一家之言,仅供参考 ^_^

 


声明: 本站所有文章欢迎转载,所有文章未说明,均属于原创,转载均请注明出处。
本文有效链接: http://www.drupal001.com/2012/12/drupal-enterprise-depolyment/
版权所有: Drupal与高性能网站架构 http://www.drupal001.com


, , ,

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注


三 + = 11

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

引用:0

下面所列的是引用到本博客的链接
漫谈企业级Drupal架构应用与部署 来自 Drupal与高性能网站架构
顶部