設定第三方設備適用的內部直通式網路負載平衡器

在 Cloud de Confiance by S3NS中,您可以高可用性、擴充的方式整合第三方設備。如要這麼做,請設定靜態路徑,並將下一個躍點設為 Cloud de Confiance by S3NS 內部直通式網路負載平衡器。這樣一來,負載平衡器就能將目的地前置字元的流量,負載平衡至通過健康狀態檢查的第三方 VM 設備集區。

本指南使用範例來說明如何將內部直通式網路負載平衡器設為下一個躍點。在按照本指南操作之前,請先熟悉以下內容:

權限

如要按照本指南操作,您必須在專案中建立執行個體和修改網路,因此您必須是專案擁有者或編輯者,或是需要下列所有的 Compute Engine 身分與存取權管理角色

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

詳情請參閱下列指南:

設定內部直通式網路負載平衡器做為下一個躍點,並使用通用後端

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

本指南討論的解決方案會建立執行 Debian Linux 的設備 VM。範例 VM 不會執行任何封包篩選作業,但您可以修改這個範例的網路設定,或使用其他封包篩選或路由軟體,新增這項功能。

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

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

這個範例說明如何將負載平衡至多個後端 NIC,如「將負載平衡至多個 NIC」一文所述。

拓撲結構如下所示:

內部直通式網路負載平衡器的下一個躍點多重 NIC 詳細範例。
內部直通式網路負載平衡器的下一個躍點多重 NIC 詳細範例 (按一下可放大)。

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

  • 位於內部直通式網路負載平衡器 (本範例中為 fr-ilb1) 後方的應用程式執行個體。應用程式執行個體只有內部 IP 位址。
  • 每個應用程式執行個體均啟用了 can-ip-forward 標記。如果沒有這個標記,Compute Engine VM 只能在封包的來源 IP 位址與 VM 的內部 IP 位址、別名 IP 範圍的 IP 位址,或解析為 VM 的轉送規則 IP 位址相符時,傳輸封包。can-ip-forward 標記會變更這項行為,讓 VM 能夠傳輸任何來源 IP 位址的封包。
  • 將目的地 10.50.1.0/24 和下一個躍點設為負載平衡器轉送規則 (fr-ilb1) 的靜態路徑

圖表亦會顯示以下流量:

  • testing 虛擬私有雲網路具有靜態路徑,可將流量導向 10.50.1.0/24 子網路。這條路徑會將流量導向負載平衡器。
  • 負載平衡器根據設定的工作階段相依性將流量轉送到其中一個應用程式執行個體 (工作階段相依性只會影響 TCP 流量)。

如需其他使用案例,請參閱以內部 TCP/UDP 負載平衡器為下一個躍點

設定網路、地區和子網路

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

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

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

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

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

主控台

建立 testing 網路和 testing-subnet

  1. 在 Cloud de Confiance 控制台中,前往「VPC networks」(虛擬私有雲網路) 頁面。

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

  2. 按一下「建立虛擬私有雲網路」

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

  4. 在「Subnets」(子網路) 區段中:

    • 將「Subnet creation mode」(子網路建立模式) 設為 [Custom] (自訂)
    • 在「New subnet」(新的子網路) 區段中,輸入以下資訊:
      • Name (名稱):testing-subnet
      • Region (區域):us-west1
      • IP address range (IP 位址範圍):10.30.1.0/24
      • 按一下 [完成]
  5. 點選「建立」

建立 production 網路和 production-subnet

  1. 在 Cloud de Confiance 控制台中,前往「VPC networks」(虛擬私有雲網路) 頁面。

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

  2. 按一下「建立虛擬私有雲網路」

  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
      • 按一下 [完成]
  5. 點選「建立」

