intra-mart Accel Platform セットアップガイド 第29版 2019-08-01

11.1.2. Resin をクラスタリングしての分散環境

注意

Resin のクラスタリングによる intra-mart Accel Platform の分散環境の構築は以下の理由により非推奨です。
代わりに、「intra-mart Accel Platform の分散環境(Resin をクラスタリングせずに構築)」を基に分散環境を構築してください。

11.1.2.1. 概要

Resin のクラスタリングは静的な3台のサーバ(トライアドサーバ)と、負荷に応じて自由に手動で追加・削除が可能なサーバ(ダイナミックサーバ)により構成されます。
クラスタ構成にすることで負荷分散、デプロイとアンデプロイの伝播、セッションフェールオーバーが可能です。
../../_images/resin_clustering_01.png

11.1.2.2. トライアドサーバ

トライアドサーバは常に起動している静的なサーバです。クラスタの中心部でハブの役割となり互いに活性監視を行います。
また、3 重の冗長性により1台がメンテナンスを行っている場合でも残り 2 台が処理を継続することにより信頼性を保つことができます。
トライアドサーバを設定するには resin.properties ファイルを編集してください。
トライアドサーバとなる3台のIPアドレスまたはホスト名を「app_servers」に記述します。
同様の設定を 3 台すべてに記述します。
# app-tier Triad servers: app-0 app-1 app-2
app_servers      : 192.168.100.100 192.168.100.101 192.168.100.102

コラム

app_servers に IP アドレスのみを記述した場合、ポート番号は <resin.xml> ファイルの <server-multi port=”6800”/> が使用されます。
任意のポート番号を使用する場合は「[IP アドレス]:[ポート番号]」と記述してください。
# app-tier Triad servers: app-0 app-1 app-2
app_servers      : 192.168.100.100:6801 192.168.100.101:6802 192.168.100.102:6803
IPアドレスを記述した順に自動的に ID が割り振られます。 ID はプレフィックスが「app-」となり 0 から始まる数字が割り当てられます。
この記述例では下記のように ID が割り当てられます。
192.168.100.100   app-0
192.168.100.101   app-1
192.168.100.102   app-2
各サーバ上からコマンドを実行してトライアドサーバを起動してください。コマンドに含まれる ID は各サーバに応じて自身の ID を指定してください。
下記は IP アドレスが 192.168.100.100 のサーバから実行するコマンドの例です。
192.168.100.101 のサーバでは ID を「app-1」に、192.168.100.102 のサーバでは「app-2」に変更してコマンドを実行してください。
  • Windows の場合
    > resin.exe -server app-0 console
    
  • Linux の場合
    > resinctl -server app-0 console
    
以上でトライアドサーバを使用する手順は終了です。

コラム

トライアドサーバは 3 重の冗長性を意味する名称です。
1 台または 2 台でも役割を行いますが、1 台に障害が発生したりメンテナンスの場合でも、トライアドサーバは常に起動していなければならないため、最大で3台が起動可能な仕組みです。
トライアドサーバが起動していないシステムではダイナミックサーバがクラスタに参加できません。
想定するシステム負荷からダイナミックサーバも必要なく 2 台で十分な場合は、 2 台のみのクラスタリング構成も可能です。

コラム

Windows サービスへの登録については、「 Windowsサービスへの登録 」を参照してください。

11.1.2.3. ダイナミックサーバ

ダイナミックサーバを使用することでシステムの利用状況に応じて、自由に手動でサーバの追加・削除を行うことができます。
新規にダイナミックサーバを追加すると自動的にクラスタリングの調整が行われ活性監視の対象として扱われます。
また、トライアドサーバから Web アプリケーションの配信とセッションのフェールオーバーが自動的に行われます。
ダイナミックサーバを設定するには resin.properties ファイルを編集してください。下記の3つの設定が必要です。
  • app_servers
    トライアドサーバとなる3台の IP アドレスまたはホスト名を記述します。
  • elastic_cloud_enable
    コメントアウトされている属性を有効化し値を「true」とします。
  • home_cluster
    ダイナミックサーバを追加するクラスタの ID を指定します。resin.xml ファイルがデフォルト設定の場合は「app」としてください。
下記はダイナミックサーバを使用する場合の記述例です。
この設定はトライアドサーバとダイナミックサーバの両方に同じ設定を行ってください。
# app-tier Triad servers: app-0 app-1 app-2
app_servers      : 192.168.100.100 192.168.100.101 192.168.100.102

・・・

# Allow elastic nodes to join the cluster (enable for cloud mode)
elastic_cloud_enable : true

・・・

# The cluster that elastic nodes should join - each will contact a Triad server
# Use a separate resin.properties file for each cluster
home_cluster : app
設定が記述された resin.properties ファイルは、サーバを容易に複製するためにコピーを保存しておくことをお勧めします。
ダイナミックサーバを実行します。サーバ上からコマンドを実行してください。
全てのトライアドサーバは予め起動してください。
  • Windows の場合
    > resin.exe --elastic-server --cluster app console
    
  • Linux の場合
    > resinctl --elastic-server --cluster app console
    
以上でダイナミックサーバを使用する手順は終了です。

11.1.2.4. クラスタへのデプロイ

注意

以下の方法でデプロイを行った場合、 <%RESIN_HOME%/resin-data/.git> 配下のディレクトリが肥大化します。
この方法でデプロイを行う場合は、各トライアドサーバとダイナミックサーバの <.git> ディレクトリの使用量を確認し、適時 <.git> ディレクトリを削除するようにしてください。

または、 webapps ディレクトリに WAR ファイルを直接配置してデプロイを行うことを検討してください。
ただし、上記の方法を利用する場合は各トライアドサーバとダイナミックサーバに対してデプロイを実施する必要があります。
クラスタへのデプロイは、単一のサーバへデプロイを実行するとすべてのサーバへ Web アプリケーションがレプリケートされデプロイが行われます。

ユーザはトライアドサーバへのみデプロイを行います。トライアドサーバへデプロイのコマンドを実行すると WAR ファイルは Resin の内部データベースに登録されます。
登録された WAR ファイルはその他のトライアドサーバとダイナミックサーバにレプリケートされ、各サーバでデプロイが自動的に行われます。
../../_images/resin_clustering_02.png
  • デプロイの実行
    トライアドサーバのどれか1台にwarファイルを転送し、サーバ上からコマンドを実行してください。
    • Windows の場合
      > resin.exe deploy c:\imart.war
      
    • Linux の場合
      > resinctl deploy ./imart.war
      
  • アンデプロイの実行
    アンデプロイも同様にサーバ上からコマンドを実行してください。トライアドサーバのどれか 1 台にのみ実行すれば、すべてのサーバでアンデプロイが行われます。
    • Windows の場合
      > resin.exe undeploy imart
      
    • Linux の場合
      > resinctl undeploy imart
      
以上でデプロイの手順は終了です。

コラム

デプロイ、アンデプロイのコマンドはトライアドサーバにのみ可能です。
app-0,app-1,app-2のどれか 1 台に実行してください。
ダイナミックサーバに対してコマンドを実行することはできません。

注意

Resin のクラスタリング環境を運用する場合は、必ず Web Server やロードバランサ―をスティッキーセッションとし、同一セッションのリクエストが同じ Resin に送信されるように設定してください。