設定虛擬私有雲網路

Google Cloud Managed Lustre 執行個體會在 Google 管理的網路中佈建,並使用私人服務存取權連線至您的虛擬私有雲 (VPC)。

您可以透過下列任一網路設定,將 Managed Lustre 執行個體連線至用戶端 Compute Engine VM 或 Google Kubernetes Engine 叢集:

  • 相同虛擬私有雲網路:將用戶端資源和 Managed Lustre 執行個體連線至相同的虛擬私有雲網路。

  • 獨立的虛擬私有雲網路:在獨立的虛擬私有雲網路中部署用戶端資源,並使用 Network Connectivity Center 連接兩個網路。如需設定 NCC 的操作說明,請參閱 Network Connectivity Center 說明文件

無論是哪種設定,請按照這個頁面的操作說明,設定要佈建 Managed Lustre 執行個體的 VPC 網路。如果您使用不同的虛擬私有雲網路,操作說明會包含註解,說明用戶端虛擬私有雲網路的必要步驟。

所需權限

您必須具備下列 IAM 權限:

  • serviceusage.services.enable
  • compute.networks.create
  • compute.addresses.create
  • compute.addresses.get
  • compute.firewalls.create
  • servicenetworking.services.addPeering

如要授予這些權限,請新增下列所有預先定義的角色:

或者,建立包含特定權限的自訂角色

如要將角色授予使用者:

Google Cloud 控制台

  1. 前往 Google Cloud 控制台的「IAM」(身分與存取權管理) 頁面。

    前往「IAM」(身分與存取權管理) 頁面

  2. 按一下「授予存取權」

  3. 在「New principals」(新增主體) 欄位中,輸入使用者的電子郵件地址。

  4. 在「Select a role」(選取角色) 下拉式選單中,選取要授予的角色。

  5. 如要授予多個角色,請按一下「新增其他角色」,然後選取下一個角色。

  6. 按一下 [儲存]

gcloud

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:EMAIL_ADDRESS" \
  --role=ROLE

建立虛擬私有雲並建立對等互連

如要建立虛擬私有雲網路,並為 Managed Lustre 設定私人服務存取權連線,請按照下列步驟操作:

Google Cloud 控制台

  1. 啟用 Service Networking API。

    啟用 Service Networking API

  2. 建立自訂模式的虛擬私有雲網路:

    1. 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。

      前往「VPC networks」(虛擬私有雲網路)

    2. 按一下「Create VPC network」(建立虛擬私有雲網路)

    3. 輸入網路的「Name」(名稱)

    4. 取消選取「自動設定 MTU」,然後在「最大傳輸單位 (MTU)」欄位中輸入 8896

    5. 在「Subnet creation mode」(子網路建立模式) 底下選取 [Custom] (自訂)

  3. 為 GKE 或 Compute Engine 資源建立主要子網路:

    1. 在「New subnet」(新的子網路) 區段中,輸入子網路的「名稱」
    2. 選擇「Region」(區域)
    3. 在「IPv4 range」(IPv4 範圍) 欄位中,輸入主要 IPv4 範圍 (例如 10.128.0.0/20)。
    4. 按一下「完成」
    5. 按一下「建立」,建立虛擬私有雲網路。
  4. 為私人服務存取權分配 IP 範圍。

    這個內部 IP 範圍用於私人服務存取連線,可將您的虛擬私有雲網路與 Google 管理的網路對等互連,並在該網路中佈建 Managed Lustre 資源。這個分配範圍用於為 Managed Lustre 執行個體提供 IP,且不得與虛擬私有雲網路中的任何子網路重疊。

    每個 Managed Lustre 執行個體都需要連續的 CIDR 區塊,且前置長度至少為 23。

    建議您建立較大的 /20 IP 範圍,以便建立多個 Managed Lustre 執行個體,或使用其他 Google Cloud 服務。

    1. 在「虛擬私有雲網路」頁面中,按一下虛擬私有雲網路的名稱。
    2. 選取「私人服務存取」分頁標籤。
    3. 選取「Allocated IP ranges for services」(已分配的服務 IP 範圍) 分頁標籤。
    4. 按一下「Allocate IP range」(分配 IP 範圍)
    5. 輸入已分配範圍的「Name」(名稱) 與「Description」(說明) (例如 Managed Lustre VPC Peering)。
    6. 指定 IP 位址範圍:
    7. 如要讓 Google 選取可用範圍,請選取「自動」,然後輸入前置字串長度 20
    8. 如要指定特定範圍,請選取「自訂」,然後輸入前置長度至少為 /23 的 CIDR 區塊 (例如 10.128.0.0/20)。
    9. 按一下「Allocate」(分配)
  5. 請記下與已分配範圍相關聯的 CIDR 區塊。

    在「Allocated IP ranges for services」(服務的已分配 IP 範圍) 表格中,找出您建立的範圍,並記下「Internal IP range」(內部 IP 範圍) 欄中的值 (例如 10.128.0.0/20)。您會在下一個步驟中,將這個範圍指定為來源。

  6. 建立防火牆規則,允許來自您建立的 IP 範圍的 TCP 流量。

    1. 前往 Google Cloud 控制台的「Firewall policies」(防火牆政策) 頁面。

    前往「Firewall policies」(防火牆政策)

    1. 按一下「Create firewall rule」(建立防火牆規則)
    2. 輸入防火牆規則的「Name」(名稱)
    3. 在「Network」(網路) 欄位中,選取虛擬私有雲網路。
    4. 在「流量方向」部分,選取「輸入」
    5. 「相符時執行的動作」請選取「允許」
    6. 「目標」請選取「網路中的所有執行個體」
    7. 「來源篩選器」請選取「IPv4 範圍」
    8. 在「來源 IPv4 範圍」欄位中,輸入您在上一個步驟中記下的已分配範圍 CIDR 區塊。
    9. 在「Protocols and ports」(通訊協定和通訊埠) 下方,選取「Specified protocols and ports」(指定的通訊協定和通訊埠)
    10. 勾選「TCP」核取方塊,然後在「Ports」(通訊埠) 欄位中輸入 988, 6988
    11. 點選「建立」

    適用於個別虛擬私有雲網路:如果用戶端 VM 或 GKE 叢集位於透過 Network Connectivity Center 連線的個別虛擬私有雲網路,則兩個虛擬私有雲網路中的防火牆規則都必須允許來自已分配 IP 範圍的流量。重複「建立防火牆規則...」步驟,在用戶端虛擬私有雲網路中建立防火牆規則,允許來自已分配 CIDR 區塊的通訊埠 9886988 輸入 TCP 流量。

  7. 建立私人服務存取連線。

    只有在佈建 Managed Lustre 執行個體的虛擬私有雲網路中,才需要這個連線。

    1. 在「虛擬私有雲網路」頁面中,按一下虛擬私有雲網路的名稱。
    2. 選取「私人服務存取」分頁標籤。
    3. 選取「Private connections to services」(私人服務連線) 分頁標籤。
    4. 點選「建立連線」
    5. 在「Assigned allocation」(已指派的分配範圍) 清單中,選取您建立的已分配 IP 範圍。
    6. 按一下「連線」