gcloud

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

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

    gcloud compute networks subnets create testing-subnet \
        --network=testing \
        --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-testing-from-both:適用於 testing 網路中所有目標的輸入規則。這項規則允許來自 10.30.1.0/2410.50.1.0/24 IP 位址範圍的流量。這兩個範圍涵蓋兩個網路中 VM 的主要內部 IP 位址。

  • fw-allow-production-from-both:適用於 production 網路中所有目標的輸入規則。這項規則允許來自 10.30.1.0/2410.50.1.0/24 IP 位址範圍的流量。這兩個範圍涵蓋兩個網路中 VM 的主要內部 IP 位址。

  • fw-allow-testing-ssh:套用至 testing 虛擬私有雲網路中 VM 執行個體的輸入規則。這項規則允許透過 TCP 通訊埠 22,從任何位址連入 SSH 連線。您可以為這項規則選擇較嚴格的來源 IP 範圍;例如,您可以指定打算啟動 SSH 工作階段之系統的 IP 範圍。這個範例會使用目標標記 allow-ssh 來辨識套用防火牆規則的 VM。

  • fw-allow-production-ssh:套用至 production 虛擬私有雲網路中 VM 執行個體的輸入規則。這項規則允許透過 TCP 通訊埠 22,從任何位址連入 SSH 連線。與 fw-allow-testing-ssh 規則一樣,您可以為這項規則選擇較嚴格的來源 IP 範圍。

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

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

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

主控台

  1. 在 Cloud de Confiance 控制台中,前往「Firewall policies」(防火牆政策) 頁面。

    前往「防火牆政策」頁面

  2. 按一下「建立防火牆規則」,然後輸入以下資訊,以建立規則,允許測試 VM 接收來自測試和正式版子網路的封包:

    • Name (名稱):fw-allow-testing-from-both
    • Network (網路):testing
    • Priority (優先順序):1000
    • 「Direction of traffic」(流量方向):[ingress] (輸入)
    • 「Action on match」(相符時執行的動作):[allow] (允許)
    • 「Targets」(目標):[All instances in the network] (網路中的所有執行個體)
    • 來源篩選器IPv4 範圍
    • 來源 IPv4 範圍10.30.1.0/2410.50.1.0/24
    • 「Protocols and ports」(通訊協定和通訊埠):[Allow all] (全部允許)
  3. 點選「建立」

  4. 按一下「建立防火牆規則」,然後輸入以下資訊,以建立允許正式環境 VM 接收來自測試和正式環境子網路封包的規則:

    • Name (名稱):fw-allow-production-from-both
    • Network (網路):production
    • Priority (優先順序):1000
    • 「Direction of traffic」(流量方向):[ingress] (輸入)
    • 「Action on match」(相符時執行的動作):[allow] (允許)
    • 「Targets」(目標):[All instances in the network] (網路中的所有執行個體)
    • 來源篩選器IPv4 範圍
    • 來源 IPv4 範圍10.30.1.0/2410.50.1.0/24
    • 「Protocols and ports」(通訊協定和通訊埠):[Allow all] (全部允許)
  5. 點選「建立」

  6. 按一下「Create firewall rule」(建立防火牆規則),以建立允許測試環境連入 SSH 連線的規則:

    • Name (名稱):fw-allow-testing-ssh
    • Network (網路):testing
    • Priority (優先順序):1000
    • 「Direction of traffic」(流量方向):[ingress] (輸入)
    • 「Action on match」(相符時執行的動作):[allow] (允許)
    • 「Target」(目標):指定的目標標記
    • 「Target tags」(目標標記)allow-ssh
    • 來源篩選器IPv4 範圍
    • Source IPv4 ranges (來源 IPv4 範圍):0.0.0.0/0
    • 「Protocols and ports」(通訊協定和通訊埠):選擇「Specified protocols and ports」(指定的通訊協定和通訊埠),然後輸入 tcp:22
  7. 點選「建立」

  8. 按一下「建立防火牆規則」,建立允許連入生產環境 SSH 連線的規則:

    • Name (名稱):fw-allow-production-ssh
    • Network (網路):production
    • Priority (優先順序):1000
    • 「Direction of traffic」(流量方向):[ingress] (輸入)
    • 「Action on match」(相符時執行的動作):[allow] (允許)
    • 「Target」(目標):指定的目標標記
    • 「Target tags」(目標標記)allow-ssh
    • 來源篩選器IPv4 範圍
    • Source IPv4 ranges (來源 IPv4 範圍):0.0.0.0/0
    • 「Protocols and ports」(通訊協定和通訊埠):選擇「Specified protocols and ports」(指定的通訊協定和通訊埠),然後輸入 tcp:22
  9. 點選「建立」

  10. 按一下「Create firewall rule」(建立防火牆規則),建立允許測試環境中Cloud de Confiance 健康狀態檢查的規則:

    • Name (名稱):fw-allow-health-check
    • Network (網路):testing
    • Priority (優先順序):1000
    • 「Direction of traffic」(流量方向):[ingress] (輸入)
    • 「Action on match」(相符時執行的動作):[allow] (允許)
    • 「Target」(目標):指定的目標標記
    • 「Target tags」(目標標記)allow-health-check
    • 來源篩選器IPv4 範圍
    • Source IPv4 ranges (來源 IPv4 範圍):130.211.0.0/2235.191.0.0/16
    • Protocols and ports (通訊協定和通訊埠):tcp
  11. 點選「建立」

  12. 按一下「Create firewall rule」(建立防火牆規則),以建立允許在正式環境中進行Cloud de Confiance 健康狀態檢查的規則:

    • Name (名稱):fw-allow-production-health-check
    • Network (網路):production
    • Priority (優先順序):1000
    • 「Direction of traffic」(流量方向):[ingress] (輸入)
    • 「Action on match」(相符時執行的動作):[allow] (允許)
    • 「Target」(目標):指定的目標標記
    • 「Target tags」(目標標記)allow-health-check
    • 來源篩選器IPv4 範圍
    • Source IPv4 ranges (來源 IPv4 範圍):130.211.0.0/2235.191.0.0/16
    • Protocols and ports (通訊協定和通訊埠):tcp
  13. 點選「建立」

