首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache -高可用性

Apache -高可用性
EN

Server Fault用户
提问于 2017-01-17 02:48:21
回答 1查看 1.8K关注 0票数 2

我正在寻找一种将Apache设置为高可用性的方法。这样做的目的是让一个2+ Apache服务器集群服务于相同的网站。我可以使用循环DNS来设置每个服务器的IP地址,以便将每个请求随机发送到集群中的一个服务器(我现在还不太关心负载平衡,尽管这可能会在后面起作用)。

我已经设置并使用了多个Apache服务器(分布在多个物理服务器上),为网站提供服务,以及循环使用DNS,这很好。SQL数据库是在高可用性集群中使用MariaDB设置的,web数据(HTML、PHP脚本、图像、其他资产)存储在LizardFS中,会话也存储在共享位置。这一切都很好,直到集群中的一个服务器因任何原因而无法访问。然后,一定百分比的请求(大约是被击倒的服务器数量除以集群中的服务器总数)没有得到答复。以下是我考虑过的选择:

自动DNS更新

有一些进程可以监视web服务器的功能,并从DNS中删除任何下线服务器。这有两个问题:

  • 首先,尽管我们可以将TTL设置为一些非常低的数字(比如5秒),但我听说有几个DNS服务器将强制执行比我们的服务器更高的最低TTL。而且,一些浏览器(即Chrome)不管TTL设置如何,都会缓存不少于60秒的DNS。因此,即使我们在我们的终端很好,一些客户可能无法到达网站在一段时间内,如果DNS更新。
  • 其次,监视集群功能和更新DNS记录的程序成为一个新的单一故障点。We可能可以通过在多个监视器之间传播多个监视器来解决这一问题。

系统,因为如果它们都检测到了一个问题,并且都做了相同的DNS更改,那么这就不会引起任何问题。

uCarp/Heartbeat

使访问的IP地址和循环DNS中的IP地址变为虚拟的,并在服务器崩溃的情况下将它们重新分配到从下到下的服务器上。例如,服务器1‘S VIP为192.168.0.101,服务器2’S VIP为192.168.0.102。如果server1下降,那么192.168.1.102将成为server2上的附加IP。这有两个问题:

  • 首先,据我所知,uCarp/Heartbeat专门监视他们的同龄人,例如,如果不能对其进行点击,就会监视它们的同龄人。当这种情况发生时,它将接管被击倒的对等方的IP。这是一个问题,因为除了在网络上无法访问之外,web服务器可能无法处理其他请求。Apache可能已经崩溃,可能存在配置错误,或者其他原因。我希望条件是“服务器没有按要求提供页面”,而不是“服务器不能按需要”。我想我不能用心跳来定义它。
  • 其次,这并不适用于数据中心,因为每组跨数据中心的服务器都有不同的IP地址块。我不能让虚拟IP浮动在数据中心之间。不需要跨数据中心工作(是的,我的分布式文件系统和数据库集群可以跨数据中心使用),但这将是一个不错的好处。

问题

那么,对如何处理这件事有什么想法吗?基本上,高可用性的圣杯:没有单一的故障点(无论是在服务器、负载均衡器还是数据中心),而且在切换时几乎没有停机时间。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2017-01-17 08:33:48

当我想要HA和负载共享时,我使用保留并使用两个VIP配置它。默认情况下,VIP1分配给server1,VIP2分配给server2。当任何服务器关闭时,另一个服务器将同时接收两个VIP。

Keepalived将通过监视另一个服务器来照顾HA。如果无法到达服务器或任何接口关闭,则会更改为FAULT状态。VIP将由其他服务器接收。要监视您的服务,可以使用track_script选项。

如果您想在另一个数据中心中添加另一个集群,您可以再添加两个服务器并执行相同的配置。现在,您可以使用DNS循环在数据中心之间加载共享通信量.在这种情况下不需要更新DNS。

票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/826658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档