22.4. JBoss EAP をフロントエンドロードバランサーとして設定
バックエンド JBoss EAP サーバーへリクエストをプロキシーするフロントエンドロードバランサーとして動作するよう JBoss EAP と undertow
サブシステムを設定できます。Undertow は非同期 IO を使用するため、リクエストに関与するスレッドは接続用の IO スレッドのみになります。同じスレッドがバックエンドサーバーへの接続に使用されます。
以下のプロトコルを使用できます。
HTTP/1 および HTTP/2 (
h2c
) をサポートするプレーンテキスト上の HTTP (http
)注記HTTP/2 は テクノロジープレビュー としてのみ提供されます。
HTTP/1 および HTTP/2 (
h2c
) をサポートするセキュアの接続上の HTTP (http
)注記HTTP/2 は テクノロジープレビュー としてのみ提供されます。
-
AJP (
ajp
)
静的ロードバランサー を定義して設定でバックエンドホストを指定するか、mod_cluster フロントエンド を使用してホストを動的に更新します。
22.4.1. mod_cluster を使用して Undertow をロードバランサーとして設定
組み込みの mod_cluster フロントエンドロードバランサーを使用して、他の EAP インスタンスを負荷分散できます。
この手順では、マネージドドメインを実行し、以下が設定済みであることを前提としています。
ロードバランサーとして動作する JBoss EAP サーバー。
-
このサーバーは、
standard-sockets
ソケットバインディンググループにバインドされているデフォルトの
プロファイルを使用します。
-
このサーバーは、
バックエンドサーバーとして動作する 2 つの JBoss EAP サーバー。
-
これらのサーバーはクラスターで実行され、
ha-sockets
ソケットバインディンググループにバインドされるha
プロファイルを使用します。
-
これらのサーバーはクラスターで実行され、
- バックエンドサーバーにデプロイされた負荷分散される分散可能なアプリケーション。
mod_cluster フロントエンドロードバランサーの設定
以下の手順は、マネージドドメインのサーバーを負荷分散しますが、手順を変更するとスタンドアロンサーバーのセットに適用することができます。ご使用の環境に応じて管理 CLI コマンドの値を変更してください。
mod_cluster アドバタイズセキュリティーキーを設定します。
アドバタイズセキュリティーキーを追加すると、ロードバランサーとサーバーが検出中に認証されます。
以下の管理 CLI コマンドを使用して、mod_cluster アドバタイズセキュリティーキーを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /profile=ha/subsystem=modcluster/mod-cluster-config=configuration:write-attribute(name=advertise-security-key, value=mypassword)
/profile=ha/subsystem=modcluster/mod-cluster-config=configuration:write-attribute(name=advertise-security-key, value=mypassword)
mod_cluster のマルチキャストアドレスとポートを使用してソケットバインディングを作成します。
mod_cluster が負荷分散するサーバーの検出と通信に使用するソケット設定を作成する必要があります。
次の管理 CLI コマンドを使用して、適切なマルチキャストアドレスとポートが設定された
modcluster
ソケットバインディングを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow /socket-binding-group=standard-sockets/socket-binding=modcluster:add(multicast-port=23364, multicast-address=224.0.1.105)
/socket-binding-group=standard-sockets/socket-binding=modcluster:add(multicast-port=23364, multicast-address=224.0.1.105)
mod_cluster ロードバランサーを含めます。
アドバタイズセキュリティーキーとソケットバインディングを設定したら、JBoss EAP のロードバランサーインスタンスの Undertow に mod_cluster フィルターを追加する必要があります。
次の管理 CLI コマンドを使用して、mod_cluster フィルターを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /profile=default/subsystem=undertow/configuration=filter/mod-cluster=modcluster:add(management-socket-binding=http, advertise-socket-binding=modcluster, security-key=mypassword)
/profile=default/subsystem=undertow/configuration=filter/mod-cluster=modcluster:add(management-socket-binding=http, advertise-socket-binding=modcluster, security-key=mypassword)
次の管理 CLI コマンドを使用して、mod_cluster フィルターをデフォルトのホストにバインドします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /profile=default/subsystem=undertow/server=default-server/host=default-host/filter-ref=modcluster:add
/profile=default/subsystem=undertow/server=default-server/host=default-host/filter-ref=modcluster:add
mod_cluster によって使用される管理およびアドバタイズソケットバインディングが内部ネットワークのみで公開され、パブリック IP アドレスで公開されないことが推奨されます。
ロードバランサーである JBoss EAP サーバーが 2 つのバックエンドである JBoss EAP サーバーを負荷分散できるようになります。
22.4.2. Undertow を静的ロードバランサーとして設定
Undertow の静的ロードバランサーを設定するには、undertow
サブシステムでプロキシーハンドラーを設定する必要があります。Undertow でプロキシーハンドラーを設定するには、静的ロードバランサーとして動作する JBoss EAP インスタンスで以下を行う必要があります。
- リバースプロキシーハンドラーを追加します。
- 各リモートホストのアウトバウンドソケットバインディングを定義します。
- 各リモートホストをリバースプロキシーハンドラーへ追加します。
- リバースプロキシーの場所を追加します。
以下の例は、JBoss EAP インスタンスを静的ロードバランサーとして設定する方法を示しています。JBoss EAP インスタンスは lb.example.com
にあり、2 つの追加サーバーである server1.example.com
と server2.example.com
との間で負荷分散を行います。ロードバランサーは /app に逆プロキシーを行い、AJP プロトコルを使用します。
リバースプロキシーハンドラーを追加するには、以下を指定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /subsystem=undertow/configuration=handler/reverse-proxy=my-handler:add
/subsystem=undertow/configuration=handler/reverse-proxy=my-handler:add
各リモートホストのアウトバウンドソケットバインディングを定義するには、以下を指定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-host1/:add(host=server1.example.com, port=8009) /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-host2/:add(host=server2.example.com, port=8009)
/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-host1/:add(host=server1.example.com, port=8009) /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-host2/:add(host=server2.example.com, port=8009)
各リモートホストをリバースプロキシーハンドラーに追加するには、以下を指定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /subsystem=undertow/configuration=handler/reverse-proxy=my-handler/host=host1:add(outbound-socket-binding=remote-host1, scheme=ajp, instance-id=myroute, path=/test) /subsystem=undertow/configuration=handler/reverse-proxy=my-handler/host=host2:add(outbound-socket-binding=remote-host2, scheme=ajp, instance-id=myroute, path=/test)
/subsystem=undertow/configuration=handler/reverse-proxy=my-handler/host=host1:add(outbound-socket-binding=remote-host1, scheme=ajp, instance-id=myroute, path=/test) /subsystem=undertow/configuration=handler/reverse-proxy=my-handler/host=host2:add(outbound-socket-binding=remote-host2, scheme=ajp, instance-id=myroute, path=/test)
リバースプロキシーの場所を追加するには、以下を指定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /subsystem=undertow/server=default-server/host=default-host/location=\/app:add(handler=my-handler)
/subsystem=undertow/server=default-server/host=default-host/location=\/app:add(handler=my-handler)
lb.example.com:8080/app
にアクセスすると、server1.example.com
および server2.example.com
からプロキシーされた内容が表示されるようになります。