2017-08-25 17 views
1

クライアントが最初に接続するときに、最も近い(最小のPing/Latency)サーバを選択し、将来のためにそのサーバを使用するように、elixir/phoenixで地理的ロードバランサを作ろうとしています。接続。Elixir/Phoenix地理ロードバランサ

クライアントがget "/balance", PageController, :indexにバランサに達し、dbに2つのサーバがあるとします:server1.domain.comserver2.domain.comです。エリクシールバックエンドを使用してクライアントから両方のサーバーへの接続(またはping)をどうにかして渡すことは可能ですか?

ロジックをフロントエンドで作成し、jsでpingしてから、値をバックエンドに戻してストレージにすることができます。しかし、私はむしろバックエンドにすべてを持っています。

ロードバランシングについてのヒントやアドバイスは、それが正しい方法であるかどうかは100%確信していません。ありがとう!

+1

アプリケーションはどのようにホストされますか?クラウドプロバイダーには、DNSレイヤーでこれを解決するツールがあります。[Route53 Latency Policy](http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-latency) –

答えて

2

ロードバランサが1つだけの場合は、あまり意味がありません。たとえば、ロードバランサは米国にあり、米国とヨーロッパにはアプリケーションサーバーがあります。ヨーロッパの訪問者があなたのサイトにアクセスすると、彼はまず米国内のロードバランサに当り、ヨーロッパのアプリケーションサーバーに接続します(または米国でも問題ありません)。あなたは今それからスピードを得る。

DNSレベルで地理的なルーティングを行う必要があります。訪問者が最も近いサーバー(ロードバランサまたはアプリケーションサーバー)を直接訪れるようになると思います。

私はまだトピックを掘り下げていませんが、良い出発点はgeographical dns load balancingのgoogleになり、どこでそれが得られるかを見てください。

このトピックに関する豊富な経験をお持ちの方は、技術面でより詳細な回答を得ることができますが、推奨されるGoogle検索から必要なものを見つけることもできます。

+0

ちょっと@Philipp、あなたの返事をありがとう。はい、私はDNSのロードバランシングについて読んだことがあり、ランディングページ自体にそれを適用したかったのですが、ユーザが自分のアカウントにログインして(トラフィックの管理を強化するため)内部バランシングを使用しようとしたときです。 – Ilya

+0

どのような種類のトラフィックでDNSを制御できないのですか? – Leviathlon

+1

@webdebイスタンブールに住んでいる人として、私は実際それに慣れています。ゴールデンルール、ラッシュアワーと衝突しないでください:) – Leviathlon