デプロイメント・ポリシー記述子 XML ファイル

デプロイメント・ポリシーを構成するには、デプロイメント・ポリシー記述子 XML ファイルを使用します。

以下のセクションでは、デプロイメント・ポリシー記述子 XML ファイルのエレメントおよび属性が定義されます。 対応するデプロイメント・ポリシー XML スキーマについては、 deploymentPolicy.xsd ファイル を参照してください。

図1: deploymentPolicy.xml ファイル内のエレメント
<?xml version="1.0" encoding="UTF-8"?>
<deploymentPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://ibm.com/ws/objectgrid/deploymentPolicy ../deploymentPolicy.xsd"
	xmlns="http://ibm.com/ws/objectgrid/deploymentPolicy">     
	<objectgridDeployment objectgridName="myGrid">
		<mapSet
				name="mapSetName"
				numberOfPartitions="numberOfPartitions"
				minSyncReplicas="minimumNumber"
 				maxSyncReplicas="maximumNumber"
				maxAsyncReplicas="maximumNumber"
				replicaReadEnabled="true|false"
				numInitialContainers="numberOfInitialContainersBeforePlacement"
				autoReplaceLostShards="true|false"
				developmentMode="true|false"
				placementStrategy="FIXED_PARTITIONS|PER_CONTAINER">
				<map ref="backingMapReference" />

					<zoneMetadata>
						<shardMapping
							shard="shardType"
							zoneRuleRef="zoneRuleRefName" />
						<zoneRule 
								name="zoneRuleName"
								exclusivePlacement="true|false" >
								<zone name="ALPHA" />
								<zone name="BETA" />
								<zone name="GAMMA" />
						</zoneRule>
					</zoneMetadata>
	 		</mapSet>
		</objectgridDeployment>
	</deploymentPolicy>

deploymentPolicy エレメント

deploymentPolicy エレメントは、デプロイメント・ポリシー XML ファイルの最上位エレメントです。 このエレメントは、ファイルの名前空間とスキーマ・ロケーションをセットアップします。 スキーマは deploymentPolicy.xsd ファイルで定義されます。
  • 出現回数: 1 回
  • 子エレメント: objectgridDeployment

objectgridDeployment エレメント

objectgridDeployment エレメントは、ObjectGrid XML ファイルの ObjectGrid インスタンスを参照する場合に使用します。 objectgridDeployment エレメント内では、マップをマップ・セットに分割できます。
  • 出現回数: 1 回以上
  • 子エレメント: mapSet
属性
objectgridName
デプロイする ObjectGrid インスタンスの名前を指定します。 この属性は、ObjectGrid XML ファイルで定義されている objectGrid エレメントを参照します。 (必須)
例えば、 objectgridName 属性は、 companyGridDpReplication.xml ファイル内で CompanyGrid として設定されます。 objectgridName 属性は、 companyGrid.xml ファイルに定義されている CompanyGrid を参照します。 ObjectGrid 記述子 XML ファイルを参照してください。このファイルは、各 ObjectGrid インスタンスのデプロイメント・ポリシー・ファイルと結合する必要があります。

mapSet エレメント

mapSet エレメントは複数のマップをまとめてグループ化するために使用されます。 mapSet エレメント内のマップは同じように区画に分割され、複製されます。 各マップは、単一の mapSet エレメントのみに属している必要があります。
  • 出現回数: 1 回以上
  • 子エレメント:
    • マップ
    • zoneMetadata
