私はHAProxyを初めて使用しますが、HAProxyの構成について質問があり、適切なアプローチをとる上で重要な決定を下すのに役立ちます。これは、アーキテクチャを決定するのに大いに役立ちます。
アプリが3つあります。まあ言ってみれば app1
、app2
、app3
。
各アプリは、次のように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でサポートされているかどうかはわかりません。アイデアや提案は大歓迎です。光を少し入れてください。
単一の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 で見つけることができます。