2017-08-25 113 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