web-dev-qa-db-ja.com

HAProxy-負荷分散を使用したURLベースのルーティング

私はHAProxyを初めて使用しますが、HAProxyの構成について質問があり、適切なアプローチをとる上で重要な決定を下すのに役立ちます。これは、アーキテクチャを決定するのに大いに役立ちます。

アプリが3つあります。まあ言ってみれば app1app2app3

各アプリは、次のようにURLによって区別されます。

www.example.com/app1/123 -> app1
www.example.com/app2/123 -> app2
www.example.com/app3/123 -> app3

2つの異なる地域に各アプリの2つのインスタンスを作成する予定です。

Region 1 - app1, app2, app3
Region 2 - app1, app2, app3

これを構成する方法は2つありますが、ここでどちらがベストプラクティスかはわかりません。

  • 方法1:URLパターンを使用してリクエストを最初に区別するHAProxy1を用意します。 HAProxy1からの要求は、負荷分散のために個別のアプリ(この場合は3つのHAProxyサーバー)をセットアップする別のHAProxyサーバーにルーティングされます。

  • 方法2:方法1で述べたように両方を実行する1つの優れたHAProxyサーバーがあります。つまり、URLに応じてリクエストを分離し、設定などの個々のフィルターを介して各リクエストを渡します。負荷分散のためのアプリごとに。

方法2がhaproxyでサポートされているかどうかはわかりません。アイデアや提案は大歓迎です。光を少し入れてください。

35
rohit369

単一のHAProxyサーバーを使用して、URLと負荷分散に基づいてリクエストを分離できます。設定には次のようなものがあります。

frontend http
acl app1 path_end -i /app1/123 #matches path ending with "/app/123"
acl app2 path_end -i /app2/123 
acl app3 path_end -i /app3/123 


use_backend srvs_app1    if app1
use_backend srvs_app2    if app2
use_backend srvs_app3    if app3

backend srvs_app1 #backend that lists your servers. Use a balancing algorithm as per your need.
   balance roundrobin 
   server Host1 REGION1_Host_FOR_APP1:PORT 
   server Host2 REGION2_Host_FOR_APP1:PORT

backend srvs_app2
   balance roundrobin
   server Host1 REGION1_Host_FOR_APP2:PORT 
   server Host2 REGION2_Host_FOR_APP2:PORT

backend srvs_app3
   balance roundrobin
   server Host1 REGION1_Host_FOR_APP3:PORT 
   server Host2 REGION2_Host_FOR_APP3:PORT

詳細は homepage で見つけることができます。

55
Gooner