configuration - 振り分け - HAProxy-ロードバランシングによるURLベースのルーティング



ホストベースルーティング (1)

私は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がハプロキシでサポートされているかどうかはわかりません。 どんなアイデアや提案も大歓迎です。 光を入れてください。


1つの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ご覧ください。





haproxy