intra-mart Accel Platform セットアップガイド 第21版 2017-04-01

11.1. Resinのクラスタリング

11.1.1. 概要

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

11.1.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.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.4. クラスタへのデプロイ

クラスタへのデプロイは、単一のサーバへデプロイを実行すると全てのサーバへ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に送信されるように設定してください。