gcloud

  1. 啟用服務聯網。

    gcloud services enable servicenetworking.googleapis.com
    
  2. 建立自訂模式的虛擬私有雲網路。

    gcloud compute networks create NETWORK_NAME \
      --subnet-mode=custom \
      --mtu=8896
    
  3. 為 GKE 或 Compute Engine 資源建立主要子網路。

    gcloud compute networks subnets create SUBNET_NAME \
      --network=NETWORK_NAME \
      --range=10.128.0.0/20 \
      --region=REGION
    
  4. 為私人服務存取權分配 IP 範圍。

    這個內部 IP 範圍用於私人服務存取連線,可將您的虛擬私有雲網路與 Google 管理的網路對等互連,並在該網路中佈建 Managed Lustre 資源。這個分配範圍用於為 Managed Lustre 執行個體提供 IP,且不得與虛擬私有雲網路中的任何子網路重疊。

    每個 Managed Lustre 執行個體都需要連續的 CIDR 區塊,且前置長度至少為 23。

    建議您建立較大的 /20 IP 範圍,以便建立多個 Managed Lustre 執行個體,或使用其他 Google Cloud 服務。

    gcloud compute addresses create IP_RANGE_NAME \
      --global \
      --purpose=VPC_PEERING \
      --prefix-length=20 \
      --description="Managed Lustre VPC Peering" \
      --network=NETWORK_NAME
    
  5. 取得與您在上一步建立的範圍相關聯的 CIDR 區塊。

    CIDR_BLOCK=$(
      gcloud compute addresses describe IP_RANGE_NAME \
        --global  \
        --format="value[separator=/](address, prefixLength)"
    )
    
  6. 建立防火牆規則,允許來自您建立的 IP 範圍的 TCP 流量。

    gcloud compute firewall-rules create FIREWALL_NAME \
      --allow=tcp:988,tcp:6988 \
      --network=NETWORK_NAME \
      --source-ranges=$CIDR_BLOCK
    

    適用於個別虛擬私有雲網路:如果您的用戶端 VM 或 GKE 叢集位於透過 Network Connectivity Center 連線的個別虛擬私有雲網路,則兩個虛擬私有雲網路中的防火牆規則都必須允許來自已分配 IP 範圍 ($CIDR_BLOCK) 的流量。再次執行 firewall-rules create 指令,在用戶端虛擬私有雲網路中建立防火牆規則:

     gcloud compute firewall-rules create CLIENT_FIREWALL_NAME \
        --allow=tcp:988,tcp:6988 \
        --network=CLIENT_NETWORK_NAME \
        --source-ranges=$CIDR_BLOCK
     
  7. 建立私人服務存取連線。

    gcloud services vpc-peerings connect \
      --network=NETWORK_NAME \
      --ranges=IP_RANGE_NAME \
      --service=servicenetworking.googleapis.com
    

    只有在佈建 Managed Lustre 執行個體的虛擬私有雲網路中,才需要這個連線。