属性
name
(必須) MapSet の名前を指定します。 この属性は、objectgridDeployment エレメント内では固有である必要があります。
numberOfPartitions
(オプション) MapSet エレメント用の区画の数を指定します。 デフォルト値は 1 です。 この数は、区画をホストしているコンテナー・サーバーの数に適した値である必要があります。 (オプション)
minSyncReplicas
同期レプリカの最小数を MapSet 内の区画ごとに指定します。 デフォルト値は 0 です。 断片は、ドメインが同期レプリカの最小数をサポートできるようになるまで配置されません。 minSyncReplicas 値をサポートするには、minSyncReplicas 値よりも 1 つ多いコンテナー・サーバーが必要です。 同期レプリカの数が minSyncReplicas 値よりも小さくなると、その区画に対しては書き込みトランザクションを行えなくなります。
次の構成では、minSyncReplicas 値が 0 より大きい値に設定されると、 レプリカは次のように期待されるため、トランザクションはデータ・グリッドから拒否されます。
  • 複数ゾーン構成では、ゾーンは 1 つのみ使用可能です。
  • ホストが 1 つのみ使用可能で、developmentMode 属性は false に設定されています。
  • allowableShardOverrage プロパティーが構成されている場合、2 番目のゾーンのコンテナー・サーバーの数が、 構成されたパーセンテージを超えるまで、特定の区画のトランザクションは拒否されます。
maxSyncReplicas
同期レプリカの最大数を MapSet 内の区画ごとに指定します。 デフォルト値は 0 です。 ドメインがある区画のこの同期レプリカ数に達すると、その特定の区画に対しては他の同期レプリカは配置されません。 まだ maxSyncReplicas 値を満たしていない場合には、この ObjectGrid をサポートできるコンテナー・サーバーを追加すると、同期レプリカの数を増やすことができます。 (オプション)
maxAsyncReplicas
非同期レプリカの最大数を MapSet 内の区画ごとに指定します。 デフォルト値は 0 です。 1 つの区画に対して 1 次レプリカとすべての同期レプリカが配置されると、 maxAsyncReplicas 値が満たされるまで非同期レプリカが配置されます。 (オプション)
replicaReadEnabled
この属性が true に設定されている場合、プライマリー区画とそのレプリカ間に読み取り要求が分散されます。 replicaReadEnabled 属性が false の場合は、読み取り要求はプライマリーにのみ送付されます。 デフォルト値は false です。 (オプション)
numInitialContainers
この mapSet エレメント内の断片に対して初期配置が行われる前に必要となるコンテナー・サーバーの数を指定します。 デフォルト値は 1です。 この属性は、コールド・スタートからデータ・グリッドをオンラインにするときに、プロセスとネットワーク帯域幅を節約するのに役立ちます。 (オプション)
また、placementDeferralInterval プロパティーおよび xscmd -c suspendBalancing コマンドを使用して、コンテナー・サーバーへの断片の初期配置を遅らせることができます。
コンテナー・サーバーを始動すると、カタログ・サービスにイベントが送信されます。 アクティブなコンテナー・サーバーの数が初めて mapSet エレメントの numInitialContainers 値と等しくなり、さらに minSyncReplicas 値も満たすことができる場合には、カタログ・サービスは mapSet の断片を配置します。 numInitialContainers 値を満たすと、コンテナー・サーバーによって始動された各イベントは、未配置の断片と既に配置されている断片の再バランシングを引き起こす場合があります。 この mapSet エレメントに対して始動する予定のコンテナー・サーバーのおおよその数が分かっている場合は、その数に近い numInitialContainers 値を設定して、すべてのコンテナー・サーバーが始動した後の再バランシングを回避することができます。 配置は、mapSet エレメントに指定した numInitialContainers 値に到達した場合にのみ行われます。

例えば、サーバーのメンテナンスを行っていて、断片配置の実行を継続させたいときに、numInitialContainers 値をオーバーライドするには、xscmd -c triggerPlacement コマンドを使用することができます。 このオーバーライドは一時的なものであり、このコマンドの実行時に適用されます。 このコマンドを実行した後、後続のすべての配置の実行で numInitialContainers 値が使用されます。

