本文說明如何查看 Cloud de Confiance by S3NS 組織中執行中 Compute Engine 執行個體的實際位置。
建立並啟動運算執行個體後,您可以查看每個運算執行個體在區域中執行的實體主機。使用叢集中運算執行個體的實體位置,執行下列操作:
盡量縮短網路延遲時間:調整應用程式或工作負載設計,在彼此最接近的運算執行個體上執行對延遲時間敏感的工作。
提升工作負載可靠性:將運算執行個體分散到不同的實體主機,減少主機錯誤對應用程式的影響。
如要確認專案中執行的運算執行個體,請查看運算執行個體清單。
限制
您可以查看符合下列一或多項需求的叢集、區塊、子區塊和運算執行個體主機 ID:
運算執行個體會使用下列其中一種機型:
A4X Max
A4X
A4
A3 Ultra
A3 Mega
配備 8 個 GPU 的 A3 High
A3 Edge
H4D
運算執行個體會指定密集配置政策。
運算執行個體屬於代管執行個體群組 (MIG),該群組指定高處理量 (
HIGH_THROUGHPUT) 類型的工作負載政策。
如果運算執行個體不符合上述任何規定,您可以在公開後查看其主機 ID,如本文所述。
瞭解運算執行個體拓撲
每個運算執行個體都會在伺服器區塊中的實體伺服器 (即主機) 上執行。每個區塊都屬於可用區中的叢集。查看符合特定需求的運算執行個體詳細資料時,您可以瞭解這些執行個體與其他符合相同需求的執行個體之間的拓撲。
Compute Engine 會在每個運算執行個體的 physicalHostTopology 欄位中,公開下列子欄位。兩個執行中的運算執行個體共用的子欄位越多,彼此的距離就越近。
叢集 (
cluster):運算執行個體所在的叢集全域名稱。叢集是多個主機的高階邏輯群組,可跨越多個區塊,共同運作成為單一資源集區。區塊 (
block):運算執行個體所在的區塊專屬 ID。區塊是指多個主機組成的群組。子區塊 (
subBlock):運算執行個體所在子區塊的組織專屬 ID。子區塊是區塊中的實體細分部分,可將單一實體外殼中的主機分組。主機 (
host):執行運算執行個體的組織或專案專屬 ID。主機 ID 變更如下:
事前準備
-
如果尚未設定驗證,請先完成設定。
驗證機制會確認您的身分,以便您存取 Cloud de Confiance by S3NS 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:
選取這個頁面上範例的預計用途分頁:
控制台
使用 Cloud de Confiance 控制台存取 Cloud de Confiance by S3NS 服務和 API 時,不需要設定驗證。
gcloud
-
安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。登入後,執行下列指令來初始化 Google Cloud CLI:
gcloud init
-
- 設定預設區域和可用區。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。
詳情請參閱 Cloud de Confiance 驗證說明文件中的「使用 REST 進行驗證」。
必要的角色
如要取得驗證運算執行個體拓撲所需的權限,請要求管理員授予您專案的「Compute 管理員」 (roles/compute.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備驗證運算執行個體拓撲所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要驗證運算執行個體的拓撲,必須具備下列權限:
- 如要查看運算執行個體的詳細資料: compute.instances.get
- 如要查看運算執行個體清單: compute.instances.list
-
如要在建立運算執行個體時公開主機 ID,請按照下列步驟操作:
- 專案的
compute.instances.create權限 - 如要使用自訂映像檔建立 VM,請在映像檔上按一下
compute.images.useReadOnly - 如要使用快照建立 VM,請按一下快照上的
compute.snapshots.useReadOnly - 如要使用執行個體範本建立 VM,請在執行個體範本上按一下「
compute.instanceTemplates.useReadOnly」 - 如要將舊版網路指派給 VM,請在專案中按一下
compute.networks.use - 如要為 VM 指定靜態 IP 位址,請在專案中執行下列步驟:
compute.addresses.use - 如要在使用舊版網路時,為 VM 指派外部 IP 位址,請在專案中執行
compute.networks.useExternalIp - 如要為 VM 指定子網路,請在專案或所選子網路上執行
compute.subnetworks.use - 使用虛擬私有雲網路時,將外部 IP 位址指派給 VM:
compute.subnetworks.useExternalIp在專案或所選子網路上 - 如要為 VM 設定 VM 執行個體中繼資料,請在專案中執行下列指令:
compute.instances.setMetadata - 如要為 VM 設定標記,請在 VM 上執行下列步驟:
compute.instances.setTags - 如要設定 VM 的標籤,請在 VM 上執行
compute.instances.setLabels - 如要設定 VM 使用的服務帳戶,請在 VM 上執行
compute.instances.setServiceAccount - 為 VM 建立新磁碟:在專案中按一下
compute.disks.create - 如要以唯讀或讀寫模式掛接現有磁碟,請按一下磁碟上的
compute.disks.use - 如要以唯讀模式連接現有磁碟:在磁碟上
compute.disks.useReadOnly
- 專案的
- 如要在建立執行個體範本時公開主機 ID,請執行下列操作: compute.instanceTemplates.create
- 如要在現有運算執行個體中公開或隱藏主機 ID,請執行:compute.instances.update
顯示或隱藏主辦人 ID
除非運算執行個體符合特定需求,否則主機 ID 預設會隱藏。建立或更新運算執行個體時,可以公開主機 ID。查看運算執行個體詳細資料時,您會看到專屬於貴機構的 Cloud de Confiance 主機 ID。您無法查看運算執行個體的區塊、子區塊或叢集 ID。
如要在運算執行個體中公開或隱藏主機 ID,請使用下列其中一種方法:
如要防止組織中一或多項專案的主機 ID 曝光,可以建立自訂限制。舉例來說,如果您想執行安全性敏感的工作負載,這項限制就非常實用。詳情請參閱「自訂限制」。
在現有運算執行個體中顯示或隱藏主機 ID
您可以在現有的運算執行個體中顯示或隱藏主機 ID,不必重新啟動。如果您停用預設會顯示主機 ID 的運算執行個體主機 ID 顯示設定,則會發生下列其中一種情況:
如果運算執行個體指定了密集配置政策或工作負載政策,您就會看到專案專屬的主機 ID 和相關實體位置資訊。
如果運算執行個體使用 H4D 或 A3 High 機型,且配備 8 個 GPU (或更新一代的 GPU),Compute Engine 會忽略要求。
如要公開或隱藏現有運算執行個體的主機 ID,請選取下列其中一個選項:
gcloud
如要顯示或隱藏現有運算執行個體的主機 ID,請使用 gcloud compute instances update 指令,並搭配下列其中一個旗標:
如要公開主機 ID,請加入
--expose-host-topology旗標:gcloud compute instances update INSTANCE_NAME \ --expose-host-topology \ --zone=ZONE如要隱藏主機 ID,請加入
--no-expose-host-topology旗標:gcloud compute instances update INSTANCE_NAME \ --no-expose-host-topology \ --zone=ZONE
更改下列內容:
INSTANCE_NAME:運算執行個體的名稱。ZONE:運算執行個體所在的可用區。
REST
如要查看現有運算執行個體的屬性,請向
instances.get方法發出GET要求:GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME更改下列內容:
PROJECT_ID:您建立運算執行個體的專案 ID。ZONE:運算執行個體所在的可用區。INSTANCE_NAME:運算執行個體的名稱。
如要更新運算執行個體,以顯示或隱藏主機 ID,請向
instances.update方法發出PUT要求。在要求主體中,使用上一個步驟的GET要求輸出內容。不過,您必須在scheduling欄位中新增exposeHostTopology欄位,才能顯示或隱藏主機 ID。如果要求輸出內容中沒有scheduling欄位,請一併新增。PUT要求大致如下:PUT https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME?mostDisruptiveAllowedAction=REFRESH { "scheduling": { "exposeHostTopology": EXPOSE_HOST_ID }, ... }將
EXPOSE_HOST_ID替換為下列其中一個值:如要公開主機 ID,請執行
true。如要隱藏主辦人 ID,請按照下列步驟操作:
false
在新運算執行個體中公開主機 ID
如要在建立運算執行個體時公開主機 ID,請選取下列任一選項:
gcloud
如要在建立運算執行個體時公開主機 ID,請搭配 --expose-host-topology 旗標使用 gcloud compute instances create 指令:
gcloud compute instances create INSTANCE_NAME \
--machine-type=MACHINE_TYPE \
--expose-host-topology \
--zone=ZONE
更改下列內容:
INSTANCE_NAME:運算執行個體的名稱。MACHINE_TYPE:要讓運算執行個體使用的機型。ZONE:要建立運算執行個體的可用區。
REST
如要在建立運算執行個體時公開主機 ID,請向 instances.insert 方法發出 POST 要求。在要求主體中,將 scheduling.exposeHostTopology 欄位設為 true。
POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
"name": "INSTANCE_NAME",
"machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [
{
"network": "global/networks/default"
}
],
"scheduling": {
"exposeHostTopology": true
}
}
更改下列內容:
PROJECT_ID:要建立運算執行個體的專案 ID。ZONE:要建立運算執行個體的可用區。INSTANCE_NAME:運算執行個體的名稱。MACHINE_TYPE:運算執行個體要使用的機型。IMAGE_PROJECT:含有映文件的映文件專案,例如debian-cloud。如要進一步瞭解支援的映像檔專案,請參閱「公開 OS 映像檔」。IMAGE:指定下列其中一個值:
大量公開新運算執行個體中的主機 ID
如要在大量建立運算執行個體時公開主機 ID,請選取下列任一選項:
gcloud
如要在大量建立運算執行個體時公開主機 ID,請執行 gcloud compute instances bulk create 指令搭配 --expose-host-topology 旗標。
舉例來說,如要在單一可用區中大量建立運算執行個體,並指定公開主機 ID,請執行下列指令:
gcloud compute instances bulk create \
--count=COUNT \
--machine-type=MACHINE_TYPE \
--name-pattern="NAME_PATTERN" \
--expose-host-topology \
--zone=ZONE
更改下列內容:
COUNT:要建立的運算執行個體數量。MACHINE_TYPE:要讓運算執行個體使用的機型。NAME_PATTERN:運算執行個體的名稱模式。如要取代運算執行個體名稱中的一連串數字,請使用一連串井字號 (#) 字元。舉例來說,如果使用instance-#做為名稱模式,系統會產生名稱開頭為instance-1、instance-2的運算執行個體,並持續產生至COUNT指定的運算執行個體數量。ZONE:要大量建立運算執行個體的可用區。
REST
如要在大量建立運算執行個體時公開主機 ID,請向 instances.bulkInsert 方法發出 POST 要求。在要求主體中,加入設為 true 的 instanceProperties.scheduling.exposeHostTopology 欄位。
舉例來說,如要在單一區域中大量建立運算執行個體,並指定公開主機 ID,請發出 POST 要求,如下所示:
POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert
{
"count": "COUNT",
"namePattern": "NAME_PATTERN",
"instanceProperties": {
"machineType": "MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [
{
"network": "global/networks/default"
}
],
"scheduling": {
"exposeHostTopology": true
}
}
}
更改下列內容:
PROJECT_ID:要建立運算執行個體的專案 ID。ZONE:要建立運算執行個體的可用區。COUNT:要建立的運算執行個體數量。NAME_PATTERN:運算執行個體的名稱模式。如要取代運算執行個體名稱中的一連串數字,請使用一連串井字號 (#) 字元。舉例來說,使用instance-#做為名稱模式,會產生名稱開頭為instance-1、instance-2的運算執行個體,並持續產生,直到達到COUNT指定的運算執行個體數量為止。MACHINE_TYPE:要讓運算執行個體使用的機型。IMAGE_PROJECT:包含圖片的圖片專案,例如debian-cloud。如要進一步瞭解支援的映像檔專案,請參閱「公開 OS 映像檔」。IMAGE:指定下列其中一個值:
在新執行個體範本中公開主機 ID
建立指定公開主機 ID 的執行個體範本後,您可以使用該範本執行下列操作:
在下列情況下,公開代管執行個體群組 (MIG) 的運算執行個體中的主機 ID:
如要在建立執行個體範本時公開主機 ID,請選取下列任一選項:
gcloud
如要在建立執行個體範本時公開主機 ID,請使用 gcloud compute instance-templates create 指令和 --expose-host-topology 旗標。
舉例來說,您可以使用下列指令建立區域執行個體範本。如要建立全域執行個體範本,請使用相同指令,但不加上 --instance-template-region 旗標。
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--expose-host-topology \
--instance-template-region=REGION \
--machine-type=MACHINE_TYPE
更改下列內容:
INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。REGION:要建立執行個體範本的區域。MACHINE_TYPE:要讓運算執行個體使用的機型。
REST
如要在建立執行個體範本時公開主機 ID,請向下列其中一種方法發出 POST 要求。在要求主體中,加入設為 true 的 properties.scheduling.exposeHostTopology 欄位。
如要建立全域執行個體範本,請使用
instanceTemplates.insert方法。如要建立區域執行個體範本,請使用
regionInstanceTemplates.insert方法。
舉例來說,如要建立公開主機 ID 的區域執行個體範本,請發出 POST 要求,如下所示:
POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates
{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"machineType": "MACHINE_TYPE",
"networkInterfaces": [
{
"network": "global/networks/default"
}
],
"scheduling": {
"exposeHostTopology": true
}
}
}
更改下列內容:
PROJECT_ID:要在其中建立執行個體範本的專案 ID。REGION:要建立執行個體範本的區域。INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。IMAGE_PROJECT:含有映文件的映文件專案,例如debian-cloud。如要進一步瞭解支援的映像檔專案,請參閱「公開 OS 映像檔」。IMAGE:指定下列其中一項:MACHINE_TYPE:要讓運算執行個體使用的機型。
驗證運算執行個體的實際位置
只有在執行中的運算執行個體符合特定需求,或您公開主機 ID 時,才能查看這些執行個體的實際位置。
如要驗證貴組織中執行中運算執行個體的實際位置,請使用下列其中一種方法:
使用 Cloud de Confiance 控制台、gcloud CLI 或 REST 驗證實體位置
如要一次查看多個運算執行個體的實際位置,請使用 REST API。否則,請選取下列其中一個選項:
控制台
前往 Cloud de Confiance 控制台的「VM instances」(VM 執行個體) 頁面。
在「名稱」欄中,按一下要查看詳細資料的運算執行個體名稱。系統會顯示執行個體詳細資料頁面,並選取「Details」(詳細資料) 分頁。
在「Basic information」(基本資訊) 區段中,查看「Physical host」(實體主機) 欄位的值。
gcloud
如要查看執行中運算執行個體的實體位置,請搭配 --flatten=resourceStatus.physicalHostTopology 旗標使用 gcloud compute instances describe 指令:
gcloud compute instances describe INSTANCE_NAME \
--flatten=resourceStatus.physicalHostTopology \
--zone=ZONE
更改下列內容:
INSTANCE_NAME:運算執行個體名稱。ZONE:運算執行個體所在的可用區。
輸出結果會與下列內容相似:
如果可以查看運算執行個體的叢集、區塊、子區塊和主機 ID,輸出內容會類似於下列內容:
--- block: 3e3056e23cf91a5cb4a8621b6a52c100 cluster: europe-west1-cluster-jfhb host: 1215168a4ecdfb434fd4d28056589059 subBlock: 0fc09525cbd5abd734342893ca1c083f如果只能在公開主機後查看主機 ID,輸出內容會類似於下列內容:
--- block: null cluster: null host: 1215168a4ecdfb434fd4d28056589059 subBlock: null
REST
如要查看執行中運算執行個體的實際位置,請發出下列其中一個 GET 要求。提出要求時,您必須加入 fields 查詢參數,並將輸出內容限制為運算執行個體的 name、machineType 和 physicalHostTopology 欄位。您也必須加入 filter 查詢參數,並將結果限制為正在執行的運算執行個體。
如要查看所有區域的執行個體清單,請使用
instances.aggregatedList方法:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/instances?fields=items.name,items.machineType,items.resourceStatus.physicalHostTopology&filter=status=RUNNING如要查看特定區域的執行個體清單,請使用
instances.list方法:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances?fields=items.name,items.machineType,items.resourceStatus.physicalHostTopology&filter=status=RUNNING
更改下列內容:
PROJECT_ID:運算執行個體所在的專案 ID。ZONE:運算執行個體所在的可用區。
輸出結果會與下列內容相似:
如果您可以查看運算執行個體的叢集、區塊、子區塊和主機 ID,輸出內容會與下列內容相似。在以下範例中,運算執行個體
vm-01和vm-02位於同一個區塊。{ "items": [ { "name": "vm-01", "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g", "resourceStatus": { "physicalHostTopology": { "block": "3e3056e23cf91a5cb4a8621b6a52c100", "cluster": "europe-west1-cluster-jfhb", "host": "1215168a4ecdfb434fd4d28056589059", "subBlock": "0fc09525cbd5abd734342893ca1c083f" } } }, { "name": "vm-02", "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g", "resourceStatus": { "physicalHostTopology": { "block": "3e3056e23cf91a5cb4a8621b6a52c100", "cluster": "europe-west1-cluster-jfhb", "host": "2326279b5ecdfc545fd5e39167698168", "subBlock": "1fc18636cbd4abd623553784ca2c174e" } } }, ... ] }如果只能在公開主機後查看主機 ID,輸出內容會類似於下列內容:
{ "items": [ { "name": "vm-01", "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g", "resourceStatus": { "physicalHostTopology": { "block": null, "cluster": null, "host": "1215168a4ecdfb434fd4d28056589059", "subBlock": null } } }, { "name": "vm-02", "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g", "resourceStatus": { "physicalHostTopology": { "block": null, "cluster": null, "host": "2326279b5ecdfc545fd5e39167698168", "subBlock": null } } }, ... ] }
如要縮小運算執行個體清單範圍,請編輯 filter 查詢參數中的篩選運算式。
查詢中繼資料鍵,驗證實際位置
如要透過查詢 physical_host_topology 中繼資料鍵,查看執行中運算執行個體的實際位置,請選取下列任一選項:
Linux 執行個體
連線至 Linux 執行個體。
使用
curl查詢physical_host_topology中繼資料鍵:user@myinst:~$ curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/attributes/physical_host_topology輸出結果會與下列內容相似:
如果可以查看運算執行個體的叢集、區塊、子區塊和主機 ID,輸出內容會與下列內容相似:
{ "block": "3e3056e23cf91a5cb4a8621b6a52c100", "cluster": "europe-west1-cluster-jfhb", "host": "2326279b5ecdfc545fd5e39167698168", "subBlock": "1fc18636cbd4abd623553784ca2c174e" }如果只能在公開主機後查看主機 ID,輸出內容會類似以下範例:
{ "block": null, "cluster": null, "host": "2326279b5ecdfc545fd5e39167698168", "subBlock": null }
Windows 執行個體
連線至 Windows 執行個體。
使用
Invoke-RestMethod指令查詢physical_host_topology中繼資料鍵:PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes/physical_host_topology") $value輸出結果會與下列內容相似:
如果可以查看運算執行個體的叢集、區塊、子區塊和主機 ID,輸出內容會與下列內容相似:
{ "block": "3e3056e23cf91a5cb4a8621b6a52c100", "cluster": "europe-west1-cluster-jfhb", "host": "2326279b5ecdfc545fd5e39167698168", "subBlock": "1fc18636cbd4abd623553784ca2c174e" }如果只能在公開主機後查看主機 ID,輸出內容會類似以下範例:
{ "block": null, "cluster": null, "host": "2326279b5ecdfc545fd5e39167698168", "subBlock": null }
後續步驟
進一步瞭解運算執行個體中的主機事件。
瞭解如何監控運算執行個體。