gcloud

  1. 建立 fw-allow-testing-subnet 防火牆規則,允許測試 VM 接收來自 testingproduction 子網路的封包:

    gcloud compute firewall-rules create fw-allow-testing-from-both \
        --network=testing \
        --action=allow \
        --direction=ingress \
        --source-ranges=10.30.1.0/24,10.50.1.0/24 \
        --rules=all
    
  2. 建立 fw-allow-production-subnet 防火牆規則,允許生產環境 VM 接收來自 testingproduction 子網路的封包:

    gcloud compute firewall-rules create fw-allow-production-from-both \
        --network=production \
        --action=allow \
        --direction=ingress \
        --source-ranges=10.30.1.0/24,10.50.1.0/24 \
        --rules=all
    
  3. 建立 fw-allow-testing-ssh 防火牆規則,允許與具有 allow-ssh 網路標記的 VM 建立 SSH 連線。若省略 source-ranges,Cloud de Confiance 會將規則解讀為任何來源

    gcloud compute firewall-rules create fw-allow-testing-ssh \
        --network=testing \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    
  4. 建立 fw-allow-production-ssh 防火牆規則,允許與具有 allow-ssh 網路標記的 VM 建立 SSH 連線。

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

    gcloud compute firewall-rules create fw-allow-testing-health-check \
        --network=testing \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-health-check \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --rules=tcp
    
  6. 建立 fw-allow-production-health-check 防火牆規則,允許對 production 網路中的第三方設備 VM 進行Cloud de Confiance 健康狀態檢查。

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

建立第三方虛擬設備

下列步驟說明如何建立具有多個網路介面的執行個體範本和代管地區執行個體群組。這個執行個體群組會做為本範例的第三方虛擬設備。

主控台

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