autoReplaceLostShards
失われた断片がその他のコンテナー・サーバーに配置されるかどうかを指定します。 デフォルト値は trueです。 コンテナー・サーバーが停止するか、障害を発生すると、コンテナー・サーバーで実行中の断片が失われます。 プライマリー断片が失われると、対応する区画のレプリカ断片のいずれかがプライマリー断片にプロモートされます。 このプロモーションのため、レプリカの 1 つが失われます。 失われた断片を未配置のままにしておく場合は、autoReplaceLostShards 属性を false に設定します。 この設定はプロモーション・チェーンには影響せず、そのチェーン内の最後の断片の置き換えにのみ影響します。 (オプション)
developmentMode
この属性を使用すると、ある断片をそのピア断片との関係でどこに配置するかを制御できます。 デフォルト値は trueです。 developmentMode 属性が false に設定されている場合は、同じ区画の 2 つの断片は同じコンピューターには配置されません。 developmentMode 属性が true に設定されている場合は、同じ区画の断片を同じサーバーに配置することができます。 いずれの場合も、同一の区画の 2 つの断片は、同一のコンテナー・サーバーには配置されません。 (オプション)
placementStrategy
配置ストラテジーには 2 つあります。 デフォルトのストラテジーは、 固定区画ストラテジーを使用するものです。 属性 placementStrategyFIXED_PARTITIONS に設定することで、 使用可能な複数のコンテナー・サーバー間に配置されるプライマリー断片の数は、定義されている区画数にレプリカ数を加えたものになります。 他のストラテジーは、 コンテナーごとのストラテジーを使用するものです。 placementStrategyPER_CONTAINER に設定することで、 各コンテナー・サーバーに配置されるプライマリー断片の数は、定義されている区画数になり、同じ数のレプリカが他のコンテナー・サーバーに配置されます。 (オプション)

map エレメント

mapSet エレメント内の各 map エレメントは、対応する ObjectGrid XML ファイルで定義されている backingMap エレメントの 1 つを参照します。 分散 eXtreme Scale 環境内のすべてのマップは、1 つの mapSet エレメントにのみ属することができます。
  • 出現回数: 1 回以上
  • 子エレメント: なし
属性
ref
ObjectGrid XML ファイル内の backingMap エレメントを参照できるようにします。 mapSet エレメント内の各マップは、ObjectGrid XML ファイルの backingMap エレメントを参照する必要があります。 ref 属性に割り当てられている値は、ObjectGrid XML ファイル内の backingMap エレメントの 1 つの name 属性に一致している必要があります。 (必須)

zoneMetadata エレメント

ゾーンに断片を配置することができます。 ゾーンを使用すると、eXtreme Scale がグリッド上に断片をどのように配置するかを制御できます。 eXtreme Scale サーバーをホストする Java 仮想マシンは、ゾーン ID によってタグ付けすることができます。 デプロイメント・ファイルには 1 つ以上のゾーン・ルールを含めることができます。これらのゾーン・ルールは、断片タイプに関連付けられます。 zoneMetadata エレメントは、ゾーン構成エレメントの容器です。 zoneMetadata エレメントの中で、ゾーンを定義でき、断片配置の振る舞いに影響を及ぼすことができます。

詳しくは、 レプリカ配置用のゾーンを参照してください。

  • 出現回数: 0 回または 1 回
  • 子エレメント:
    • shardMapping
    • zoneRule

属性: なし

shardMapping エレメント

shardMapping エレメントを使用して、断片タイプをゾーン・ルールと関連付けます。 断片の配置は、ゾーン・ルールへのマッピングの影響を受けます。
  • 出現回数: 0 回または 1 回
  • 子エレメント: なし
属性
shard
zoneRule と関連付ける断片の名前を指定します。 (必須)
zoneRuleRef
断片と関連付ける zoneRule の名前を指定します。 (オプション)

zoneRule エレメント

ゾーン・ルールは、断片を配置できるゾーンのセットを指定します。 zoneRule エレメントを使用して、中に断片タイプのセットを置くことができるゾーンのセットを指定します。 ゾーン・ルールはまた、exclusivePlacement 属性を使用して、断片をゾーン全体でどのようにグループ化するかを決定するためにも使用できます。
  • 出現回数: 1 回以上
  • 子エレメント: zone
