保留靜態內部 IP 位址

如果執行個體需要不變的固定內部 IP 位址,您可以透過下列其中一個選項為該執行個體取得靜態內部 IP 位址:

要瞭解如何管理次要內部 IP 位址,請參閱別名 IP 範圍的相關說明。

Compute Engine 的所有 VM 執行個體皆擁有多個網路介面,而每個介面皆可有一個外部 IP 位址、一個主要內部 IP 位址,以及一或多個次要內部 IP 位址。轉送規則可擁有外部 IP 位址 (為達到外部負載平衡),或是內部 IP 位址 (為達到內部負載平衡)。如要進一步瞭解 IP 位址,請參閱 IP 位址說明文件。

靜態內部 IP 可從子網路內設定的私人 RFC 1918 IP 範圍中預約內部 IP 位址,然後再視需求將這些已預約的內部位址指派給資源。預約內部 IP 位址後,該位址就會從動態分配集區中移出,避免系統自動分配該位址。預約靜態內部 IP 位址需要特定 IAM 權限,因此只有獲得授權的使用者才能預約靜態內部 IP 位址。

保留靜態內部 IP 位址後,即使您必須刪除並重新建立資源,也能為相同的資源一律使用同一個 IP 位址。

如要保留靜態外部 IP 位址而非內部 IP 位址,請參閱保留靜態外部位址的相關說明。

事前準備

權限

如要保留及管理靜態內部 IP 位址,您必須具備 compute.networkAdmin 角色。如要進一步瞭解角色,請參閱 Compute Engine 身分與存取權管理角色一文。

限制

  • 您無法變更現有資源的內部 IP 位址。舉例來說,您無法將新的靜態內部 IP 位址指派給執行中的 VM 執行個體。不過,您可以將資源的臨時內部 IP 位址升級為靜態內部 IP,這樣即使資源遭到刪除,您仍可保留該位址。

  • 根據預設,每個地區最多只能預約 200 個靜態內部 IP 位址。

  • 同時間只有一個資源可以使用靜態內部 IP 位址。

  • 除非將 IP 位址與保留給該專案的靜態內部 IP 位址清單進行比較,否則無法判斷分配給資源後的 IP 位址是靜態還是臨時位址。如要查看專案可用的靜態內部 IP 位址清單,請使用 addresses list 子指令。

  • 保留靜態內部 IP 位址的功能僅支援虛擬私人雲端 (VPC) 網路,不支援舊版模式的網路。

  • 刪除資源並不會自動釋出靜態內部 IP 位址。因此,您不再需要靜態內部 IP 位址時,請以手動方式釋出。

如何保留靜態內部 IP 位址

您可以在建立相關資源之前先保留靜態內部 IP 位址,也能使用臨時內部 IP 位址建立資源,然後再將該臨時 IP 位址升級為靜態內部 IP 位址。

專案必須要有 VPC 網路,您才能使用靜態內部 IP 位址。請參閱使用虛擬私人雲端網路一文,瞭解如何建立 VPC 網路。

保留特定位址,然後將該位址與特定資源建立關聯

這種方式可以單獨預約靜態內部 IP 位址,然後再將該位址指派給資源。簡單來說:

  1. 從 VPC 網路建立子網路

  2. 保留子網路 IP 範圍中的內部 IP 位址。這個步驟會建立內部 IP 位址資源,其中包含特定的內部 IP 位址。

  3. 建立資源,並在建立 VM 執行個體或內部負載平衡器時,建立保留的內部 IP 位址與 VM 執行個體或內部負載平衡器的關聯,然後您就可以使用該 IP 位址。

為資源指定臨時內部 IP 位址,然後升級該位址

這種方式可將目前連結至資源的臨時內部 IP 位址升級為靜態內部 IP 位址。

  1. 使用自動分配的臨時 IP 位址或自行指定的 IP 位址來建立 VM 執行個體或內部負載平衡器。

  2. 建立子網路。

  3. 將內部 IP 位址升級為靜態內部 IP 位址。

這兩種方式的流程如下圖所示。

內部 IP 保留。

