既存のトポロジへのセカンダリ・ゾーンの追加

この項では、「複数のゾーンでの構成」で作成した既存のトポロジにセカンダリ・ゾーンを追加する方法を示します。次の例では、セカンダリ・ゾーンを別の地理的な場所(ヨーロッパ)に追加して、ユーザーがセカンダリ・ゾーンからデータを読み取れるようにします。これは、セカンダリ・ゾーンが物理的にクライアントに近いため、またはニューヨーク都市圏のプライマリ・ゾーンが障害のために使用できないためです。このステップでは、容量1の2つの新しいストレージ・ノードの作成と起動、セカンダリ・ゾーンの作成、セカンダリ・ゾーンへの新しいストレージ・ノードのデプロイ、各シャードのレプリカがセカンダリ・ゾーンに配置されるようにトポロジの再分散を実行します。

新しいストレージ・ノード(node07およびnode08)の両方で、次のステップに従います。
  1. 最初のノードから圧縮されたセキュリティ・ファイルをコピーし、ファイルを解凍します。
    unzip -o security.zip -d /;
  2. フランクフルト・ゾーンにデプロイされる最初の新しいストレージ・ノードに対して、makebootconfigユーティリティを起動します。セキュリティ構成は、makebootconfigユーティリティの起動中に有効になります。
    java -jar $KVHOME/lib/kvstore.jar makebootconfig \
    -root $KVROOT \
    -port 5000 \
    -host $KVHOST \
    -harange 5010,5020 \
    -store-security enable \
    -capacity 1 \
    -storagedir ${KVDATA}/disk1 \
    -storagedirsize 5500-MB 
    
  3. ストレージ・ノード・エージェントを起動します。
    java -jar $KVHOME/lib/kvstore.jar start -root $KVROOT &

