VMware Cloud Foundation 内の vSAN クラスタのストレッチ

JSON 仕様と
API を使用して、管理ドメインまたは VI ワークロード ドメイン内の vSAN クラスタ(ESA または OSA)をストレッチできます。
  • vCenter Server が動作していることを確認します。
  • 管理ドメインまたは VI ワークロード ドメインの展開オプションが含まれた『プランニングおよび準備ガイド』が完成していることを確認します。
  • 環境が『プランニングおよび準備ガイド』の「前提条件チェックリスト」シートに記載されている要件を満たしていることを確認します。
  • アベイラビリティ ゾーン 2 のネットワーク プールを作成します。
  • アベイラビリティ ゾーン 2 のホストをコミッショニングします。ホストのコミッショニング を参照してください。
  • 各アベイラビリティ ゾーンのホストが同数になるように、十分な数のホストがあることを確認します。これは、1 つのアベイラビリティ ゾーンが完全に停止した場合に十分なリソースが確保されるようにするためです。
  • vSAN 監視ホストを展開および構成します。vSAN Witness(監視)ホストの展開および構成を参照してください。
  • VI ワークロード ドメイン内のクラスタをストレッチする場合は、デフォルトの管理 vSphere クラスタがストレッチされている必要があります。
次の場合はクラスタをストレッチできません。
  • クラスタが vSAN Max クラスタである。
  • クラスタに vSAN リモート データストアがマウントされている。
  • クラスタが vSAN ストレージ ポリシーを他のクラスタと共有している。
  • クラスタに DPU でバッキングされたホストが含まれている。
  1. テキスト エディタで JSON 仕様を作成します。
    次の例は、単一の vSphere Distributed Switch を持つ環境を対象としています。複数の vSphere Distributed Switch がある場合は、JSON 仕様の作成の詳細について『VMware Cloud Foundation API リファレンス ガイド』を参照してください。
    アベイラビリティ ゾーン 2 に追加する ESXi ホストは、アベイラビリティ ゾーン 1 の既存のホストと同じ vmnic-vSphere Distributed Switch マッピングを使用する必要があります。
    { "clusterStretchSpec": { "hostSpecs": [ { "hostname": "sfo02-w01-esx01.sfo.rainpole.io", "hostNetworkSpec": { "networkProfileName": "sfo-w01-az2-nsx-np01", "vmNics": [ { "id": "vmnic0", "uplink": "uplink1", "vdsName": "sfo-w01-cl01-vds01" }, { "id": "vmnic1", "uplink": "uplink2", "vdsName": "sfo-w01-cl01-vds01" } ] }, "id": "<ESXi host 1 ID>", "licenseKey": "<license key>" }, { "hostname": "sfo02-w01-esx02.sfo.rainpole.io", "hostNetworkSpec": { "networkProfileName": "sfo-w01-az2-nsx-np01", "vmNics": [ { "id": "vmnic0", "uplink": "uplink1", "vdsName": "sfo-w01-cl01-vds01" }, { "id": "vmnic1", "uplink": "uplink2", "vdsName": "sfo-w01-cl01-vds01" } ] }, "id": "<ESXi host 2 ID>", "licenseKey": "<license key>" }, { "hostname": "sfo02-w01-esx03.sfo.rainpole.io", "hostNetworkSpec": { "networkProfileName": "sfo-w01-az2-nsx-np01", "vmNics": [ { "id": "vmnic0", "uplink": "uplink1", "vdsName": "sfo-w01-cl01-vds01" }, { "id": "vmnic1", "uplink": "uplink2", "vdsName": "sfo-w01-cl01-vds01" } ] }, "id": "<ESXi host 3 ID>", "licenseKey": "<license key>" }, { "hostname": "sfo02-w01-esx04.sfo.rainpole.io", "hostNetworkSpec": { "networkProfileName": "sfo-w01-az2-nsx-np01", "vmNics": [ { "id": "vmnic0", "uplink": "uplink1", "vdsName": "sfo-w01-cl01-vds01" }, { "id": "vmnic1", "uplink": "uplink2", "vdsName": "sfo-w01-cl01-vds01" } ] }, "id": "<ESXi host 4 ID>", "licenseKey": "<license key>" } ], "isEdgeClusterConfiguredForMultiAZ": <true, if the cluster hosts an NSX Edge cluster; false, if the cluster does not host an NSX Edge cluster>, "networkSpec": { "networkProfiles": [ { "isDefault": false, "name": "sfo-w01-az2-nsx-np01", "nsxtHostSwitchConfigs": [ { "ipAddressPoolName": "sfo-w01-az2-host-ip-pool01", "uplinkProfileName": "sfo-w01-az2-host-uplink-profile01", "vdsName": "sfo-w01-cl01-vds01", "vdsUplinkToNsxUplink": [ { "nsxUplinkName": "uplink-1", "vdsUplinkName": "uplink1" }, { "nsxUplinkName": "uplink-2", "vdsUplinkName": "uplink2" } ] } ] } ], "nsxClusterSpec": { "ipAddressPoolsSpec": [ { "description": "WLD01 AZ2 Host TEP Pool", "name": "sfo-w01-az2-host-ip-pool01", "subnets": [ { "cidr": "172.16.44.0/24", "gateway": "172.16.44.253", "ipAddressPoolRanges": [ { "end": "172.16.44.200", "start": "172.16.44.10" } ] } ] } ], "uplinkProfiles": [ { "name": "sfo-w01-az2-host-uplink-profile01", "teamings": [ { "activeUplinks": [ "uplink-1", "uplink-2" ], "name": "DEFAULT", "policy": "LOADBALANCE_SRCID", "standByUplinks": [] } ], "transportVlan": 1644 } ] } }, "witnessSpec": { "fqdn": "sfo-w01-cl01-vsw01.sfo.rainpole.io", "vsanCidr": "172.17.11.0/24", "vsanIp": "172.17.11.219" }, "witnessTrafficSharedWithVsanTraffic": false } }
    JSON ファイルの値の例を、実際の環境に適した値に置き換えます。
  2. ナビゲーション ペインで、
    デベロッパー センター
    API Explorer
    の順にクリックします。
  3. JSON 仕様の各 ESXi ホストの一意の ID を取得して置き換えます。
    1. ホスト管理用の API
      セクションを展開し、
      GET /v1/hosts
      を展開します。
    2. ステータス
      テキスト ボックスに、
      UNASSIGNED_USEABLE
      と入力して、
      実行
      をクリックします。
    3. 応答
      セクションで、
      PageOfHost
      をクリックし、各ホストの
      id
      要素をコピーして、JSON 仕様のそれぞれの値を置き換えます。
      ESXi ホスト
      ESXi ホスト 1
      ESXi ホスト 1 の ID
      ESXi ホスト 2
      ESXi ホスト 2 の ID
      ESXi ホスト 3
      ESXi ホスト 3 の ID
      ESXi ホスト 4
      ESXi ホスト 4 の ID
  4. JSON 仕様のライセンス キーの値を有効なキーに置き換えます。
  5. 管理クラスタの一意の ID を取得します。
    1. クラスタ管理用の API
      セクションを展開し、
      GET /v1/cluster
      を展開します。
    2. 実行
      をクリックします。
    3. 応答
      セクションで、
      PageOfCluster
      をクリックし、管理クラスタの
      id
      要素をコピーします。
      以降の手順では、クラスタ ID が必要になります。
  6. JSON 仕様ファイルを検証します。
    1. クラスタ管理用の API
      セクションを展開し、
      POST /v1/clusters/{id}/validations
      を展開します。
    2. テキスト ボックスに、手順 5 で取得した管理クラスタの一意の ID を入力します。
    3. clusterUpdateSpec
      テキスト ボックスに、次のように入力します。
      { "clusterUpdateSpec": }
    4. JSON 仕様を貼り付けます。
      例:
      { "clusterUpdateSpec": { "clusterStretchSpec": { "hostSpecs": [ { "hostname": "sfo02-w01-esx01.sfo.rainpole.io", "hostNetworkSpec": { "networkProfileName": "sfo-w01-az2-nsx-np01", "vmNics": [ { "id": "vmnic0", "uplink": "uplink1", "vdsName": "sfo-w01-cl01-vds01" }, { "id": "vmnic1", "uplink": "uplink2", "vdsName": "sfo-w01-cl01-vds01" } ] }, "id": "<ESXi host 1 ID>", "licenseKey": "<license key>" }, { "hostname": "sfo02-w01-esx02.sfo.rainpole.io", "hostNetworkSpec": { "networkProfileName": "sfo-w01-az2-nsx-np01", "vmNics": [ { "id": "vmnic0", "uplink": "uplink1", "vdsName": "sfo-w01-cl01-vds01" }, { "id": "vmnic1", "uplink": "uplink2", "vdsName": "sfo-w01-cl01-vds01" } ] }, "id": "<ESXi host 2 ID>", "licenseKey": "<license key>" }, { "hostname": "sfo02-w01-esx03.sfo.rainpole.io", "hostNetworkSpec": { "networkProfileName": "sfo-w01-az2-nsx-np01", "vmNics": [ { "id": "vmnic0", "uplink": "uplink1", "vdsName": "sfo-w01-cl01-vds01" }, { "id": "vmnic1", "uplink": "uplink2", "vdsName": "sfo-w01-cl01-vds01" } ] }, "id": "<ESXi host 3 ID>", "licenseKey": "<license key>" }, { "hostname": "sfo02-w01-esx04.sfo.rainpole.io", "hostNetworkSpec": { "networkProfileName": "sfo-w01-az2-nsx-np01", "vmNics": [ { "id": "vmnic0", "uplink": "uplink1", "vdsName": "sfo-w01-cl01-vds01" }, { "id": "vmnic1", "uplink": "uplink2", "vdsName": "sfo-w01-cl01-vds01" } ] }, "id": "<ESXi host 4 ID>", "licenseKey": "<license key>" } ], "isEdgeClusterConfiguredForMultiAZ": <true, if the cluster hosts an NSX Edge cluster; false, if the cluster does not host an NSX Edge cluster>, "networkSpec": { "networkProfiles": [ { "isDefault": false, "name": "sfo-w01-az2-nsx-np01", "nsxtHostSwitchConfigs": [ { "ipAddressPoolName": "sfo-w01-az2-host-ip-pool01", "uplinkProfileName": "sfo-w01-az2-host-uplink-profile01", "vdsName": "sfo-w01-cl01-vds01", "vdsUplinkToNsxUplink": [ { "nsxUplinkName": "uplink-1", "vdsUplinkName": "uplink1" }, { "nsxUplinkName": "uplink-2", "vdsUplinkName": "uplink2" } ] } ] } ], "nsxClusterSpec": { "ipAddressPoolsSpec": [ { "description": "WLD01 AZ2 Host TEP Pool", "name": "sfo-w01-az2-host-ip-pool01", "subnets": [ { "cidr": "172.16.44.0/24", "gateway": "172.16.44.253", "ipAddressPoolRanges": [ { "end": "172.16.44.200", "start": "172.16.44.10" } ] } ] } ], "uplinkProfiles": [ { "name": "sfo-w01-az2-host-uplink-profile01", "teamings": [ { "activeUplinks": [ "uplink-1", "uplink-2" ], "name": "DEFAULT", "policy": "LOADBALANCE_SRCID", "standByUplinks": [] } ], "transportVlan": 1644 } ] } }, "witnessSpec": { "fqdn": "sfo-w01-cl01-vsw01.sfo.rainpole.io", "vsanCidr": "172.17.11.0/24", "vsanIp": "172.17.11.219" }, "witnessTrafficSharedWithVsanTraffic": false } }
      JSON ファイルの値の例を、実際の環境に適した値に置き換えます。
    5. 実行
      をクリックします。
    6. 確認ダイアログ ボックスで
      続行
      をクリックします。
    7. 応答
      セクションで、
      結果
      セクションを展開し、応答が
      SUCCEEDED
      であることを確認します。
  7. JSON 仕様を使用してクラスタをストレッチします。
    1. クラスタ管理用の API
      セクションを展開し、
      PATCH /v1/clusters/{id}
      を展開します。
    2. 管理クラスタの一意の
      ID
      テキスト ボックスに貼り付けます。
    3. clusterUpdateSpec
      テキスト ボックスに JSON 仕様を貼り付けます。
      例:
      { "clusterStretchSpec": { "hostSpecs": [ { "hostname": "sfo02-w01-esx01.sfo.rainpole.io", "hostNetworkSpec": { "networkProfileName": "sfo-w01-az2-nsx-np01", "vmNics": [ { "id": "vmnic0", "uplink": "uplink1", "vdsName": "sfo-w01-cl01-vds01" }, { "id": "vmnic1", "uplink": "uplink2", "vdsName": "sfo-w01-cl01-vds01" } ] }, "id": "<ESXi host 1 ID>", "licenseKey": "<license key>" }, { "hostname": "sfo02-w01-esx02.sfo.rainpole.io", "hostNetworkSpec": { "networkProfileName": "sfo-w01-az2-nsx-np01", "vmNics": [ { "id": "vmnic0", "uplink": "uplink1", "vdsName": "sfo-w01-cl01-vds01" }, { "id": "vmnic1", "uplink": "uplink2", "vdsName": "sfo-w01-cl01-vds01" } ] }, "id": "<ESXi host 2 ID>", "licenseKey": "<license key>" }, { "hostname": "sfo02-w01-esx03.sfo.rainpole.io", "hostNetworkSpec": { "networkProfileName": "sfo-w01-az2-nsx-np01", "vmNics": [ { "id": "vmnic0", "uplink": "uplink1", "vdsName": "sfo-w01-cl01-vds01" }, { "id": "vmnic1", "uplink": "uplink2", "vdsName": "sfo-w01-cl01-vds01" } ] }, "id": "<ESXi host 3 ID>", "licenseKey": "<license key>" }, { "hostname": "sfo02-w01-esx04.sfo.rainpole.io", "hostNetworkSpec": { "networkProfileName": "sfo-w01-az2-nsx-np01", "vmNics": [ { "id": "vmnic0", "uplink": "uplink1", "vdsName": "sfo-w01-cl01-vds01" }, { "id": "vmnic1", "uplink": "uplink2", "vdsName": "sfo-w01-cl01-vds01" } ] }, "id": "<ESXi host 4 ID>", "licenseKey": "<license key>" } ], "isEdgeClusterConfiguredForMultiAZ": <true, if the cluster hosts an NSX Edge cluster; false, if the cluster does not host an NSX Edge cluster>, "networkSpec": { "networkProfiles": [ { "isDefault": false, "name": "sfo-w01-az2-nsx-np01", "nsxtHostSwitchConfigs": [ { "ipAddressPoolName": "sfo-w01-az2-host-ip-pool01", "uplinkProfileName": "sfo-w01-az2-host-uplink-profile01", "vdsName": "sfo-w01-cl01-vds01", "vdsUplinkToNsxUplink": [ { "nsxUplinkName": "uplink-1", "vdsUplinkName": "uplink1" }, { "nsxUplinkName": "uplink-2", "vdsUplinkName": "uplink2" } ] } ] } ], "nsxClusterSpec": { "ipAddressPoolsSpec": [ { "description": "WLD01 AZ2 Host TEP Pool", "name": "sfo-w01-az2-host-ip-pool01", "subnets": [ { "cidr": "172.16.44.0/24", "gateway": "172.16.44.253", "ipAddressPoolRanges": [ { "end": "172.16.44.200", "start": "172.16.44.10" } ] } ] } ], "uplinkProfiles": [ { "name": "sfo-w01-az2-host-uplink-profile01", "teamings": [ { "activeUplinks": [ "uplink-1", "uplink-2" ], "name": "DEFAULT", "policy": "LOADBALANCE_SRCID", "standByUplinks": [] } ], "transportVlan": 1644 } ] } }, "witnessSpec": { "fqdn": "sfo-w01-cl01-vsw01.sfo.rainpole.io", "vsanCidr": "172.17.11.0/24", "vsanIp": "172.17.11.219" }, "witnessTrafficSharedWithVsanTraffic": false } }
      JSON ファイルの値の例を、実際の環境に適した値に置き換えます。
    4. 実行
      をクリックします。
    5. 確認ダイアログ ボックスで
      続行
      をクリックします。
アベイラビリティ ゾーン 2 の
を構成します。