gcloud

  1. 建立名為 config.sh 的本機檔案,並插入下列內容:

    #!/bin/bash
    # Enable IP forwarding:
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/20-example.conf
    # Read VM network configuration:
    md_vm="http://metadata.google.internal/computeMetadata/v1/instance/"
    md_net="$md_vm/network-interfaces"
    nic0_gw="$(curl $md_net/0/gateway -H "Metadata-Flavor:Google" )"
    nic0_mask="$(curl $md_net/0/subnetmask -H "Metadata-Flavor:Google")"
    nic0_addr="$(curl $md_net/0/ip -H "Metadata-Flavor:Google")"
    nic0_id="$(ip addr show | grep $nic0_addr | awk '{print $NF}')"
    nic1_gw="$(curl $md_net/1/gateway -H "Metadata-Flavor:Google")"
    nic1_mask="$(curl $md_net/1/subnetmask -H "Metadata-Flavor:Google")"
    nic1_addr="$(curl $md_net/1/ip -H "Metadata-Flavor:Google")"
    nic1_id="$(ip addr show | grep $nic1_addr | awk '{print $NF}')"
    # Source based policy routing for nic1
    echo "100 rt-nic1" >> /etc/iproute2/rt_tables
    sudo ip rule add pri 32000 from $nic1_gw/$nic1_mask table rt-nic1
    sleep 1
    sudo ip route add 35.191.0.0/16 via $nic1_gw dev $nic1_id table rt-nic1
    sudo ip route add 130.211.0.0/22 via $nic1_gw dev $nic1_id table rt-nic1
    # Use a web server to pass the health check for this example.
    # You should use a more complete test in production.
    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    echo "Example web page to pass health check" | \
    tee /var/www/html/index.html
    sudo systemctl restart apache2
  2. 為第三方虛擬設備建立執行個體範本。執行個體範本必須包含 --can-ip-forward 標記,讓從範本建立的 VM 執行個體可以轉送來自 testingproduction 網路中其他執行個體的封包。

    gcloud compute instance-templates create third-party-template-multinic \
        --region=us-west1 \
        --network-interface subnet=testing-subnet,address="" \
        --network-interface subnet=production-subnet \
        --tags=allow-ssh,allow-health-check,my-network-tag \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --can-ip-forward \
        --metadata=startup-script="$(< config.sh)"
    
  3. 為第三方虛擬設備建立代管執行個體群組。 這個指令會建立在 us-west1 的地區代管執行個體群組,然後自動調度資源。

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

建立負載平衡資源

以下步驟會設定所有內部直通式網路負載平衡器元件,先從健康狀態檢查和後端服務開始,然後再設定前端元件:

  • 健康檢查。在本範例中,HTTP 健康狀態檢查會檢查 HTTP 200 (OK) 回應。詳情請參閱健康狀態檢查一節

  • 後端服務。雖然這個範例的後端服務指定 TCP 通訊協定,但當負載平衡器是路徑的下一個躍點時,Cloud de Confiance 會轉送所有通訊協定 (TCP、UDP 和 ICMP) 的流量。

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

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

主控台

開始設定

  1. 前往 Cloud de Confiance 控制台的「Load balancing」(負載平衡)頁面。

    前往「Load balancing」(負載平衡)

  2. 點選「建立負載平衡器」
  3. 在「負載平衡器類型」部分,選取「網路負載平衡器 (TCP/UDP/SSL)」,然後點選「下一步」
  4. 在「直通或使用 Proxy」部分,選取「直通式負載平衡器」,然後點選「下一步」
  5. 在「公開或內部」部分,選取「內部」,然後點選「下一步」
  6. 按一下「Configure」(設定)

建立第一個負載平衡器

  1. 在「Load Balancer name」(負載平衡器名稱) 欄位中輸入 ilb1
  2. 在「Region」(區域) 清單中選取「us-west1」。
  3. 在「Network」(網路) 清單中選取「testing」。
  4. 按一下「後端設定」,然後執行下列操作:
    1. 在「健康狀態檢查」清單中,按一下「建立健康狀態檢查」,然後輸入下列資訊:
      • Name (名稱):hc-http-80
      • 「Protocol」(通訊協定)HTTP
      • Port (通訊埠):80
      • Proxy protocol (Proxy 通訊協定):NONE
      • 要求/ 請注意,使用 Cloud de Confiance 控制台建立負載平衡器時,系統會啟用全域健康狀態檢查。如要建立區域健康狀態檢查,請使用 gcloud 或 API。
    2. 點選「建立」
    3. 在「New backend」(新增後端) 區段中,選取 third-party-instance-group 執行個體群組,然後按一下「Done」(完成)
    4. 在「Session affinity」(工作階段相依性) 清單中,選取「Client IP」(用戶端 IP)
    5. 繼續操作之前,請先驗證「Backend configuration」(後端設定) 旁是否有藍色勾號。如果沒有,請檢查這個步驟。
  5. 按一下 [Frontend configuration] (前端設定)。在「New Frontend IP and port」(新增的前端 IP 和通訊埠) 區段中,進行以下變更:
    1. Name (名稱):fr-ilb1
    2. Subnetwork (子網路):testing-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」(前端設定) 旁是否有一個藍色勾號。如果沒有,請檢查這個步驟。
  6. 按一下 [Review and finalize] (檢查並完成)。請仔細檢查您的設定。
  7. 點選「建立」

