Server(以下、AS)と、Tomcatとの単体での性能(スループット、レスポンスタイム)の比較を行いました。今回はJBossクラスタについての説明と、クラスタ環境での性能比較について紹介します。図1:クラスタ構成の概要JBossでクラスタを構成する場合、一般的には図1のようにクライアントからのアクセスをWebサーバ(Apache)で受け、Apacheに導入したコネクタモジュールからJBossクラスタの各ノードにリクエストを振り分ける構成になります。JBoss側の構成について見てみましょう。JBossクラスタAPサーバ同士のクラスタを構成するためには、クラスタのノード間通信を行う機能と、各ノードが保持しているセッション情報をレプリケーションする機能の2つが必要になります。JBossの場合、ノード間通信はJGroupsサブシステム、セッションレプリケーションはInfinispanサブシステムを利用することで、クラスタ化を実現しています。JGroupsJGroupsは、クラスタノード間の通信機能を提供します。haプロファイルもしくはfull-haプロファイルでは、デフォルトでUDPマルチキャスト通信による自動検出を行うよう設定されており、サーバを起動すると自動的にクラスタが構成されます。通信にはTCPも利用できますので、マルチキャスト通信が許可されていないネットワークでもクラスタ構成を採れます。InfinispanInfinispanは、キャッシュ機能を提供するサブシステムです。JBossに含まれるInfinispanは、クラスタの内部利用を目的として組み込まれており、セッションレプリケーションはInfinispanを利用して実現しています。こちらもhaもしくはfull-haプロファイルには定義済みです。キャッシュの同期方式と同期対象は、それぞれ表1、2の方式から選択可能です。セッションレプリケーションの応答受信が全て完了してから、クライアントにレスポンスを返すキャッシュモードをReplicationからDistributionに変更すると、クラスタ内でキャッシュを保持している台数が減るため信頼性は低下しますが、ノード間の通信量は減るので高速になります。同期モードをASYNCからSYNCにすると、セッション情報の複製確認まで行うようになるため信頼性は高まりますが、同期待ちの増加により性能が低下することになります。コネクタクライアントとJBossクラスタの間にWebサーバ(Apache)を設置してロードバランシングする場合、コネクタとしては以下の3つの選択肢があります。Tomcatプロジェクトによって開発されているコネクタです。開発の歴史も古く情報も豊富なため、利用される方も多いようです。HTTPに標準で含まれているプロキシ用モジュールです。mod_proxyはいくつかのモジュールに分割されていて、APサーバとの通信を行う場合はmod_proxy_ajp、mod_proxy_httpといったモジュールを利用して通信します。Connector(mod_cluster)JBossコミュニティが開発しているコネクタモジュールです。mod_clusterは、JBossパッケージに含まれて配布されていますので、簡単に利用できます。mod_jkやmod_proxyは、Webサーバ側に導入するコネクタです。mod_clusterは他の2つとは異なり、Webサーバ、APサーバそれぞれにモジュールを導入します(図2)。図2:コネクタ構成の違いコネクタが利用するプロトコルとロードバランシング方式を簡単にまとめると、表3のようになります。利用できるプロトコルはmod_jkがAJPのみで、mod_proxyやmod_clusterはAJPに加えてHTTP、HTTPSも利用できます。したがってWebサーバとAP間の通信で暗号化(https)が必要といったような要件がある場合は、mod_jkは利用できないことになります。ロードバランシングの方式について比較すると表4のようになります。○ロードバランサとして一般的に選択されるラウンドロビン(処理リクエスト数)やリーストコネクション(待機リクエスト数)といった方式であれば、どのコネクタでも利用できます。mod_jkやmod_proxyは、Webサーバ上で取得できる情報に基づいてリクエストの振り分け先を決定しますが、mod_clusterはこれに加えて、APサーバ側のCPU負荷やメモリ使用量といった情報も利用して振り分け先を決定できます。Benchを利用して簡単な試験を実施しました。各コネクタのロードバランシング方式は、処理リクエスト数による振り分けとし、単位時間あたりの処理リクエスト数を比較してみます(図3)。4284表5の結果から、mod_clusterは他の2つのコネクタと比べると処理性能が低いことがわかります。APサーバ側の負荷情報で振り分ける機能は魅力的ですが、利用する場合は実効性能に注意する必要がありそうです。学生の頃にLinuxで構築された研究室のシステムに影響を受けOSS関連の業務に進む。システムインテグレーションやOSサポートを経験し、2012年からは戦略技術センターにてOSSを利用した新規技術の開発や検証などを行っている。ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。VeloCloudが選ばれる理由SD-WANとはなにか。Linuxエンジニア育成への思いF5とNGINXの組み合わせで、サービス公開をよりセキュアに。ITがお届けするポッドキャストです。