属性
name
以前に shardMapping エレメント内の zoneRuleRef として定義したゾーン・ルールの名前を指定します。 (必須)
exclusivePlacement
排他設定は、このゾーン・ルールにマップされた各断片タイプが、ゾーン・リストの異なるゾーンに配置されることを示します。 包含設定は、1 つの断片がリストからゾーンに配置されると、このゾーン・ルールにマップされた他の断片タイプもそのゾーンに配置されることを示します。 同じゾーン・ルールにマップされた 3 つの断片に排他設定を使用する場合、 少なくとも 3 つのゾーンが必要です。 3 つの断片には、プライマリーと 2 つの同期レプリカが含まれます。 (オプション)

zone エレメント

ゾーン・エレメントを使用して、ゾーン・ルール内のゾーンに名前を付けます。 名前を付けられた各ゾーンは、サーバーの起動に使用されるゾーン名と一致する必要があります。

例:

以下の例では、mapSet エレメントがデプロイメント・ポリシーを構成するために使用されています。 値は、mapSet1 に設定され、10 区画に分割されています。 これらの分割のそれぞれにおいて、少なくとも 1 つの同期レプリカと、2 つ以下の同期レプリカが使用可能になっている必要があります。 環境が非同期レプリカをサポートできる場合は、各区画には非同期レプリカも含まれています。 すべての同期レプリカは、非同期レプリカが配置される前に配置されます。 さらに、ドメインが minSyncReplicas 値をサポートできるようになるまでは、カタログ・サービスは mapSet1 エレメントの断片を配置しません。 minSyncReplicas 値をサポートするには、複数のコンテナー・サーバー、すなわちプライマリー用に 1 つ、同期レプリカ用に 2 つのコンテナーが必要です。
<?xml version="1.0" encoding="UTF-8"?>
<deploymentPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://ibm.com/ws/objectgrid/deploymentPolicy ../deploymentPolicy.xsd"
	xmlns="http://ibm.com/ws/objectgrid/deploymentPolicy">

	<objectgridDeployment objectgridName="CompanyGrid">
		<mapSet name="mapSet1" numberOfPartitions="10"
			minSyncReplicas="1" maxSyncReplicas="2"	maxAsyncReplicas="1"
		 	numInitialContainers="10" autoReplaceLostShards="true"
			developmentMode="false" replicaReadEnabled="true">
			<map ref="Customer"/>
			<map ref="Item"/>
			<map ref="OrderLine"/>
			<map ref="Order"/>
		</mapSet>
	</objectgridDeployment>

</deploymentPolicy>
複製の設定を満たすには、コンテナー・サーバーは 2 つしか必要ありません。 ただし、numInitialContainers 属性は、 カタログ・サービスがこの mapSet エレメントに断片を配置する前に、使用可能なコンテナー・サーバーを 10 個要求します。 ドメインが、CompanyGrid ObjectGrid をサポートできるコンテナー・サーバーを 10 個持つと、mapSet1 エレメント内のすべての断片が配置されます。

autoReplaceLostShards 属性が true に設定されている場合、この mapSet エレメント内の、 コンテナー・サーバー障害のために失われた断片は、自動的に別のコンテナー・サーバーに再配置されます。 この再配置は、失われた断片をコンテナー・サーバーがホストできる場合にのみ発生します。 mapSet1 エレメントでは、同じ区画内の断片は、同じサーバーには配置できません。developmentMode 属性が false に設定されているためです。 読み取り専用要求は、区画ごとにプライマリー断片とそのレプリカ間に分散されます。これは、replicaReadEnabled 値が true であるためです。

companyGridDpMapSetAttr.xml ファイルは、この map エレメントの ref 属性を使用して、companyGrid.xml ファイルの各 backingMap エレメントを参照します。

その他の例については、 ゾーン優先ルーティングを参照してください。