保留新的靜態內部 IP 位址

您必須先建立有子網路的 VPC 網路,才能保留新的靜態內部 IP 位址。

如要保留新的靜態內部 IP 位址 (可能是自動分配的位址,或是現有子網路中未使用的位址),您可以使用 Google Cloud Platform Console、gcloud compute addresses create 指令,或是 Compute Engine API 中的 addresses.insert 方法。

Console

  1. 前往 GCP 主控台的「VPC networks」(VPC 網路) 頁面。

    前往「VPC networks」(VPC 網路) 頁面

  2. 找出要與執行個體建立關聯的 VPC 網路。
  3. 前往「VM instances」(VM 執行個體) 頁面。

    前往「VM instances」(VM 執行個體) 頁面

  4. 選取專案。
  5. 按一下 [Create an Instance] (建立執行個體),然後指定執行個體的名稱。
  6. 選取虛擬私人雲端網路所在的 [Region] (地區)
  7. 選取該地區中的某個 [Zone] (區域)
  8. 完成執行個體的其他欄位。
  9. 展開 [Management, security, disks, networking, sole tenancy] (管理、安全性、磁碟、網路、單獨租用) 選單。
  10. 按一下 [Networking] (網路)
  11. 按一下 [Networking interfaces] (網路介面) 來編輯。
  12. 在「Network」(網路) 下方,選擇您建立的虛擬私人雲端網路。
  13. 選擇子網路。
  14. 在「Primary Internal IP」(主要內部 IP) 下方,選取 [Reserve static IP address] (預約靜態 IP 位址)。
  15. 完成其餘的網路選項。
  16. 按一下 [Done] (完成)
  17. 完成執行個體的要求。
  18. 按一下 [Create] (建立)。

gcloud

使用 gcloud 指令列工具執行 compute addresses create 指令:

gcloud compute addresses create [ADDRESS_NAME] [[ADDRESS_NAME]..] \
    --region [REGION] --subnet [SUBNETWORK] \
    --addresses [IP_ADDRESS]

其中:

  • [ADDRESS_NAME] 是您要建立的一或多個位址的名稱。
  • [REGION] 是這項要求中的地區。
  • [SUBNETWORK] 是內部 IP 位址所屬的子網路。
  • [IP_ADDRESS] 是您要保留的 IP 位址 (必須位於子網路的 IP 範圍內)。如未指定,系統會從子網路中自動分配一個位址。

舉例來說,如要保留子網路中自動分配的內部 IP 位址:

gcloud compute addresses create example-address-1 \
    --region us-central1 --subnet subnet-1

如要保留子網路中的特定內部 IP 位址:

gcloud compute addresses create example-address-1 \
    --region us-central1 --subnet subnet-1 --addresses 10.128.0.12

只要提供一個以上的位址名稱,即可建立多個位址。不過,您保留的所有位址都會位於相同的子網路。例如:

gcloud compute addresses create example-address-1 example-address-2 \
    --region us-central1 --subnet subnet-1 \
    --addresses 10.128.0.12,10.128.0.13

API

在 API 中對下列網址提出 POST 要求:

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/addresses

要求的主體必須包含 addressType (必須為 INTERNAL)、位址的 name,以及 IP 位址所屬的 subnetwork。您可以讓系統從子網路中自動為您分配 IP 位址,也可以利用 address 指定特定 IP 位址:

{
    "addressType": "INTERNAL",
    "name": "[ADDRESS_NAME]",
    "subnetwork": "regions/[REGION]/subnetworks/[SUBNET]",
    "address": "[IP_ADDRESS]"
}

例如:

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses

{
 "name": "example-address-1",
 "addressType": "INTERNAL",
 "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet",
 "address": "10.128.0.12"
}

將使用中的臨時內部 IP 位址升級為靜態位址

如果目前已有使用中的臨時 IP 位址,您可以將這些位址升級為靜態內部 IP 位址。如此一來,在您主動移除靜態內部 IP 位址之前,您的專案都能繼續保留這些位址。

