2017-08-25 83 views
1

我试图用elixir/phoenix创建一个地理负载平衡器,这样当客户端初次连接时,它会选择最近的(最少的ping /延迟)服务器并将其用于未来连接。Elixir/Phoenix地理负载平衡器

假设客户端达到平衡器get "/balance", PageController, :index,在我的分贝我有2个服务器:server1.domain.comserver2.domain.com。是否有可能以某种方式将连接(或ping)从客户端传递到两个带有elixir后端的服务器?

我大概可以在前端制作逻辑,用js进行ping操作,然后将值返回到后端进行存储。但是,我宁愿将所有东西都放在后端。

有关负载平衡的任何提示或建议都很赞赏,因为我不能100%确定这是否正确。谢谢!

+1

应用程序将如何托管?云提供商有工具可以在DNS层解决这个问题,例如:[Route53延迟策略](http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-latency) –

回答

2

那么,如果你只有1个负载平衡器,它没有太大的意义。例如,您的负载均衡器位于美国,您在美国和欧洲都有应用程序服务器。当来自欧洲的访问者访问您的网站时,他将首先击中美国的负载均衡器,然后连接到欧洲的应用服务器(甚至美国,这并不重要)。你现在从中获益。

您需要在DNS级别上执行地理路由我想这样访问者直接访问最近的服务器(可以是负载均衡器或应用程序服务器)。

我还没有挖掘到这个话题,但一个很好的起点将谷歌geographical dns load balancing,看看它得到你。

也许有人对这个主题有更多的经验可以在技术方面给出更详细的答案,但也许你也可以从建议的Google搜索中找到你需要的。

+0

嘿@Philipp,谢谢你的回复。是的,我已阅读了DNS负载平衡并希望将其应用到登录页面本身,但是当用户尝试登录到他的帐户以使用内部平衡(以便更好地控制流量)时。 – Ilya

+0

你无法通过DNS控制什么样的流量? – Leviathlon

+1

@webdeb作为住在伊斯坦布尔的人,我已经习惯了。黄金法则,不要与高峰时间冲突:) – Leviathlon