設定第三方設備適用的內部 TCP/UDP 負載平衡

本指南使用範例來說明如何將 Google Cloud Platform 內部 TCP/UDP 負載平衡器設為下一個躍點。在您依循這份指南之前,請先熟悉以下概念:

權限

如要遵循本指南,您必須建立執行個體並修改專案中的網路。您必須是專案擁有者或編輯者,或是需要下列所有的 Compute Engine 身分與存取權管理角色

工作 必要角色
建立網路、子網路和負載平衡器元件 網路管理員
新增與移除防火牆規則 安全管理員
建立執行個體 執行個體管理員

設定

本指南說明如何使用內部 TCP/UDP 負載平衡器做為自訂靜態路徑的下一個躍點,以整合向外擴充的虛擬設備。

本指南討論的解決方案整合了虛擬設備,因此您不需要明確重設用戶端,就能將流量傳送到各個虛擬設備。本安裝指南中的範例透過一組負載平衡的防火牆虛擬設備傳送所有東西向流量。

本節的步驟說明如何設定下列資源:

  • 範例虛擬私人雲端網路和自訂子網路
  • GCP 防火牆規則,允許連入連線到後端 VM
  • 自訂靜態路徑
  • 一個用來測試連線的用戶端 VM
  • 以下內部 TCP/UDP 負載平衡器元件:
    • 代管執行個體群組中的後端 VM
    • 後端 VM 設備的健康狀態檢查
    • us-west1 地區的內部後端服務,用於管理後端 VM 之間的連線分配
    • 負載平衡器前端的內部轉送規則和內部 IP 位址

整體來說,拓撲結構如下所示:

內部 TCP/UDP 負載平衡的東西向下一個躍點範例 (按一下可放大)
內部 TCP/UDP 負載平衡的東西向下一個躍點範例 (按一下可放大)

