例: デプロイメント・ポリシー記述子 XML ファイルを使用したゾーン定義

デプロイメント・ポリシー記述子 XML ファイルを使用して、ゾーンおよびゾーン・ルールを指定できます。

例: 異なるゾーンでのプライマリー断片およびレプリカ断片

この例は、1 つの非同期レプリカで、プライマリー断片を 1 つのゾーンに、レプリカ断片を別のゾーンに配置するものです。 すべてのプライマリー断片は、DC1 ゾーンで開始します。レプリカ断片はゾーン DC2 で開始します。

<?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="library">
	<mapSet name="ms1" numberOfPartitions="13" minSyncReplicas="0"
		maxSyncReplicas="0" maxAsyncReplicas="1">
		<map ref="book" />
		<zoneMetadata>
				<shardMapping shard="P" zoneRuleRef="primaryRule"/>
				<shardMapping shard="A" zoneRuleRef="replicaRule"/>
				<zoneRule name="primaryRule">
					<zone name="DC1" />
				</zoneRule>
				<zoneRule name="replicaRule">
				</zoneRule>
		</zoneMetadata>
 	</mapSet>
  </objectgridDeployment>
 </deploymentPolicy>

1 つの非同期レプリカが ms1 mapSet エレメントの中で定義されます。したがって、各区画に、1 つのプライマリー断片と 1 つの非同期レプリカ断片の、2 つの断片が存在します。zoneMetadata エレメントの中で、断片ごとに shardMapping エレメントが定義されます。つまり、プライマリーには P が、非同期レプリカには DC1 が定義されます。 primaryRule 属性はプライマリー断片のゾーン・セット (これがまさにゾーン DC1 です) を定義し、このルールはプライマリー断片の配置に使用されます。 非同期レプリカは DC2 ゾーンに配置されます。

しかし、DC2 ゾーンが失われると、レプリカ断片は使用不可になります。DC1 ゾーンでコンテナー・サーバーが失われるか失敗すると、たとえレプリカが指定されていてもデータが損失する可能性があります。

この可能性に対処するには、次のセクションで説明しているように、ゾーンを追加するか、レプリカを追加します。

例: ゾーンの追加、断片のストライピング

次のコードは、新しいゾーンを構成します。

<?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="library">
		<mapSet name="ms1" numberOfPartitions="13" minSyncReplicas="0"
			maxSyncReplicas="0" maxAsyncReplicas="1">
 				<map ref="book" />
 				<zoneMetadata>
 					<shardMapping shard="P" zoneRuleRef="stripeRule"/>
				 	<shardMapping shard="A" zoneRuleRef="stripeRule"/>
				 	<zoneRule name="stripeRule" exclusivePlacement="true">
					 	<zone name="A" />
					 	<zone name="B" />
						<zone name="C" />
 					</zoneRule>
				</zoneMetadata>
 		</mapSet>
	</objectgridDeployment>
</deploymentPolicy>

このコードでは、全部で 3 つのゾーン (A、B、および C) が定義されました。プライマリーとレプリカで別々のゾーン・ルールではなく、stripeRule という共有ゾーン・ルールが定義されています。 このルールには、すべてのゾーンが含まれ、exclusivePlacement 属性は true に設定されています。eXtreme Scale 配置ポリシーによって、プライマリー断片とレプリカ断片は確実に別々のゾーンに配置されます。 この配置のストライピングによって、プライマリー断片とレプリカ断片が、このポリシーに従って両方のゾーンに拡散することになります。 3 つ目のゾーン C を追加することで、いずれか 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="library">
 		<mapSet name="ms1" numberOfPartitions="13" minSyncReplicas="1"
			maxSyncReplicas="1" maxAsyncReplicas="1">
		 	<map ref="book" />
		 	<zoneMetadata>
			 	<shardMapping shard="P" zoneRuleRef="primarySync"/>
			 	<shardMapping shard="S" zoneRuleRef="primarySync"/>
			 	<shardMapping shard="A" zoneRuleRef="async"/>
				<zoneRule name="primarySync" exclusivePlacement="false">
				 	<zone name="DC1" />
 					<zone name="DC2" />
			 	</zoneRule>
			 	<zoneRule name="async" exclusivePlacement="true">
					<zone name="DC1" />
				 	<zone name="DC2" />
			 	</zoneRule>
			</zoneMetadata>
		</mapSet>
  </objectgridDeployment>
 </deploymentPolicy>

プライマリーと同期レプリカは、exclusivePlacement 属性設定 false で primarySync ルールを共有します。exclusivePlacement 属性が false に設定されていると、各区画のプライマリー断片と同期レプリカ断片を同じゾーンに配置する構成が作成されます。 非同期レプリカ断片は、primarySync ゾーン・ルールとゾーンがほとんど同じである第 2 のゾーン・ルールを使用します。 しかし、非同期レプリカは、true に設定された exclusivePlacement 属性を使用します。exclusivePlacement 属性は true に設定されると、断片を同じ区画の別の断片があるゾーンには配置できないことを意味します。 結果的に、非同期レプリカ断片は、プライマリーまたは同期レプリカ断片と同じゾーンに配置されません。この mapSet には区画ごとに 3 つの断片 (プライマリー、同期レプリカ、および非同期レプリカ) があるため、3 つの shardMapping エレメント (各断片に 1 つ) があります。

ゾーンが失われると、非同期レプリカも失われます。非同期レプリカには独立したゾーンがないため、失われた非同期レプリカは再生成されません。 プライマリー断片とレプリカ断片が失われると、残存した非同期レプリカがプライマリーにプロモートされ、ゾーン内に新しい同期レプリカが作成されます。プライマリーとレプリカは、各ゾーンの間でストライピングされます。

排他的配置の場合、各断片は独自のゾーンを持ちます。つまり、これらの断片をすべて独自のゾーンに配置できるだけの十分なゾーンを用意する必要があります。 ルールに 1 つのゾーンがある場合は、そのゾーンに断片を 1 つしか配置できません。 2 つのゾーンがあれば、最大 2 つの断片をそのゾーンに配置できます。

例: WebSphere Application Server 環境内のゾーン

次のコードは、新しいゾーンを構成します。

<?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="library">
		<mapSet name="ms1" numberOfPartitions="13" minSyncReplicas="0"
			maxSyncReplicas="0" maxAsyncReplicas="1">
 				<map ref="book" />
 				<zoneMetadata>
 					<shardMapping shard="P" zoneRuleRef="stripeRule"/>
				 	<shardMapping shard="A" zoneRuleRef="stripeRule"/>
				 	<zoneRule name="stripeRule" exclusivePlacement="true">
						<zone name="ReplicationZoneA" />
					 	<zone name="ReplicationZoneB" />
						<zone name="ReplicationZoneC" />
 					</zoneRule>
				</zoneMetadata>
 		</mapSet>
	</objectgridDeployment>
</deploymentPolicy>
この例では、ReplicationZoneA、ReplicationZoneB、ReplicationZoneC の 3 つのノード・グループが WebSphere® Application Server 環境の中で定義されます。ノード・グループ名と、デプロイメント・ポリシー記述子 XML ファイル内のゾーン名は同じでなければならず、テキスト ReplicationZone<identifier> を含んでいなければなりません。 このファイルは、断片のストライピングの例と類似した構成を定義しますが、WebSphere Application Server 構成の必要な命名を示します。