26.2. ファーミングデプロイメント

アプリケーションをクラスター内にデプロイする最も簡単な方法はファーミングサービスを使用することです。 ファーミングサービスを使用すると、アプリケーション (アーカイブファイルまたは展開形式の EAR、 WAR 、 SAR など) をクラスターメンバの all/farm/ ディレクトリへデプロイすることができます。 アプリケーションは自動的に同じクラスター内の全ノードで複製されます。 ノードが後にクラスタに参加する場合、 クラスター内のファーミングデプロイされたアプリケーションがすべてプルインされ起動時にローカルにデプロイされます。 実行中のクラスター化されたサーバーノードの farm/ ディレクトリよりアプリケーションを削除すると、 アプリケーションはローカルでアンデプロイされ、 他すべてのクラスター化されたサーバーノードにある farm/ ディレクトリより削除されます (アンデプロイがトリガされます)。
JBoss Enterprise Application Platform の all 設定ではファーミングがデフォルトで有効になっているため、 自分で設定する必要はありません。必須の farm-deployment-jboss-beans.xml 設定ファイルと timestamps-jboss-beans.xml 設定ファイルは deploy/cluster ディレクトリにあります。カスタム設定でファーミングを有効にしたい場合は JBoss deploy ディレクトリ $JBOSS_HOME/server/$your_own_config/deploy/cluster にこれらのファイルをコピーするだけです。 カスタム設定ではクラスタリングが有効になっているようにしてください。
ファーミングサービスをカスタマイズする必要はほとんどありませんが、 FarmProfileRepositoryClusteringHandler Bean よりカスタマイズすることができます。 プロパティとデフォルト値は次のようになります。
<bean name="FarmProfileRepositoryClusteringHandler"
      class="org.jboss.profileservice.cluster.repository.
      DefaultRepositoryClusteringHandler">
  
  <property name="partition"><inject bean="HAPartition"/></property>
  <property name="profileDomain">default</property>
  <property name="profileServer">default</property>
  <property name="profileName">farm</property>
  <property name="immutable">false</property>
  <property name="lockTimeout">60000</property><!-- 1 minute -->
  <property name="methodCallTimeout">60000</property><!-- 1 minute -->
  <property name="synchronizationPolicy"><inject bean="FarmProfileSynchronizationPolicy"/></property>
</bean>
  • partition は必須の属性で、 クラスター内の通信でファームサービスが使用する HAPartition サービスを挿入します。
  • profile[Domain|Server|Name] は、 このハンドラーが目的とするサーバープロファイルを特定するのに使用されます。
  • immutable は、 ノードがコンテンツの変更をクラスターへプッシュすることを許可するかを示します。 true の値は、 synchronizationPolicyorg.jboss.system.server.profileservice.repository.clustered.sync. ImmutableSynchronizationPolicy に設定することに相当します。
  • lockTimeout はクラスター全体のロック取得に対して待機する時間 (ミリ秒単位) を定義します。
  • methodCallTimeout は、 リモートクラスターノード上の呼び出しに対して待機する時間 (ミリ秒単位) を定義します。
  • synchronizationPolicy は、 クラスターへの参加を試みるノードやノードの統合より、 どのようにクラスターコンテンツを追加、 再生、 更新、 削除するかを決定します。 ポリシーは「権限のある」ノード上で確認されます (クラスター上のサービスのマスターノードなど)。 再生 (Reincarnation) は、 新たに起動されたノードの farm ディレクトリに以前ファーミングサービスによって削除されたサービスが存在することで、実行されていない時に削除されると起動するノードに残存することがあります。 デフォルトの synchronizationPolicy は次のように定義されます。
    <bean name="FarmProfileSynchronizationPolicy"
          class="org.jboss.profileservice.cluster.repository.
          DefaultSynchronizationPolicy">
      <property name="allowJoinAdditions"><null/></property>
      <property name="allowJoinReincarnations"><null/></property>
      <property name="allowJoinUpdates"><null/></property>
      <property name="allowJoinRemovals"><null/></property>
      <property name="allowMergeAdditions"><null/></property>
      <property name="allowMergeReincarnations"><null/></property>
      <property name="allowMergeUpdates"><null/></property>
      <property name="allowMergeRemovals"><null/></property>
      <property name="developerMode">false</property>
      <property name="removalTrackingTime">2592000000</property><!-- 30 days -->
      <property name="timestampService"><inject bean="TimestampDiscrepancyService"/></property>
    </bean>
    
    • allow[Join|Merge][Additions|Reincarnations|Updates|Removals] は、 要求への固定応答を定義し、 結合されたノードや統合されたノードからの追加、再生、更新、削除を可能にします。
    • developerMode は、 すべての変更を許可する寛大な同期化ポリシーを有効します。 developerModeを有効にすることは、 上記の各プロパティを true に設定することに相当するため 、開発環境用の設定となります。
    • removalTrackingTime は、 再生の検知に使用するため、 ポリシーが削除されたアイテムを記憶すべき期間 (ミリ秒単位) を定義します。
    • timestampService は、 クラスターの現在および過去のメンバーに対するシステムクロックの不一致を推測し追跡します。 デフォルト実装は timestamps-jboss-beans.xml に定義されます。