小企业构建集群方案

小企业构建集群方案  

  如果网站要部署负载均衡高可用的Linux集群方案,而公司又想用最节省成本的方式来实施的话,一般需要几台服务器呢?我的回答是四台,即2+2架 构,最前面是二台Nginx/HAProxy+Keeplaived机器,后面是二台配置比较好的Web机器,MySQL数据库采用一主一从的方式,分别 放在二台Web机器上,监控的Nagios部署在从Nginx/HAProxy机器上,流量监控我一般放主Nginx/HAProxy,软件采用的是 MRTG+Nload的方式,服务器之间的数据同步我采用的是rsync+inotify的方法,当然更多时候,我采用的是纯rsync方式,这样是避免 网站有大文件发生改动的时候会产生频繁读盘的麻烦;当然了,如果大家的公司对文件服务器有更高要求的时候(比如图片类型的),我们可以考虑再增加二台服务 器,做成DRBD+Heartbeat+NFS的方式;如果有海量文件需要存储的话,我们可以考虑用MFS,当然这样也是比较耗机器的。

像类似以上的小公司集群架构里,我们是如何解决session同步的问题呢?我们可以采用Nginx的ip_hash和HAProxy的 balance source机制,它们的原理比较类似,都会让某一客户机在相当长的一段时间内只访问固定的后端的某台真实的Web服务器,这样会话就会得以保持,我们在 网站页面进行login的时候,就不会在二台Web服务器之间跳来跳去了,自然也不会出现登陆一次后网站又提醒你没有登陆,需要重新登陆的情况。

另外,小公司的Web服务器我们至少有二种选择:一种是Apache,另一种是Nginx,在流量和并发不大的环境下,我们完全可以选择 Apache作为我们的Web服务器,虽然它的抗并发能力不高,但它的稳定性是最好的,我的许多电子商务网站都是基于Apache;而大流量大并发的环 境,我比较倾向于Nginx。

MySQL在这里我用的就是一主一从的设计,虽然很多朋友觉得这种设计比较简单,但事实证明,它也最稳定的。我的电子商务网站也是采用这种架 构,几年下来,从没有因为数据库的故障发生过丢单现象,网站上线的前期阶段,我们可以通过PHP程序,把后台的查询功能的入口选择Slave机器,这样可 以大大减少主数据库的压力;另外,从MySQL机器并非仅仅只起一个备份和备机的作用,我们完全通过PHP程序将后台的复杂查询转到从MySQL机器上。 当然了,MySQL的主从复制状态监控也是非常重要的,我一般是通过Nagios和SHELL脚本双监控的方式。

你可能感兴趣的:(小企业构建集群方案)