開始設定

  1. 前往 Cloud de Confiance 控制台的「Load balancing」(負載平衡)頁面。

    前往「Load balancing」(負載平衡)

  2. 點選「建立負載平衡器」
  3. 在「負載平衡器類型」部分,選取「網路負載平衡器 (TCP/UDP/SSL)」,然後點選「下一步」
  4. 在「直通或使用 Proxy」部分,選取「直通式負載平衡器」,然後點選「下一步」
  5. 在「公開或內部」部分,選取「內部」,然後點選「下一步」
  6. 按一下「Configure」(設定)

建立第二個負載平衡器

  1. 將「Name」(名稱) 設為 ilb2
  2. 將「區域」設為 us-west1
  3. 將「Network」(網路) 設為 production
  4. 按一下「後端設定」,然後進行以下變更:
    1. 在「Backends」(後端) 之下的「New item」(新增項目) 區段中,選取 third-party-instance-group 執行個體群組,然後按一下「Done」(完成)
    2. 在「Health check」(健康狀態檢查) 中選取 hc-http-80
    3. 在「Session affinity」(工作階段相依性) 部分,選取「Client IP」(用戶端 IP)
    4. 繼續操作之前,請先驗證「Backend configuration」(後端設定) 旁是否有藍色勾號。如果沒有,請檢查這個步驟。
  5. 按一下 [Frontend configuration] (前端設定)。在「New Frontend IP and port」(新增的前端 IP 和通訊埠) 區段中,進行以下變更:
    1. Name (名稱):fr-ilb2
    2. Subnetwork (子網路):production-subnet
    3. 在「Internal IP」(內部 IP) 中,選擇「Reserve a static internal IP address」(保留靜態內部 IP 位址),輸入以下資訊,然後按一下「Reserve」(保留)
      • Name (名稱):ip-ilb2
      • Static IP address (靜態 IP 位址):「Let me choose」(自行選擇)
      • Custom IP address (自訂 IP 位址):10.50.1.99
    4. 「Ports」(通訊埠):選擇「Single」(單個),然後輸入 80 做為「Port number」(通訊埠號碼)。請記住,為負載平衡器選擇的通訊協定和通訊埠,並不限於負載平衡器是路徑的下一個躍點時使用的通訊協定和通訊埠。
    5. 繼續操作之前,請先驗證「Frontend configuration」(前端設定) 旁是否有一個藍色勾號。如果沒有,請檢查這個步驟。
  6. 按一下 [Review and finalize] (檢查並完成)。請仔細檢查您的設定。
  7. 點選「建立」

  8. production 虛擬私有雲網路中設定負載平衡器資源。

gcloud

  1. 建立新的 HTTP 健康狀態檢查,以測試通訊埠 80 上連至 VM 的 TCP 連線。

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

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

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

    gcloud compute forwarding-rules create fr-ilb1 \
        --load-balancing-scheme=internal \
        --ports=80 \
        --network=testing \
        --subnet=testing-subnet \
        --region=us-west1 \
        --backend-service=ilb1 \
        --address=10.30.1.99
    
    gcloud compute forwarding-rules create fr-ilb2 \
        --load-balancing-scheme=internal \
        --ports=80 \
        --network=production \
        --subnet=production-subnet \
        --region=us-west1 \
        --backend-service=ilb2 \
        --address=10.50.1.99
    

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

建立兩個使用下一個躍點負載平衡器的靜態路徑。

主控台

建立第一個路徑

  1. 前往 Cloud de Confiance 控制台的「Routes」(路徑) 頁面。

    前往「Routes」(路徑)

  2. 按一下 [Create route] (建立路徑)

  3. 在路徑「Name」(名稱) 中輸入 ilb-nhop-dest-10-50-1

  4. 選取 testing 網路。

  5. 在「Destination IP range」(目的地 IP 範圍) 輸入 10.50.1.0/24

  6. 在「Instance tags」(執行個體標記) 中輸入 my-network-tag

  7. 對於路徑的「Next hop」(下一個躍點),請選擇「Specify a forwarding rule of internal TCP/UDP load balancer」(指定內部 TCP/UDP 負載平衡器的轉送規則)

    如要將負載平衡器的 IP 位址指定為下一個躍點,請使用 gcloud CLI 或 API。

  8. 指定轉送規則名稱。對於轉送規則名稱,選取 fr-ilb1

  9. 點選「建立」