セカンダリ・ゾーンを作成し、新しいストレージ・ノードをデプロイするには、次のステップを実行します。

  1. 管理CLIを起動します。$KVHOSTはnode01です。
    java -Xmx64m -Xms64m \
    -jar  $KVHOME/lib/kvstore.jar runadmin \
    -port 5000 -host $KVHOST
    -security $KVROOT/security/client.security
  2. フランクフルトにセカンダリ・ゾーンを作成します。
    kv-> plan deploy-zone -name Frankfurt -rf 1 -type secondary -wait
    出力:
    Executed plan 14, waiting for completion...
    Plan 14 ended successfully
  3. フランクフルト・ゾーンにストレージ・ノードsn7をデプロイします。
    kv-> plan deploy-sn -znname Frankfurt -host node07 -port 5000 -wait
    出力:
    Executed plan 15, waiting for completion...
    Plan 15 ended successfully
  4. 管理プロセスを持つストレージ・ノードsn7をフランクフルト・ゾーンにデプロイします。
    kv-> plan deploy-admin -sn sn7 -wait
    出力:
    Executed plan 16, waiting for completion...
    Plan 16 ended successfully 
  5. フランクフルト・ゾーンにストレージ・ノードsn8をデプロイします。
    kv-> plan deploy-sn -znname Frankfurt -host node08  -port 5000 -wait
    出力:
    Executed plan 17, waiting for completion...
    Plan 17 ended successfully
  6. 再分散してから新しいトポロジをデプロイして、セカンダリ・フランクフルト・ゾーンのシャードごとに1つのレプリカを作成します。
    kv-> topology clone -current -name topo_secondary
    出力:
    Created topo_secondary
    kv-> topology redistribute -name topo_secondary -pool AllStorageNodes
    出力:
    Redistributed: topo_secondary
    kv-> topology preview -name topo_secondary
    出力:
    Topology transformation from current deployed topology to topo_secondary:
    Create 2 RN shard rg1 1 new RN : rg1-rn4
                shard rg2 1 new RN : rg2-rn4
    kv-> plan deploy-topology -name topo_secondary -wait
    出力:
    Executed plan 19, waiting for completion...
    Plan 19 ended successfully
  7. 「ユーザーの作成とリモート・アクセスによるセキュリティの構成」に記載されている手順に従って、作成された新しいストレージ・ノードにユーザー・セキュリティ・ファイルをコピーします。
  8. show topologyコマンドを使用してサービス・ステータスを確認します。
    kv-> show topology
    出力:
    store=MetroArea  numPartitions=100 sequence=120
      zn: id=zn1 name=Manhattan repFactor=1 type=PRIMARY
        allowArbiters=false masterAffinity=false
      zn: id=zn2 name=JerseyCity repFactor=1 type=PRIMARY
        allowArbiters=false masterAffinity=false
      zn: id=zn3 name=Queens repFactor=1 type=PRIMARY
        allowArbiters=false masterAffinity=false
      zn: id=zn4 name=Frankfurt repFactor=1 type=SECONDARY
        allowArbiters=false masterAffinity=false
     
      sn=[sn1] zn:[id=zn1 name=Manhattan] node01:5000 capacity=1 RUNNING
        [rg1-rn1] RUNNING
        single-op avg latency=0.21372496 ms multi-op avg latency=0.0 ms
      sn=[sn2] zn:[id=zn1 name=Manhattan] node02:5000 capacity=1 RUNNING
        [rg2-rn1] RUNNING
        single-op avg latency=0.30840763 ms multi-op avg latency=0.0 ms
      sn=[sn3] zn:[id=zn2 name=JerseyCity] node03:5000 capacity=1 RUNNING
        [rg1-rn2] RUNNING
        No performance info available
      sn=[sn4] zn:[id=zn2 name=JerseyCity] node04:5000 capacity=1 RUNNING
        [rg2-rn2] RUNNING
        No performance info available
      sn=[sn5] zn:[id=zn3 name=Queens] node05:5000 capacity=1 RUNNING
        [rg1-rn3] RUNNING
        No performance info available
      sn=[sn6] zn:[id=zn3 name=Queens] node06:5000 capacity=1 RUNNING
        [rg2-rn3] RUNNING
        No performance info available
      sn=[sn7] zn:[id=zn4 name=Frankfurt] node07:5000 capacity=1 RUNNING
        [rg1-rn4] RUNNING
        No performance info available  
      sn=[sn8] zn:[id=zn4 name=Frankfurt] node07:5000 capacity=1 RUNNING     
        [rg2-rn4] RUNNING     
        No performance info available
     
      numShards=2
      shard=[rg1] num partitions=50
        [rg1-rn1] sn=sn1
        [rg1-rn2] sn=sn3
        [rg1-rn3] sn=sn5
        [rg1-rn4] sn=sn7
      shard=[rg2] num partitions=50
        [rg2-rn1] sn=sn2
        [rg2-rn2] sn=sn4
        [rg2-rn3] sn=sn6
        [rg2-rn4] sn=sn8
  9. セカンダリ・ゾーンにシャードごとのレプリカがあることを確認します。
    kv-> verify configuration
    出力:
    Verify: starting verification of store MetroArea
    based upon topology sequence #120
    100 partitions and 7 storage nodes
    Time: 2024-04-05 10:52:15 UTC   Version: 24.1.11
    See node01:
    $KVROOT/Disk1/MetroArea/log/MetroArea_{0..N}.log
    for progress messages
    Verify: Shard Status: healthy:2
    writable-degraded:0 read-only:0 offline:0 total:2
    Verify: Admin Status: healthy
    Verify: Zone [name=Manhattan id=zn1 type=PRIMARY allowArbiters=false
    masterAffinity=false]   RN Status: online:2 read-only:0 offline:0
    Verify: Zone [name=JerseyCity id=zn2 type=PRIMARY allowArbiters=false
    masterAffinity=false]   RN Status: online:2 read-only:0 offline:0
    maxDelayMillis:1 maxCatchupTimeSecs:0
    Verify: Zone [name=Queens id=zn3 type=PRIMARY allowArbiters=false
    masterAffinity=false]   RN Status: online:2 read-only:0 offline:0
    maxDelayMillis:1 maxCatchupTimeSecs:0
    Verify: Zone [name=Frankfurt id=zn4 type=SECONDARY allowArbiters=false
    masterAffinity=false]   RN Status: online:1 read-only:0 offline:0
    maxDelayMillis:1 maxCatchupTimeSecs:0
    Verify: == checking storage node sn1 ==
    Verify: Storage Node [sn1] on node01:5000   
    Zone: [name=Manhattan id=zn1 type=PRIMARY allowArbiters=false
    masterAffinity=false]   
    Status: RUNNING   Ver: 24.1.11 2024-04-05 10:52:15 UTC
    Build id: c8998e4a8aa5 Edition: Enterprise
    Verify:     Admin [admin1]        Status: RUNNING,MASTER
    Verify:     Rep Node [rg1-rn1]    Status: RUNNING,MASTER
    sequenceNumber:1,261 haPort:5011 available storage size:31 GB
    Verify: == checking storage node sn2 ==
    Verify: Storage Node [sn2] on node02:5000   
    Zone: [name=Manhattan id=zn1 type=PRIMARY allowArbiters=false
    masterAffinity=false]   
    Status: RUNNING   Ver: 24.1.11 2024-04-05 10:52:15 UTC
    Build id: c8998e4a8aa5 Edition: Enterprise
    Verify:     Rep Node [rg2-rn1]    Status: RUNNING,MASTER
    sequenceNumber:1,236 haPort:5012 available storage size:31 GB
    Verify: == checking storage node sn3 ==
    Verify: Storage Node [sn3] on node03:5000   
    Zone: [name=JerseyCity id=zn2 type=PRIMARY allowArbiters=false
    masterAffinity=false]   
    Status: RUNNING   Ver: 24.1.11 2024-04-05 10:52:15 UTC
    Build id: c8998e4a8aa5 Edition: Enterprise
    Verify:     Admin [admin2]        Status: RUNNING,REPLICA
    Verify:     Rep Node [rg1-rn2]    Status: RUNNING,REPLICA
    sequenceNumber:1,261 haPort:5011 available storage size:31 GB
    delayMillis:0 catchupTimeSecs:0
    Verify: == checking storage node sn4 ==
    Verify: Storage Node [sn4] on node04:5000   
    Zone: [name=JerseyCity id=zn2 type=PRIMARY allowArbiters=false
    masterAffinity=false]   
    Status: RUNNING   Ver: 24.1.11 2024-04-05 10:52:15 UTC 
    Build id: c8998e4a8aa5 Edition: Enterprise
    Verify:     Rep Node [rg2-rn2]    Status: RUNNING,REPLICA
    sequenceNumber:1,236 haPort:5012 available storage size:31 GB
    delayMillis:1 catchupTimeSecs:0
    Verify: == checking storage node sn5 ==
    Verify: Storage Node [sn5] on node05:5000   
    Zone: [name=Queens id=zn3 type=PRIMARY allowArbiters=false
    masterAffinity=false]   
    Status: RUNNING   Ver: 24.1.11 2024-04-05 10:52:15 UTC
    Build id: c8998e4a8aa5 Edition: Enterprise
    Verify:     Admin [admin3]        Status: RUNNING,REPLICA
    Verify:     Rep Node [rg1-rn3]    Status: RUNNING,REPLICA
    sequenceNumber:1,261 haPort:5011 available storage size:31 GB
    delayMillis:1 catchupTimeSecs:0
    Verify: == checking storage node sn6 ==
    Verify: Storage Node [sn6] on node06:5000   
    Zone: [name=Queens id=zn3 type=PRIMARY allowArbiters=false
    masterAffinity=false]   
    Status: RUNNING  Ver: 24.1.11 2024-04-05 10:52:15 UTC
    Build id: c8998e4a8aa5 Edition: Enterprise
    Verify:     Rep Node [rg2-rn3]    Status: RUNNING,REPLICA
    sequenceNumber:1,236 haPort:5012 available storage size:31 GB
    delayMillis:0 catchupTimeSecs:0
    Verify: == checking storage node sn7 ==
    Verify: Storage Node [sn7] on node07:5000   
    Zone: [name=Frankfurt id=zn4 type=SECONDARY allowArbiters=false
    masterAffinity=false]   
    Status: RUNNING   Ver: 24.1.11 2024-04-05 10:52:15 UTC 
    Build id: c8998e4a8aa5 Edition: Enterprise
    Verify:     Admin [admin4]        Status: RUNNING,REPLICA 
    Verify:     Rep Node [rg1-rn4]    Status: RUNNING,REPLICA
    sequenceNumber:1,261 haPort:5011 available storage size:31 GB
    delayMillis:1 catchupTimeSecs:0
    Verify: == checking storage node sn8 ==
    Verify: Storage Node [sn8] on node08:5000 
    Zone: [name=Frankfurt id=zn4 type=SECONDARY allowArbiters=false 
    masterAffinity=false] 
    Status: RUNNING Ver: 24.1.11 2024-04-05 10:52:15 UTC 
    Build id: c8998e4a8aa5 Edition: Enterprise
    Verify: Rep Node [rg2-rn4] Status: RUNNING,REPLICA 
    sequenceNumber:1,238 haPort:5012 available storage size:31 GB 
    delayMillis:0 catchupTimeSecs:0 
    
    Verification complete, no violations.