為多個 NIC 建立額外的子網路

如果您打算使用多個網路介面卡 (多 NIC) 匯總頻寬,則必須在虛擬私有雲網路中,為每個 NIC 建立個別的子網路。

如要使用多 NIC,您必須使用 Compute Engine 機型,並將多個實體 NIC 連接至一般 VPC。附加至具有 RDMA 網路設定檔的虛擬私有雲的 NIC,無法用於增加一般網路頻寬。詳情請參閱「網路和 GPU 機器」。

如要為額外的實體 NIC 建立子網路,請按照下列步驟操作:

Google Cloud 控制台

  1. 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  2. 按一下虛擬私有雲網路的名稱。

  3. 按一下 [新增子網路]

  4. 在「New subnet」(新的子網路) 區段中:

    1. 輸入子網路的「名稱」
    2. 選擇「Region」(區域)
    3. 輸入「IP address range」(IP 位址範圍),例如 10.130.0.0/20
    4. 按一下「新增」。

gcloud

gcloud compute networks subnets create SUBNET_NAME_2 \
  --network=NETWORK_NAME \
  --range=10.130.0.0/20 \
  --region=REGION

針對每個額外 NIC 重複這個步驟。確認每個子網路的 IP 範圍不會重疊。

VPC Service Controls

Managed Lustre 支援 VPC Service Controls (VPC-SC)。詳情請參閱「使用服務範圍保護執行個體」。

排解虛擬私有雲設定問題

權限遭拒,無法為服務「servicenetworking.googleapis.com」新增對等互連

ERROR: (gcloud.services.vpc-peerings.connect) User [$(USER)] does not have
permission to access services instance [servicenetworking.googleapis.com]
(or it may not exist): Permission denied to add peering for service
'servicenetworking.googleapis.com'.

這項錯誤表示您的使用者帳戶沒有 servicenetworking.services.addPeering IAM 權限。

請參閱「使用 IAM 控管存取權」一文,瞭解如何將下列其中一個角色新增至帳戶:

  • roles/compute.networkAdmin
  • roles/servicenetworking.networksAdmin

無法修改 CreateConnection 中的分配範圍

ERROR: (gcloud.services.vpc-peerings.connect) The operation
"operations/[operation_id]" resulted in a failure "Cannot modify allocated
ranges in CreateConnection. Please use UpdateConnection."

如果您已在這個網路上建立 VPC 對等互連,但 IP 範圍不同,系統就會傳回這個錯誤。兩個可能的解決方案如下:

取代現有 IP 範圍:

Google Cloud 控制台

  1. 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  2. 按一下虛擬私有雲網路的名稱。

  3. 選取「私人服務存取」分頁標籤。

  4. 在「私人服務連線」分頁中,選取「私人服務連線」分頁標籤。

  5. 按一下連線名稱 (例如 servicenetworking-googleapis-com)。

  6. 在「Assigned allocation」(已指派的分配範圍) 清單中,選取新的分配範圍,並清除要取代的分配範圍核取方塊。

  7. 按一下 [儲存]

gcloud

gcloud services vpc-peerings update \
  --network=NETWORK_NAME \
  --ranges=IP_RANGE_NAME \
  --service=servicenetworking.googleapis.com \
  --force

或者,將新的 IP 範圍新增至現有連線:

Google Cloud 控制台

  1. 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  2. 按一下虛擬私有雲網路的名稱。

  3. 選取「私人服務存取」分頁標籤。

  4. 在「私人服務連線」分頁中,選取「私人服務連線」分頁標籤。

  5. 按一下連線名稱。

  6. 在「已指派的分配範圍」清單中,保留現有已分配的範圍,並選取新的分配範圍。

  7. 按一下 [儲存]

gcloud

  1. 擷取對等互連的現有 IP 範圍清單:

    EXISTING_RANGES="$(
      gcloud services vpc-peerings list \
        --network=NETWORK_NAME \
        --service=servicenetworking.googleapis.com \
        --format="value(reservedPeeringRanges.list())" \
        --flatten=reservedPeeringRanges
    )
    
  2. 然後將新範圍新增至對等互連:

    gcloud services vpc-peerings update \
      --network=NETWORK_NAME \
      --ranges="${EXISTING_RANGES}",IP_RANGE_NAME \
      --service=servicenetworking.googleapis.com
    

後續步驟