使用负载均衡解决方案消除网站单点故障

在一台服务器上安装所有的服务,一旦这台服务器宕机,网站就完蛋了,你得马上去找到问题,解决以后,重新启动某些服务,才能恢复正常,这就是单点故障( Single point failure )。

解决这个单点故障可以把单点变成多点,一个点完蛋,另一点还可以继续提供服务,这其实就是负载均衡。比如我们可以把 Web 服务器放到两台不同的服务器上,然后用均衡器对外提供服务,这个均衡器可以把用户分配到不同的服务器上,同时它还可以检查后端服务器的健康情况,如果出现问题,均衡器就不再把用户引到这台出问题的服务器上了。这样就削除了单点故障。

自建架构

如果你想在公司内部,本地电脑,或者云服务器上自建这个架构,你需要四台服务器。我在本地用虚拟机测试过,可以使用 HAProxy 这个软件做负载均衡器。在一台服务器上安装 HAProxy ,让这台服务器作为均衡器,然后告诉 HAProxy 后端服务器都是谁,也就是真正提供服务的服务器。这些后端服务器共用一个数据库服务器。

两个问题,你需要让后端服务器保持同步,也就是你要确定用户不管被均衡器带到哪台服务器上,看到的结果都是一样的。你要同步后端服务器上的一些文件。第二个问题,你要确定后端服务器使用的数据库,允许远程登录。

示例

– balancer:192.168.33.60
– web1:192.168.33.61
– web2:192.168.33.62
– database:192.168.33.63

用户直接访问的是上面的 balancer ,然后由它再把用户带到某台后端服务器上,可能是 web1 ,也可能是 web2,这两台服务器共用一台数据库服务器:database。

阿里云

在阿里云上,您也可以完全使用云服务器自建这套架构,不过每个服务都需要你的额外的维护时间。可以尝试使用阿里云的几个服务,实现这个负载均衡的架构。SLB(负载均衡),ECS(云服务器),RDS(关系数据库)。申请一台 SLB,两台 ECS,还有一台 RDS。

用户直接访问的是 SLB,配置 SLB,告诉它后端的服务器(ECS),在这两台 ECS 上的网站使用同一个远程的数据库(RDS),这样你只需要保持这两台 ECS 上的文件同步就行了。

因为公网的流量都是从 SLB 出去的,所以,你不需要为 ECS 服务器购买太多带宽,1M 就行了。SLB 可以按带宽大小或者流量来计费。阿里云的带宽超过 5M 就会很贵,所以,如果你按带宽计费,最好不要超过 5M 。按流量计费不限带宽峰值,按流出去的数据收钱,1G 的数据大约 8 毛钱。

文件同步

保持不同的服务器之间文件同步,需要一些方法,比如 Rsync,NFS,GlusterFS,Syncthing,Unison。暂时我只试过 GlusterFS 还有 Syncthing 。

GlusterFS,暂时不能用,因为我觉得性能有点问题,特别在 GlusterFS 的文件系统上跑 Drupal 的时候,明显感觉会慢一些。不过我觉得这东西可能会比较稳定。

Syncthing,是个新东西,看起来很酷。提供了一个 Web 界面,可以方便的去配置。它是用点对点的方式同步文件,跨平台,日常工作也可以使用这个工具跟别人同步文件。

本文由瞎悟学习网作者:hiovo 发表,其版权均为本站所有,文章内容系作者个人观点瞎悟学习,不代表对观点赞同或支持。如需转载,请注明文章来源。

    匿名评论
  • 评论
人参与,条评论