您必須取得要升級的 IP 位址值,才能保留現有的 IP 位址。如要取得 IP 位址,請對資源提出 describe 要求。舉例來說,如要升級 VM 執行個體目前使用的 IP 位址,請使用下列指令:

gcloud compute instances describe [INSTANCE_NAME] --zone [ZONE] | grep "networkIP"

gcloud 工具傳回的 networkIP 值即為資源目前使用的內部 IP。例如:

networkIP: 10.240.0.2

接著請升級該位址。

Console

如要在主控台中將臨時內部 IP 位址升級成靜態 IP 位址:

  1. 前往「VM instances」(VM 執行個體) 頁面。

    前往「VM instances」(VM 執行個體) 頁面

  2. 選取專案。
  3. 選取您要變更的執行個體。
  4. 按一下頁面頂端的 [Edit] (編輯) 工具。
  5. 按一下 [Network Interfaces] (網路介面) 的編輯工具。
  6. 在「Internal IP type」(內部 IP 類型) 下方,選取 [Static] (靜態)。
  7. 完成靜態 IP 位址的資訊。
  8. 按一下 [Done] (完成) 來儲存變更。
  9. 按一下 [Save] (儲存) 來更新執行個體。

gcloud

如要升級一或多個現有的 IP 位址,請使用 compute addresses create 指令,並透過 --addresses 旗標提供您要升級的具體內部 IP:

gcloud compute addresses create [ADDRESS_NAME_1] [[ADDRESS_NAME_2]..] \
    --addresses [IP_ADDRESS_1],[[IP_ADDRESS_2],..] \
    --region [REGION] \
    --subnet [SUBNETWORK]

其中:

  • [ADDRESS_NAME] 是您要使用的位址名稱。請按照宣告 IP 位址的順序來宣告這些名稱。在這種情況下,[ADDRESS_NAME_1] 會對應到 [IP_ADDRESS_1],而 [ADDRESS_NAME_2] 會對應到 [IP_ADDRESS_2]
  • [IP_ADDRESS],[[IP_ADDRESS_2],...] 是您要升級的 IP 位址,例如:10.128.1.9
  • [REGION] 是您要保留這個位址的地區。
  • [SUBNETWORK] 是這項要求中的子網路。

例如:

gcloud compute addresses create example-address-1 example-address-2 \
    --addresses 10.128.4.90,10.128.0.232 \
    --region us-central1 \
    --subnet subnet-1

API

在 API 中對下列網址提出 POST 要求:

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/addresses

要求的主體必須包含 addressType (必須為 INTERNAL)、位址的 name、要升級的 address,以及 IP 位址所屬的 subnetwork

{
    "addressType": "INTERNAL",
    "address": "[IP_ADDRESS]",
    "name": "[ADDRESS_NAME]",
    "subnetwork": "regions/[REGION]/subnetworks/[SUBNET]"
}

例如:

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses

{
 "name": "example-address-1",
 "addressType": "INTERNAL",
 "address": "10.128.0.2",
 "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet"
}

建立使用靜態內部 IP 位址的 VM 執行個體

您可以在建立新的 VM時指派已保留的靜態內部 IP 位址。

Console

  1. 前往 GCP 主控台的「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體頁面

  2. 按一下 [建立執行個體]
  3. 在「Create a new instance」(建立新執行個體) 頁面,填寫執行個體的屬性。
  4. 展開 [Management, Security, Disks, Networking, Sole Tenancy] (管理、安全性、磁碟、網路、單獨租用) 區段。
  5. 按一下 [Networking] (網路)
  6. 按一下 [Network] (網路),然後選取子網路。
  7. 在「Network Interfaces」(網路介面) 下方,按一下編輯工具。
  8. 在「Primary Internal IP」(主要內部 IP) 下方,選取 [Reserve static internal IP address] (預約靜態內部 IP 位址)。
  9. 填妥相關資訊來保留靜態內部 IP 位址。
  10. 按一下 [Create] (建立) 來建立執行個體。