此圖顯示該範例建立的部分資源:

  • 應用程式執行個體 (在本範例中為執行防火牆設備軟體的 VM),位於內部 TCP/UDP 負載平衡器 (本範例中為 fr-ilb) 後方。應用程式執行個體只有內部 (RFC 1918) IP 位址。
  • 每個應用程式執行個體均啟用了 [can-ip-forward](/vpc/docs/using-routes#canipforward) 標記。這是由於根據預設,每個 Compute Engine VM 只會傳送 VM 本身所產生的封包,因此封包的來源 IP 位址會與 VM 的其中一個 IP 位址相符。can-ip-forward 設定可讓應用程式執行個體轉送由另一個節點發出的封包。
  • 將目的地 10.50.1.0/24 和下一個躍點設為負載平衡器轉送規則 (fr-ilb) 的自訂靜態路徑

圖表亦會顯示以下流量:

  • Wgeb 流量使用在實際工作環境中虛擬私人雲端網路的主要 IP 範圍 10.50.1.0/24 發送到子網路,該流量透過負載平衡器轉送。
  • 負載平衡器根據設定的工作階段相依性將流量轉送到其中一個應用程式執行個體 (工作階段相依性只會影響 TCP 流量)。
  • 應用程式執行個體負責執行來源網路位址轉譯 (SNAT),以將封包傳遞到位於 production 虛擬私人雲端網路的執行個體群組。對於傳回流量,則執行目的地網路位址轉譯 (DNAT),以將封包傳遞到 transit 虛擬私人雲端網路中的用戶端執行個體。

如需其他使用案例,請參閱以內部 TCP/UDP 負載平衡器為下一個躍點的概念相關文章。

下圖提供負載平衡資源和網路拓撲的詳細說明:

內部 TCP/UDP 負載平衡的東西向下一個躍點範例 (按一下可放大)
內部 TCP/UDP 負載平衡的東西向下一個躍點範例 (按一下可放大)

設定網路、地區和子網路

本範例使用以下虛擬私人雲端網路、地區和子網路:

  • 網路:這個範例需要兩個網路,每個網路至少具有一個子網路。每個後端第三方設備 VM 必須至少具備兩個網路介面,每個虛擬私人雲端網路各一個網路介面。這個範例中的網路是自訂模式虛擬私人雲端網路,名稱為 transitproduction。這個範例中的 transit 網路包含用戶端和負載平衡器,production 網路則包含目的地目標 VM。

  • 地區:子網路位於 us-west1 地區。由於 VM 執行個體是區域性資源,因此子網路必須位於相同的地區。

  • 子網路:子網路 transit-subnetproduction-subnet 分別使用 10.30.1.0/2410.50.1.0/24 的主要 IP 位址範圍。

要建立範例網路和子網路,請按照下列步驟操作。

主控台

建立 transit 網路和 transit-subnet

  1. 前往 Google Cloud Platform Console 的「VPC networks」(VPC 網路) 頁面。
    前往「VPC networks」(VPC 網路) 頁面
  2. 按一下 [Create VPC network] (建立 VPC 網路)。
  3. 輸入 transit 的「Name」(名稱)
  4. 在「Subnets」(子網路) 區段中:
    • 將「Subnet creation mode」(子網路建立模式) 設為 [Custom] (自訂)
    • 在「New subnet」(新的子網路) 區段中,輸入以下資訊:
      • 「Name」(名稱)transit-subnet
      • 「Region」(地區)us-west1
      • 「IP address range」(IP 位址範圍)10.30.1.0/24
      • 按一下 [Done] (完成)
  5. 按一下 [Create] (建立)。

建立 production 網路和 production-subnet

  1. 前往 Google Cloud Platform Console 的「VPC networks」(VPC 網路) 頁面。
    前往「VPC networks」(VPC 網路) 頁面
  2. 按一下 [Create VPC network] (建立 VPC 網路)
  3. 輸入 production 的「Name」(名稱)
  4. 在「Subnets」(子網路) 區段中:
    • 將「Subnet creation mode」(子網路建立模式) 設為 [Custom] (自訂)
    • 在「New subnet」(新的子網路) 區段中,輸入以下資訊:
      • 「Name」(名稱)production-subnet
      • 「Region」(地區)us-west1
      • 「IP address range」(IP 位址範圍)10.50.1.0/24
      • 按一下 [Done] (完成)
  5. 按一下 [Create] (建立)。

gcloud

  1. 建立自訂虛擬私人雲端網路:

    gcloud compute networks create transit --subnet-mode=custom
    
    gcloud compute networks create production --subnet-mode=custom
    
  2. us-west1 地區的 transitproduction 網路中建立子網路:

    gcloud compute networks subnets create transit-subnet \
        --network=transit \
        --range=10.30.1.0/24 \
        --region=us-west1
    
    gcloud compute networks subnets create production-subnet \
        --network=production \
        --range=10.50.1.0/24 \
        --region=us-west1
    

設定防火牆規則

本範例使用以下防火牆規則:

  • fw-allow-transit-subnet:適用於 transit 網路中所有目標的輸入規則,允許來源在 10.30.1.0/24 範圍內的流量。這項規則可讓用戶端和 transit-subnet 的第三方 VM 設備進行通訊。

  • fw-allow-production-subnet:適用於 production 網路中所有目標的輸入規則,允許來源在 10.50.1.0/24 範圍內的流量。這項規則允許 production-subnet 中的第三方 VM 設備和目的地目標 VM 進行通訊。

  • fw-allow-transit-ssh:適用於要進行負載平衡的執行個體的輸入規則,該規則允許在 TCP 通訊埠 22 上來自任何位址的連入 SSH 連線。您可以為這個規則選擇更嚴格的來源 IP 範圍;例如,您可以指定打算要啟動 SSH 工作階段的系統 IP 範圍。本範例使用目標標記 allow-ssh 來辨識套用防火牆規則的 VM。

  • fw-allow-health-check:適用於負載平衡的第三方 VM 設備的輸入規則,允許來自 GCP 健康狀態檢查系統 (130.211.0.0/2235.191.0.0/16) 的流量。本範例使用目標標記 allow-health-check 來辨識應套用的執行個體。

如果沒有這些防火牆規則,則預設拒絕輸入規則會封鎖傳入至後端執行個體的流量。您必須建立防火牆規則,以允許從 GCP 探測系統的 IP 範圍進行健康狀態檢查。詳情請參閱探測 IP 範圍一節。

主控台

  1. 前往 Google Cloud Platform 主控台的「Firewall rules」(防火牆規則) 頁面。
    前往「Firewall rules」(防火牆規則) 頁面
  2. 按一下 [Create firewall rule] (建立防火牆規則),然後輸入以下資訊以建立允許子網路流量的規則:
    • 「Name」(名稱)fw-allow-transit-subnet
    • 「Network」(網路)transit
    • 「Priority」(優先順序)1000
    • 「Direction of traffic」(流量方向):[ingress] (輸入)
    • 「Action on match」(相符時執行的動作):[allow] (允許)
    • 「Targets」(目標):[All instances in the network] (網路中的所有執行個體)
    • 「Source filter」(來源篩選器)IP ranges
    • 「Source IP ranges」(來源 IP 範圍)10.30.1.0/24
    • 「Protocols and ports」(通訊協定和通訊埠):[Allow all] (全部允許)
  3. 按一下 [Create] (建立)。
  4. 按一下 [Create firewall rule] (建立防火牆規則),然後輸入以下資訊以建立允許子網路流量的規則:
    • 「Name」(名稱)fw-allow-production-subnet
    • 「Network」(網路)production
    • 「Priority」(優先順序)1000
    • 「Direction of traffic」(流量方向):[ingress] (輸入)
    • 「Action on match」(相符時執行的動作):[allow] (允許)
    • 「Targets」(目標):[All instances in the network] (網路中的所有執行個體)
    • 「Source filter」(來源篩選器)IP ranges
    • 「Source IP ranges」(來源 IP 範圍)10.50.1.0/24
    • 「Protocols and ports」(通訊協定和通訊埠):[Allow all] (全部允許)
  5. 按一下 [Create] (建立)
  6. 再次按一下 [Create firewall rule] (建立防火牆規則),以建立允許連入 SSH 連線的規則:
    • 「Name」(名稱)fw-allow-transit-ssh
    • 「Network」(網路)transit
    • 「Priority」(優先順序)1000
    • 「Direction of traffic」(流量方向):[ingress] (輸入)
    • 「Action on match」(相符時執行的動作):[allow] (允許)
    • 「Target」(目標):[Specified target tags] (指定的目標標記)
    • 「Target tags」(目標標記):allow-ssh
    • 「Source filter」(來源篩選器)IP ranges
    • 「Source IP ranges」(來源 IP 範圍)0.0.0.0/0
    • 「Protocols and ports」(通訊協定和通訊埠):選擇 [Specified protocols and ports] (指定的通訊協定和通訊埠),然後輸入 tcp:22
  7. 按一下 [Create] (建立)。
  8. 第三次按一下 [Create firewall rule] (建立防火牆規則),以建立允許 GCP 健康狀態檢查的規則:
    • 「Name」(名稱)fw-allow-health-check
    • 「Network」(網路)transit
    • 「Priority」(優先順序)1000
    • 「Direction of traffic」(流量方向):[ingress] (輸入)
    • 「Action on match」(相符時執行的動作):[allow] (允許)
    • 「Target」(目標):[Specified target tags] (指定的目標標記)
    • 「Target tags」(目標標記)allow-health-check
    • 「Source filter」(來源篩選器)IP ranges
    • 「Source IP ranges」(來源 IP 範圍)130.211.0.0/2235.191.0.0/16
    • 「Protocols and ports」(通訊協定和通訊埠):[Allow all] (全部允許)
  9. 按一下 [Create] (建立)

gcloud

  1. 建立 fw-allow-transit-subnet 防火牆規則以允許與子網路進行通訊:

    gcloud compute firewall-rules create fw-allow-transit-subnet \
        --network=transit \
        --action=allow \
        --direction=ingress \
        --source-ranges=10.30.1.0/24 \
        --rules=tcp,udp,icmp
    
  2. 建立 fw-allow-production-subnet 防火牆規則以允許與子網路進行通訊:

    gcloud compute firewall-rules create fw-allow-production-subnet \
        --network=production \
        --action=allow \
        --direction=ingress \
        --source-ranges=10.50.1.0/24 \
        --rules=tcp,udp,icmp
    
  3. 建立 fw-allow-transit-ssh 防火牆規則以允許透過網路標記 allow-ssh 與 VM 建立 SSH 連線。如果您省略 source-ranges,GCP 會將規則解譯為所有來源

    gcloud compute firewall-rules create fw-allow-transit-ssh \
        --network=transit \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    
  4. 建立 fw-allow-health-check 規則,以允許對 transit 網路中的第三方設備 VM 進行 GCP 健康狀態檢查。

    gcloud compute firewall-rules create fw-allow-transit-health-check \
        --network=transit \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-health-check \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --rules=tcp,udp,icmp
    

建立目的地執行個體

本範例在 production 虛擬私人雲端網路中的 production-subnet (10.50.1.0/24) 建立 IP 位址為 10.50.1.2 的目的地執行個體。

主控台

  1. 前往 Google Cloud Platform 主控台的「VM instances」(VM 執行個體) 頁面。
    前往「VM instances」(VM 執行個體) 頁面
  2. 對於 VM「Name」(名稱),請輸入 destination-instance
  3. 針對「Region」(地區) 選擇 us-west1,針對「Zone」(區域) 則選擇 us-west1-a
  4. 在「Boot disk」(開機磁碟) 區段,確認所選映像檔為「Debian GNU/Linux 9 Stretch」。如有必要,請點選 [Choose] (選擇) 變更圖片。
  5. 分別按一下 [Management] (管理)、[security] (安全性)、[disks] (磁碟)、[networking] (網路)、[sole tenancy] (單獨租用),然後進行以下變更:

    • 按一下 [Networking] (網路) 並新增以下「Network tags」(網路標記)allow-ssh
    • 按一下「Network interfaces」(網路介面) 下的編輯按鈕,進行下列變更,然後點選 [Done] (完成)
      • 「Network」(網路)production
      • 「Subnet」(子網路)production-subnet
      • 「Primary internal IP」(主要內部 IP):[Ephemeral (custom)] (臨時 (自訂))
      • 「Custom ephemeral IP address」(自訂臨時 IP 位址):10.50.1.2
      • 「External IP」(外部 IP):[Ephemeral] (臨時)
    • 按一下 [Management] (管理)。在「Startup script」(開機指令碼) 欄位中,複製並貼上以下指令碼內容。所有四個 VM 的指令碼內容完全相同:

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://169.254.169.254/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2
      
  6. 按一下 [Create] (建立)。

gcloud

  1. 請執行下列指令來建立 VM。

    gcloud compute instances create destination-instance \
        --zone=us-west1-a \
        --image-family=debian-9 \
        --image-project=debian-cloud \
        --tags=allow-ssh \
        --subnet=production-subnet \
        --private-network-ip 10.50.1.2 \
        --metadata=startup-script='#! /bin/bash
        apt-get update
        apt-get install apache2 -y
        a2ensite default-ssl
        a2enmod ssl
        vm_hostname="$(curl -H "Metadata-Flavor:Google" \
        http://169.254.169.254/computeMetadata/v1/instance/name)"
        echo "Page served from: $vm_hostname" | \
        tee /var/www/html/index.html
        systemctl restart apache2'
    

建立第三方虛擬設備

下列步驟說明如何使用 iptables 軟體做為第三方虛擬設備,建立執行個體範本和代管地區執行個體群組。

主控台

您必須使用 gcloud 執行這個步驟,因為您需要建立具有多個網路介面的執行個體範本。GCP Console 目前不支援建立具有多個網路介面的執行個體範本。

gcloud

  1. 為第三方虛擬設備建立執行個體範本。執行個體範本必須包含 --can-ip-forward 標記,讓從範本建立的 VM 執行個體可以轉送來自 transitproduction 網路中其他執行個體的封包。

    gcloud compute instance-templates create third-party-template \
        --region=us-west1 \
        --network-interface subnet=transit-subnet,address="" \
        --network-interface subnet=production-subnet \
        --tags=allow-ssh,allow-health-check \
        --image-family=debian-9 \
        --image-project=debian-cloud \
        --can-ip-forward \
        --metadata=startup-script='#! /bin/bash
        # Enable IP forwarding:
        echo 1 > /proc/sys/net/ipv4/ip_forward
        echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/20-iptables.conf
        # Read VM network configuration:
        md_vm="http://169.254.169.254/computeMetadata/v1/instance/"
        md_net="$md_vm/network-interfaces"
        nic0_gw="$(curl -H "Metadata-Flavor:Google" $md_net/0/gateway)"
        nic0_mask="$(curl -H "Metadata-Flavor:Google" $md_net/0/subnetmask)"
        nic1_gw="$(curl -H "Metadata-Flavor:Google" $md_net/1/gateway)"
        nic1_mask="$(curl -H "Metadata-Flavor:Google" $md_net/1/subnetmask)"
        nic1_addr="$(curl -H "Metadata-Flavor:Google" $md_net/1/ip)"
        # Start iptables:
        /sbin/iptables -t nat -F
        /sbin/iptables -t nat -A POSTROUTING \
        -s "$nic0_gw/$nic0_mask" \
        -d "$nic1_gw/$nic1_mask" \
        -o eth1 \
        -j SNAT \
        --to-source "$nic1_addr"
        /sbin/iptables-save
        # Use a web server to pass the health check for this example.
        # You should use a more complete test in production.
        apt-get update
        apt-get install apache2 -y
        a2ensite default-ssl
        a2enmod ssl
        echo "Example web page to pass health check" | \
        tee /var/www/html/index.html
        systemctl restart apache2'
    
  2. 為您的第三方虛擬設備建立代管執行個體群組。這個指令會建立在 us-west1 的地區代管執行個體群組,然後自動調度資源。

    gcloud compute instance-groups managed create third-party-instance-group \
        --region us-west1 \
        --template=third-party-template \
        --size=3
    

建立負載平衡資源

這些步驟會設定所有內部 TCP/UDP 負載平衡器元件,從健康狀態檢查和後端服務開始,然後再設定前端元件:

  • 健康狀態檢查:在這個範例中,HTTP 健康狀態檢查會檢查 HTTP 200 (OK) 回應。詳情請參閱內部 TCP/UDP 負載平衡總覽的健康狀態檢查一節

  • 後端服務:雖然這個範例的後端服務指定 TCP 通訊協定,但當負載平衡器是路徑的下一個躍點時,TCP 和 UDP 流量都會傳送至負載平衡器的後端。

  • 轉送規則:即使此範例轉送規則指定了 TCP 通訊埠 80,但當負載平衡器是路徑的下一個躍點時,任何 TCP 或 UDP 通訊埠上的流量都將傳送到負載平衡器的後端。

  • 內部 IP 位址:範例會指定用於轉送規則的內部 IP 位址為 10.30.1.99

主控台

建立負載平衡器並設定後端服務

  1. 前往 Google Cloud Platform Console 的「Load balancing」(負載平衡) 頁面。
    前往「Load balancing」(負載平衡) 頁面
  2. 按一下 [Create load balancer] (建立負載平衡器)
  3. 在「TCP load balancing」(TCP 負載平衡) 下方,點選 [Start configuration] (啟動設定)
  4. 在「Internet facing or internal only」(連結網際網路或僅限內部) 下,選取 [Only between my VMs] (僅在我的 VM 之間)
  5. 按一下 [Continue] (繼續)
  6. 將「Name」(名稱) 設為 be-ilb
  7. 按一下 [Backend configuration] (後端設定),然後進行以下變更:
    1. 「Region」(地區)us-west1
    2. 「Network」(網路)transit
    3. 在「Backends」(後端) 之下的「New item」(新增項目) 區段中,選取 third-party-instance-group 執行個體群組,然後點選 [Done](完成)
    4. 在「Health check」(健康狀態檢查) 之下,選取 [Create another health check] (建立另一個健康狀態檢查),輸入以下資訊,然後點選 [Save and continue] (儲存並繼續)
      • 「Name」(名稱)hc-http-80
      • 「Protocol」(通訊協定)HTTP
      • 「Port」(通訊埠)80
      • 「Proxy protocol」(Proxy 通訊協定)NONE
      • 「Request path」(要求路徑)/
    5. 繼續操作之前,請先驗證「Backendconfiguration」(後端設定) 旁是否有一個藍色勾號。如果沒有,請檢查這個步驟。
  8. 按一下 [Frontend configuration] (前端設定)。在「New Frontend IP and port」(新增的前端 IP 和通訊埠) 區段中,進行下列變更:
    1. 「Name」(名稱)fr-ilb
    2. 「Subnetwork」(子網路)transit-subnet
    3. 在「Internal IP」(內部 IP) 中,選擇 [Reserve a static internal IP address] (保留靜態內部 IP 位址),輸入以下資訊,然後點選 [Reserve] (保留)
      • 「Name」(名稱)ip-ilb
      • 「Static IP address」(靜態 IP 位址):[Let me choose] (自行選擇)
      • 「Custom IP address」(自訂 IP 位址)10.30.1.99
    4. 「Ports」(通訊埠):選擇 [Single] (單個),然後輸入 80 作為「Port number」(通訊埠號碼)。請記住,為負載平衡器選擇的通訊協定和通訊埠,並不限於負載平衡器是路徑的下一個躍點時使用的通訊協定和通訊埠。
    5. 繼續操作之前,請先驗證「Frontend configuration」(前端設定) 旁是否有一個藍色勾號。如果沒有,請檢查這個步驟。
  9. 按一下 [Review and finalize] (檢查並完成)。請仔細檢查您的設定。
  10. 按一下 [Create] (建立)

gcloud

  1. 建立新的 HTTP 健康狀態檢查以測試與 80 上 VM 的 TCP 連線。

    gcloud compute health-checks create http hc-http-80 \
        --port=80
    
  2. us-west1 地區建立內部後端服務。

    gcloud compute backend-services create be-ilb \
        --load-balancing-scheme=internal \
        --region=us-west1 \
        --health-checks=hc-http-80
    
  3. 將具有第三方虛擬設備的執行個體群組新增為後端服務的後端。

    gcloud compute backend-services add-backend be-ilb \
        --instance-group=third-party-instance-group \
        --instance-group-region=us-west1 \
        --region=us-west1
    
  4. 建立內部轉送規則,並將其連結到後端服務以完成負載平衡器設定。請記住,當將負載平衡器做為路徑的下一個躍點時,內部負載平衡器的通訊協定 (TCP) 和通訊埠 (80) 不會限制轉送到後端執行個體 (第三方虛擬設備) 的通訊埠和通訊協定。

    gcloud compute forwarding-rules create fr-ilb \
        --load-balancing-scheme=internal \
        --ports=80 \
        --network=transit \
        --subnet=transit-subnet \
        --region=us-west1 \
        --backend-service=be-ilb \
        --address=10.30.1.99
    

建立將負載平衡器定義為下一個躍點的靜態路徑

建立靜態路徑時,不能使用 next-hop-address 指向負載平衡器轉送規則的 IP 位址。因為當您使用 next-hop-address 時,GCP 會將流量傳送至指派給該 IP 位址的 VM 執行個體,而負載平衡器並非 VM 執行個體。相反地,如果要將負載平衡器指定為下一個躍點,則必須使用 next-hop-ilb 標記,如本範例所示。

主控台

  1. 前往 Google Cloud Platform 主控台的「路徑」頁面。
    前往路徑頁面
  2. 按一下 [Create route] (建立路徑)
  3. 針對路徑「Name」(名稱),輸入「ilb-nhop-default」。
  4. 選取 transit 網路。
  5. 在「Destination IP range」(目的地 IP 範圍) 輸入 10.50.1.0/24
  6. 請確認未指定標記,因為這項功能目前不支援標記。
  7. 對於路徑的「Next hop」(下一個躍點),請選擇 [Specify a forwarding rule internal TCP/UDP load balancer] (指定內部 TCP/UDP 負載平衡器的轉送規則)。
  8. 針對下一個躍點地區,選取 us-west1
  9. 對於轉送規則名稱,選取 fr-ilb
  10. 按一下 [Create] (建立)。

gcloud

建立進階路徑,將下一個躍點設為負載平衡器的轉送規則,並將目的地範圍設為路徑 10.50.1.0/24。

gcloud beta compute routes create ilb-nhop-default \
    --network=transit \
    --destination-range=10.50.1.0/24 \
    --next-hop-ilb=fr-ilb \
    --next-hop-ilb-region=us-west1

建立用戶端 VM

這個範例會在與 vm-client 虛擬私人雲端網路內負載平衡器相同的地區中,建立用戶端 VM (transit)。這個用戶端用來示範下一個躍點的行為。

主控台

  1. 前往 Google Cloud Platform 主控台的「VM instances」(VM 執行個體) 頁面。
    前往「VM instances」(VM 執行個體) 頁面
  2. 按一下 [Create instance] (建立執行個體)。
  3. 將「Name」(名稱) 設為 vm-client
  4. 將「Zone」(區域) 設為 us-west1-a
  5. 分別按一下 [Management] (管理)、[security] (安全性)、[disks] (磁碟)、[networking] (網路)、[sole tenancy] (單獨租用) ,然後進行以下變更:
    • 按一下 [Networking] (網路) 並新增「Network tags」(網路標記)allow-ssh
    • 按一下「Network interfaces」(網路介面) 下的編輯按鈕,進行下列變更,然後點選 [Done] (完成)
      • 「Network」(網路)transit
      • 「Subnetwork」(子網路)transit-subnet
      • 「Primary internal IP」(主要內部 IP):[Ephemeral (automatic)] (臨時 (自動))
      • 「External IP」(外部 IP):[Ephemeral] (臨時)
  6. 按一下 [Create] (建立)。

gcloud

用戶端 VM 可以位於與負載平衡器相同地區的任何區域中,也可以使用該地區中的任何子網路。在本範例中,用戶端位於 us-west1-a 區域,並使用與主要 VM 和備用 VM 相同的子網路。

gcloud compute instances create vm-client \
    --zone=us-west1-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=transit-subnet

測試

測試 transit 虛擬私人雲端網路中的用戶端 VM 與 production 虛擬私人雲端網路中範例目的地 VM 間的聯絡。負載平衡器會用來做為下一個躍點,因為封包是透過負載平衡器轉送至目的地 10.50.1.2,而非傳送至負載平衡器的 IP 位址。

在此範例中,負載平衡器的健康後端設備 VM 上的 iptables 軟體會處理封包的 NAT。

  1. 連線至用戶端 VM 執行個體。

    gcloud compute ssh vm-client --zone=us-west1-a
    
  2. 使用 curl 向目的地執行個體的網路伺服器軟體發出網路要求。預期的輸出內容是目的地執行個體上索引頁面的內容 (Page served from: destination-instance)。

    curl http://10.50.1.2
    

後續步驟