网站的伸缩性

一、两个网站的伸缩性目标

大型网站都是从小型网站逐步演化而来的,Google诞生的时候也只有一台服务器。中航网需要设计成一个能从廉价PC服务器演化成大型系统的架构体系。为了实现网站的伸缩性中航网要设计成以下两个维度的可分离:

1、服务器分离

 

 

 

 

 

每次分离都会有更多的服务器加入网站,使用新增的服务器处理某种特定服务。

2、业务模块分离

 

 

 

 

 

业务分离的粒度要可以非常小, 甚至可又一个关键网页部署一个独立的服务。

二、 网站伸缩性拓扑设计

 

 

 1、硬件防火墙

选用华赛或JUNIPER系列硬件防火墙,主要作用是用来防DDoS和端口映射。

 

2、静态资源服务器

对于图片型等静态内容,前端缓存的意义重大。可以自己搭建CDN系统或租赁别人的CDN。推荐以租赁CDN为主,把更多的资金投入到后端的文件存储和数据库上。

 

3、负载均衡(HAProxy

HAProxy性能优异,稳定性强, 自带强大的监控页面,并且支持动静分离。HAProxy+Keepalived已经实现了亿级/日的网站,并且在高并发的业务时间段也没有发生过宕机情况。

HAProxy在高并发的情况下比较消耗CPU资源,建议使用Dell PowerEdge R710

 

4、Web缓存层

使用Squid作为中航网的Web缓存层。为什么前端已经有CDN缓存,还需要架设一层Web缓层?因为高并发高流量的项目,后端的NFS文件服务器的IO压力是巨大的,有时甚至会发生拒绝提供服务的现象。有了Web缓存层,可以起到加速后端Web服务及减小NFS磁盘IO压力的作用。

5、Web服务器

关于Web服务器的选择,Apache作为服务器,用于电子商务/电子广告/页游网站是非常稳定的,在8GB内存的标准配置下,抗并发能力非常不错的。许多公司的网站架构都是从一台Apache Web服务器发展起来的。

 

6、文件服务器

随着客户越来越多,I/O的压力也会越来越大。这个时候就该考虑分布式文件存储方案。在初期阶段宜采用DRBD+Heartbeat+NFS高可用文件服务器,维护方便,也不存在单点故障。  

随着访问量的增大,后期可以采用MFSGluster。分布式文件系统是解决文件服务器压力过大的最终途径,但也存在缺点,网站功能越多,摊子越大,机器越多,维护起来越复杂。

 

7、Session的处理

Session数据默认是在各个服务器上分别存放的,Apache将请求发送到了集群中的另外一台机器,那么就会导致Session的丢失。所以要采用一台独立memcached服务器来存储整个网站的session数据。

 

不能不session放进mysql, 因为在高流量的网站中, 数据库的压力是非常大的,我们不能让session问题再增加数据库方面的压力。

 

8、数据库的减压

数据库架构采用一主多从,读写分离的方案,用LVS+Keepalived作为数据库的负载均衡器,计写通过程序上实现分离,前后台业务逻辑分离,针对后台的查询全部转到从机器上, 这样就算查询业务量很大也不影响主要业务逻辑。尽量做到以下几点:

l 尽量把用户往外面推,减小源站的压力

l 保证网站的高可用

l 保证网站高可扩展性

l 合理优化数据库

 

三、 实施图纸(PV百万级以下)

服务器用途

数量

型号

软件配置

负载均衡

2

HP380  2Cell, 4GB

Nginx

Web缓存

2

HP380  2Cell,4GB

Squid

Web服务器

2

HP380  2Cell,8GB

apache

数据库服务器

2

HP580  4Cell, 32GB2TB 

mysql

数据库负载均衡

1

HP380  2Cell,4GB

Lvs+keepalive

Session服务器

1

HP380  2Cell,8GB

memcache

文件服务器

1

HP580  4Cell, 32GB2TB

NFS

 

posted @ 2016-01-11 12:40  快乐的老毛驴  阅读(377)  评论(0编辑  收藏  举报