我对DNS管理等不太了解,但是我了解应用程序编程中的最佳实践。
目前,在我的公司,我们有6台服务器,分别命名为:
这很好。
但是,sysadmin要求我们处理应用程序中的随机端点,这意味着我们需要从这个列表中随机选择一个服务器。
这在我看来很糟糕,因为每当我们需要添加服务器时,我们都需要编辑我们的应用程序(即使它只是一个配置文件),但是我认为应用程序不应该知道这些事情,类似于实体不应该知道持久化服务器。
我的想法是使用dns负载平衡,一个域,指向不同的ip。
一个端点: mobile.domain.com
系统管理员告诉我这是不好的或者类似的东西,但是我相信这是最好的解决方案,更多的是它将允许以后的地理化负载平衡,这是很棒的。顺便说一句,从列表中随机选择服务器并不能阻止服务器关闭,因为随机不是随机的,而且对我来说也没有效率。
谢谢你的反馈,如果你有正反论据,我可以用:)
发布于 2011-05-06 10:02:54
DNS循环被普遍认为是一种非常低成本的负载平衡解决方案。确实,在服务器不可用的情况下,需要对DNS进行手动更改。您的DNS更改也确实需要时间来传播(这取决于中间解析器)。
另一方面,与适当的负载平衡器相比,它非常便宜。还有一个复杂的问题。有用于负载平衡的开源解决方案,但它们的设置并不简单,如果出现问题,您(或您的系统管理员)需要有专门知识来修复它。更新DNS区域是相对简单的事情。
除非您的情况是服务的可用性是绝对重要的,或失败的请求(由于DNS延迟)导致严重的收入损失,您最好的选择是DNS循环。
为了分析您需要什么样的负载平衡的问题,您需要确定失败请求的成本。
无论如何,对应用程序的更改,无论是代码还是配置文件,都不是一个好主意,因为这会导致更长的延迟(在传播应用程序更改时)。
发布于 2011-05-06 09:43:44
我认为您的Sysadmin试图说的是,使用DNS进行负载平衡并不坏,但不方便。您可以将6个IP添加到特定域的DNS中,但是很难管理集群。如果您想要将其中一台机器从旋转中取出,您必须编辑DNS记录并等待它传播。这可以通过设置较低的TTL来处理,但是您不能解释任何不遵循DNS协议的中间解析器。
它更方便有一个负载均衡器,并指出领域到LB和但背后的6个服务器。它允许添加/删除服务器,因为您不必担心DNS传播时间。
发布于 2011-05-16 14:48:07
虽然Sameer和wolfgangsz所说的对循环来说是正确的,但是他们低估了什么是真正无用的机制的问题,忽略了几个会给您带来痛苦的问题,包括DNS客户端和解析DNS代理缓存,以及在从内容DNS服务器到DNS客户端的过程中缺乏订单保存保证。
如前所述、SRV资源记录解决了所有这些问题。您获得了优先级和权重,代理DNS服务器中的缓存不会破坏该优先级和权重。管理员可以使用它们完成您可能最终想要做的事情,如设置回退和主服务器组,指定回退顺序,以及控制单个服务器组的权重。编写客户机代码来选择服务器来使用给定的权重和优先级也并不难。
取决于谁将使用您的应用程序,只有您或者整个世界,您可能必须将您的协议名(在SRV资源记录域名中使用)注册到这一个之类的注册中心。正如你所看到的,其他人已经有了。
正如萨米尔也说过,一个真正的负载平衡器是另一个,也更可取的,替代无用的循环洗牌。
https://serverfault.com/questions/266947
复制相似问题