gcloud

  1. 首先,保留靜態內部 IP 位址。下列範例會在 us-central1 地區中保留名為 my-vm-ip-address 的位址。由於指令省略了 --addresses 旗標,因此 Compute Engine 會保留隨機的 IP 位址:

    gcloud compute addresses create my-vm-ip-address \
        --region us-central1 --subnet my-subnet
    
  2. 接著,使用該位址建立執行個體。例如:

    gcloud compute instances create my-instance \
        --image-family [IMAGE_FAMILY] \
        --image-project [IMAGE_PROJECT] \
        --private-network-ip my-vm-ip-address \
        --subnet my-subnet
    

建立使用靜態內部 IP 位址的內部負載平衡器

如要建立使用靜態內部 IP 位址的內部負載平衡器,請按照下列文章中的說明操作:

使用靜態內部 IP 位址當做次要網路介面

建立具有多個網路介面的 VM 執行個體時,您可以使用已預約的靜態內部 IP 位址當做主要和次要網路介面。

如要將靜態內部 IP 位址指派至次要網路介面,請按照下列步驟操作:

  1. 請先保留靜態內部 IP 位址。舉例來說,下列範例會在 us-central1 地區中保留名為 my-second-ip-address 的位址。由於指令省略了 --addresses 旗標,因此 Compute Engine 會保留隨機的 IP 位址:

    gcloud compute addresses create my-second-ip-address \
        --region us-central1 --subnet subnet-b
    
  2. 在建立 VM 執行個體時,使用該位址做為次要網路介面的 IP 位址,例如:

    gcloud compute instances create my-instance \
        --image-family [IMAGE_FAMILY] \
        --image-project [IMAGE_PROJECT] \
        --network-interface subnet=subnet-a,no-address \
        --network-interface \
          subnet=subnet-b,private-network-ip=my-second-ip-address,no-address
    

在共用 VPC 中使用靜態內部 IP

您可以在共用 VPC 網路的共用子網路中建立已保留的靜態內部 IP。即使 IP 位址的值來自於共用 VPC 網路的所選子網路中的可用 IP 範圍,IP 位址物件本身仍是在相同的服務專案 (即使用該位址的資源) 中所建立。如要進一步瞭解這個使用案例,請參閱下列頁面:

刪除靜態內部 IP 位址

您可以刪除不再需要的靜態內部 IP 位址。無論其他資源目前是否正在使用位址,您都能刪除該位址。如果某項資源正在使用該位址,那麼在資源遭到刪除之前,該位址都會與資源保持連結。資源遭到刪除後,該位址就會回歸到其他專案的可用位址集區中。

Console

  1. 前往「VM instances」(VM 執行個體) 頁面。

    前往「VM instances」(VM 執行個體) 頁面

  2. 選取專案。
  3. 選取專案清單中的 VM 執行個體。
  4. 選取頁面頂端的 [Edit] (編輯) 工具。
  5. 按一下 [Network Interfaces] (網路介面) 的編輯工具。
  6. 將 [Internal IP type] (內部 IP 類型) 從 [Static] (靜態) 變更成 [Ephemeral] (臨時)。
  7. 選取 [Release] (釋出) 來釋出靜態 IP 位址。
  8. 按一下 [Done] (完成) 來儲存變更。

    執行個體會繼續使用這個靜態 IP 位址,直到執行個體遭到刪除或重新啟動為止。執行個體遭到刪除或重新啟動後,該 IP 位址會回歸到子網路預設的可用內部 IP 位址集區中。

gcloud

使用 gcloud 工具,執行 compute addresses delete 指令:

gcloud compute addresses delete [ADDRESS_NAME] \
    --region [REGION]

其中:

  • [ADDRESS_NAME] 是您要刪除的位址名稱。
  • [REGION] 是該位址所屬的地區。

例如:

gcloud compute addresses delete example-address-to-delete \
    --region us-west1

API

在 API 中對下列網址提出 DELETE 要求:

DELETE https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/addresses/[ADDRESS_NAME]

舉例來說,如要刪除 us-west1 地區中的位址:

DELETE https://compute.googleapis.com/compute/v1/projects/myproject/regions/us-west1/addresses/example-address-to-delete

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Compute Engine 說明文件