建立第二條路徑

  1. 按一下 [Create route] (建立路徑)
  2. 在路徑「Name」(名稱) 中輸入 ilb-nhop-dest-10-30-1
  3. 選取 testing 網路。
  4. 在「Destination IP range」(目的地 IP 範圍) 輸入 10.30.1.0/24
  5. 對於路徑的「Next hop」(下一個躍點),請選擇「Specify a forwarding rule of internal TCP/UDP load balancer」(指定內部 TCP/UDP 負載平衡器的轉送規則)

    如要將負載平衡器的 IP 位址指定為下一個躍點,請使用 gcloud CLI 或 API。

  6. 對於轉送規則名稱,選取 fr-ilb2

  7. 點選「建立」

gcloud

建立靜態路徑,將下一個躍點設為每個負載平衡器的轉送規則,並相應設定每個目的地範圍。

對於 --next-hop-ilb 旗標,您可以指定轉送規則名稱或轉送規則 IP 位址。下一個躍點轉送規則 IP 位址可位於包含路徑的相同 VPC 網路,或對等互連的 VPC 網路。詳情請參閱「下一個躍點專案和網路」。

在這個範例中,第一條路徑使用 IP 位址 10.30.1.99,第二條路徑則使用轉送規則名稱 fr-ilb12

您可以選擇在路徑上指定一或多個執行個體標記。如果您在路徑上指定網路標記,路徑可以套用至特定 VM。如果未指定任何網路標記,路徑會套用至 VPC 網路中的所有 VM。在本範例中,路徑會使用 my-network-tag 做為路徑的網路標記。

gcloud compute routes create ilb-nhop-dest-10-50-1 \
    --network=testing \
    --destination-range=10.50.1.0/24 \
    --next-hop-ilb=10.30.1.99 \
    --tags=my-network-tag
gcloud compute routes create ilb-nhop-dest-10-30-1 \
    --network=production \
    --destination-range=10.30.1.0/24 \
    --next-hop-ilb=fr-ilb2 \
    --next-hop-ilb-region=us-west1

建立 testing VM 執行個體

本範例在 testing 虛擬私有雲網路的 testing-subnet (10.30.1.0/24) 中,建立 IP 位址為 10.30.1.100 的 VM 執行個體。

gcloud

  1. 執行下列指令來建立 testing-vm

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

建立 production VM 執行個體

本範例在 production 虛擬私有雲網路的 production-subnet (10.50.1.0/24) 中,建立 IP 位址為 10.50.1.100 的 VM 執行個體。

gcloud

production-vm 可以位於與負載平衡器相同地區的任何區域中,也可以使用該地區中的任何子網路。在本例中,production-vm 位於 us-west1-a 區域。

  1. 執行下列指令來建立 production-vm

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

測試多重 NIC 部署的負載平衡

  1. 確認負載平衡器後端的健康狀態。

    gcloud compute backend-services get-health ilb1 --region us-west1
    
    gcloud compute backend-services get-health ilb2 --region us-west1
    
  2. testing VM 測試連線。

    gcloud compute ssh testing-vm --zone=us-west1-a
    
    curl http://10.50.1.99
    
    exit
    
  3. production VM 測試連線。

    gcloud compute ssh production-vm --zone=us-west1-a
    
    curl http://10.30.1.99
    
    exit
    

啟用對稱雜湊

計算對應至後端執行個體的雜湊時,Cloud de Confiance 會忽略 IP 位址和通訊埠的方向。無論 TCP/UDP 封包的來源方向為何,計算出的連線雜湊值都相同。這就是所謂的「對稱雜湊」

如要在現有的內部直通式網路負載平衡器上啟用這項雜湊行為,您必須重新建立轉送規則和下一個躍點路徑。

詳情請參閱「對稱雜湊」。

刪除並重新建立轉送規則

主控台

