快速询问高可用性集群是如何工作的。如果我没有弄错,如果我设置了3台高可用性服务器,那么所有的通信将只在单个服务器上处理,对吗?那么,如果第一台服务器死了,那么它会转到第二台服务器上?或者,它们是否有一个负载均衡器将工作负载平均分配给所有服务器?
发布于 2019-09-09 03:47:49
你可以用你想的方式设置它。
HAProxy软件可以作为负载均衡器。您也可以使用宁克斯。我建议您不要使用Apache来进行负载平衡。这样的设计不是很好。你也可以得到一个预置负载均衡器从大多数云。
负载均衡器的一个限制:如果该硬件失败,您可能后面有一组强大的系统,它将是无用的。
因此,在大多数情况下,如果要确保始终可用,至少需要两个负载平衡器。
在我的终端上,我正在创建一个名为抓紧!网站的系统,它最终将自动地负载平衡其所有前端(即负载均衡器将被合并)。它还没有实现,但想法是请求到达任何计算机,如果计算机已经超载,它将把请求转发到另一台前端计算机。这里的巨大优势是,在失去所有服务之前,所有前端都必须死掉。
通过负载均衡器设置,其他计算机,即实际运行您的服务的计算机,可以作为后端进行安装。这里的一个优点是您可以获得更好的安全性(即仅在前端和后端之间打开端口80/443 )。
没有任何负载平衡器,服务运行在前端,这意味着在这些前端打开的所有端口将给黑客一个攻击你的系统的机会。
由于您的网站将有一个URL,如果您的URL总是返回相同的IP地址,那么拥有3台计算机将不会有任何帮助。要使此工作,您需要设置您的DNS返回这三个地址。这很简单,只需输入相同的地址三次并更改IP。
下面是一个包含6个服务器的“www”示例:
www 60 IN A 10.0.0.1
www 60 IN A 10.0.0.2
www 60 IN A 10.0.0.3
www 60 IN A 10.0.0.4
www 60 IN A 10.0.0.5
www 60 IN A 10.0.0.6这将使用廉价的循环机制。这意味着它不会检查服务器是否非常繁忙。只要一台计算机请求DNS,它就会发送下一个IP。
关于这些I的一个重要事实,我将60作为缓存持续时间。这是更重的DNS,但这意味着用户必须获得一个新的IP每分钟。这确保了计算机的旋转。尽管在大多数情况下,浏览器可能会将相同的IP地址保存1分钟以上(根据我的经验)。我认为这不是浏览器的决定,或者它只是缓存IP的时间,你正在使用的一个网站。如果你关闭窗口,他们可能会进行新的查找。无论如何,这是便宜和工作良好,但如果你可以有一个负载均衡器,它要好得多。
此外,您还需要注意瓶颈问题。
如果您的应用程序使用了MySQL或PostgreSQL数据库,并且您放置了10台前端计算机,但只有一台数据库计算机,这将成为您的瓶颈。如果您要在每10个前端处理1,000个请求,那么查询数据库就会很慢.这是10,000次点击一台计算机运行数据库,这可能是最慢的部分,在你的整个应用程序。
对于数据有两种主要的解决方案:使用诸如卡桑德拉这样的系统,或者让MySQL/PostgreSQL数据库在多台机器上运行(这是可行的,我还没有尝试过,但我与一家拥有PostgreSQL分布的公司合作)。
有了卡桑德拉这样的系统,所有的数据都分布在所有用于运行数据库的计算机中。对于MySQL/PostgreSQL这样的系统,它们通常会分解每个表的数据。所以有些桌子可能还很慢。尽管如此,在较新的版本中,它们可能有更好的解决方案。我在SQL并行化方面有点落后。
集群中还有其他问题需要仔细考虑。例如,如果您试图从多台计算机中更改某些数据,则可能需要一个锁。SQL数据库具有这样的特性,如果使用BEGIN + INSERT/UPDATE + COMMIT,就会很好。否则,你可能会把你的数据搞砸。避免问题的一个解决方案是使用集群锁(动物园管理员提供这样的)。你的应用程序。锁,然后执行事务,最后解锁。然后,您将进入以下世界:如果在应用SQL事务之前锁超时了怎么办。有趣的乐趣..。
https://askubuntu.com/questions/1171832
复制相似问题