刪除轉送規則並建立新規則

  1. 前往 Cloud de Confiance 控制台的「Load balancing」(負載平衡)頁面。

    前往「Load balancing」(負載平衡)

  2. 按一下 be-ilb 負載平衡器,然後按一下「編輯」

  3. 按一下「前端設定」

  4. 將指標懸停在轉寄規則上,然後按一下「刪除」即可移除規則。

  5. 按一下 [Add frontend IP and port] (新增前端 IP 和通訊埠)

  6. 在「 New Frontend IP and port」(新的前端 IP 和通訊埠) 區段中,進行下列變更:

    1. Name (名稱):FORWARDING_RULE_NAME
    2. Subnetwork (子網路):SUBNET_NAME
    3. 從「Internal IP」(內部 IP) 選取 IP_ADDRESS
    4. 通訊埠PORT_NUMBERALL
    5. 按一下 [完成]
    6. 繼續操作之前,請先驗證「Frontend configuration」(前端設定) 旁是否有一個藍色勾號。如果沒有,請檢查這個步驟。
  7. 按一下 [Review and finalize] (檢查並完成)。請仔細檢查您的設定。

  8. 點選「建立」

gcloud

  1. 刪除現有的轉送規則。

    gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \
        --region=REGION
    
  2. 使用相同名稱建立替代轉送規則。

    gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
        --load-balancing-scheme=internal \
        --ports=PORT_NUMBER or `ALL` \
        --network=NETWORK_NAME \
        --subnet=SUBNET_NAME \
        --region=REGION \
        --backend-service=BACKEND_SERVICE_NAME \
        --address=IP_ADDRESS
    

不需要 SNAT 的情況

如上例所示,如果符合下列所有條件,就不需要來源網路位址轉譯 (SNAT):

  • 內部直通式網路負載平衡器的轉送規則是在 2021 年 6 月 22 日當天或之後建立。
  • 參考轉送規則的靜態路徑是在 2021 年 6 月 22 日當天或之後建立。
  • 內部直通式網路負載平衡器的後端服務不會使用 NONE 工作階段親和性設定。

如要將現有的下一個躍點內部直通式網路負載平衡器路徑轉換為使用對稱雜湊,請按照下列步驟操作:

  • 確認內部直通式網路負載平衡器的後端服務未使用NONE工作階段親和性設定

  • 建立參照相同後端服務的替代轉送規則。替代轉送規則使用不同的 IP 位址。

  • 建立參照新轉送規則的替代靜態路徑。 確認這個替代路徑的優先順序高於現有路徑。

  • 刪除優先順序較低的現有路徑 (參照先前的轉送規則),然後刪除先前的轉送規則。

清除所用資源

  1. 在負載平衡器設定中,從後端服務移除後端。

    gcloud compute backend-services remove-backend ilb1 \
        --instance-group=third-party-instance-group \
        --instance-group-region=us-west1 \
        --region=us-west1
    
    gcloud compute backend-services remove-backend ilb2 \
        --instance-group=third-party-instance-group \
        --instance-group-region=us-west1 \
        --region=us-west1
    
  2. 刪除路徑。

    gcloud compute routes delete ilb-nhop-dest-10-50-1
    
    gcloud compute routes delete ilb-nhop-dest-10-30-1
    
  3. 在負載平衡器設定中,刪除轉送規則。

    gcloud compute forwarding-rules delete fr-ilb1 \
        --region=us-west1
    
    gcloud compute forwarding-rules delete fr-ilb2 \
        --region=us-west1
    
  4. 在負載平衡器設定中,刪除後端服務。

    gcloud compute backend-services delete ilb1 \
        --region=us-west1
    
    gcloud compute backend-services delete ilb2 \
        --region=us-west1
    
  5. 在負載平衡器設定中,刪除健康狀態檢查。

    gcloud compute health-checks delete hc-http-80 \
        --region=us-west1
    

    如果您使用 Cloud de Confiance 控制台,健康狀態檢查會是全域檢查。 因此,指令如下:

    gcloud compute health-checks delete hc-http-80 \
         --global
    
  6. 刪除代管執行個體群組。

    gcloud compute instance-groups managed delete third-party-instance-group \
        --region=us-west1
    
  7. 刪除執行個體範本。

    gcloud compute instance-templates delete third-party-template
    
    gcloud compute instance-templates delete third-party-template-multinic
    
  8. 刪除測試和正式版執行個體。

    gcloud compute instances delete testing-vm \
        --zone=us-west1-a
    
    gcloud compute instances delete production-vm \
        --zone=us-west1-a
    

後續步驟