登錄 NLB 的 DNS 子網域

經典基礎架構

此內容專指經典叢集中的 NLB。 對於 VPC 叢集,請參閱向 DNS 子網域登錄 VPC 負載平衡器主機名稱

設定網路負載平衡器 (NLB) 之後,即可藉由建立子網域來建立 NLB IP 的 DNS 項目。 您也可以設定 TCP/HTTP(S) 監視器,以檢查受每個子網域保護之 NLB IP 位址的性能。

子網域
當您在單一區域叢集或多區域叢集裡建立公用 NLB 時,可以藉由建立 NLB IP 位址的子網域來將應用程式公開至網際網路。 此外,IBM Cloud 也會負責為您產生並維護子網域的萬用字元 SSL 憑證。 在多區域叢集裡,您可以建立子網域,並將每個區域中的 NLB IP 位址新增至該子網域 DNS 項目。 例如,如果您已在美國南部的三個區域中部署應用程式的 NLB,則可以針對三個 NLB IP 位址建立子網域 mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud。 當使用者存取您的應用程式子網域時,用戶端會隨機存取其中一個 IP,並將要求傳送至該 NLB。

目前無法為私有 NLB 建立子網域。

使用 HTTP 監控時,監控工作的預設使用者代理為 NS1 HTTP Monitoring Job

性能檢查監視器
為受單一子網域保護的 NLB IP 位址啟用性能檢查,以判定它們是否可用。 當您啟用子網域的監視器時,監視器會檢查每個 NLB IP 的性能,並根據這些性能檢查來更新 DNS 查閱結果。 例如,如果您的 NLB 具有 IP 位址 1.1.1.12.2.2.23.3.3.3,則子網域的正常作業 DNS 查閱會傳回所有 3 個 IP,而用戶端會隨機存取其中之一。 如果由於區域故障等任何原因而導致無法使用具有 IP 位址 3.3.3.3 的 NLB,則該 IP 的性能檢查會失敗、監視器會從子網域移除失敗的 IP,而 DNS 查閱只會傳回性能健全的 1.1.1.12.2.2.2 IP。

您可以執行下列指令,以查看叢集裡 NLB IP 的所有已登錄子網域。

ibmcloud oc nlb-dns ls --cluster CLUSTER_NAME_OR_ID

DNS 微服務更新是非同步的,可能需要幾分鐘才能套用。 請注意,如果您執行 ibmcloud oc nlb-dns 指令並收到 200 確認訊息,則可能仍需要等待實作變更。 若要檢查子網域的狀態,請執行 ibmcloud oc nlb-dns ls,並在輸出中尋找 Status 直欄。

向 DNS 子網域登錄 NLB IP

藉由建立網路負載平衡器 (NLB) IP 位址的子網域,來將應用程式公開至公用網際網路。

開始之前:

若要為一個以上的 NLB IP 位址建立子網域,請執行下列動作:

  1. 取得 NLB 的 EXTERNAL-IP 位址。 如果您在多區域叢集的每個區域中都有 NLB 會公開一個應用程式,則請取得每個 NLB 的 IP。

    oc get svc
    

    在下列輸出範例中,NLB EXTERNAL-IP168.2.4.588.2.4.5

    NAME             TYPE           CLUSTER-IP       EXTERNAL-IP       PORT(S)                AGE
    lb-myapp-dal10   LoadBalancer   172.21.xxx.xxx   168.2.4.5         1883:30303/TCP         6d
    lb-myapp-dal12   LoadBalancer   172.21.xxx.xxx   88.2.4.5          1883:31303/TCP         6d
    
  2. 建立 DNS 子網域來登錄 IP。 若要指定多個 IP 位址,請使用多個 --ip 選項。

    ibmcloud oc nlb-dns create classic --cluster <cluster_name_or_id> --ip <NLB_IP> --ip <NLB2_IP>
    
  3. 驗證已建立子網域。

    ibmcloud oc nlb-dns ls --cluster <cluster_name_or_id>
    

    輸出範例

    Hostname                                                                                IP(s)              Health Monitor   SSL Cert Status           SSL Cert Secret Name
    mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud     ["168.2.4.5"]      None             created                   <certificate>
    
  4. 選用項目: 設定自訂網域以指向您在前一個步驟中建立的 IBM提供的子網域。

    • 透過與您的網域服務 (DNS) 提供者合作註冊自訂網域。
    • 使用 IBM Cloud DNS 註冊自訂網域。

    您也可以在負載平衡器配置中使用 service.kubernetes.io/ibm-load-balancer-cloud-provider-dns-name 註解來註冊自訂網域。

  5. 透過將 IBM 提供的子網域設定為規範名稱記錄 (CNAME),為您的自訂網域定義一個別名。

  6. 在 Web 瀏覽器中,輸入 URL 以透過您建立的子網域來存取應用程式。

接下來,您可以藉由建立性能監視器來啟用子網域的性能檢查

瞭解子網域格式

NLB 的子網域格式為 <cluster_name>-<globally_unique_account_HASH>-0001.<region>.containers.appdomain.cloud

例如,您為 NLB 建立的子網域看起來可能像這樣:mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud。 下表說明子網域的每個元件。

了解 NLB 子網域格式
NLB 子網域元件 說明
* 依預設,叢集會登錄子網域的萬用字元。
<cluster_name> 叢集的名稱。 -如果叢集名稱等於或小於 26 個字元,且叢集名稱在此區域中是唯一的,則會併入整個叢集名稱,且不會修改: myclustername
-如果叢集名稱等於或小於 26 個字元,且在此區域中有相同名稱的現有叢集,則會併入整個叢集名稱,並新增一個含有六個隨機字元的橫線: myclustername-ABC123
-如果叢集名稱等於或大於 26 個字元,且叢集名稱在此區域中是唯一的, 只會使用叢集名稱的前 24 個字元: myveryverylongclusternam
-如果叢集名稱為 26 個字元或以上,且此區域中存在相同名稱的現有叢集,則只會使用叢集名稱的前 17 個字元,並新增具有六個隨機字元的橫線: myveryverylongclu-ABC123
<globally_unique_account_HASH> 已為 IBM Cloud 帳戶建立廣域唯一的 HASH。 您在帳戶的叢集裡針對 NLB 建立的所有子網域都會使用這個廣域唯一 HASH。
0001 作為您建立的每一個子網域的計數器。
<region> 在其中建立叢集的地區。
containers.appdomain.cloud Red Hat OpenShift on IBM Cloud 子網域的子網域。

藉由建立性能監視器來啟用子網域的性能檢查

為受單一子網域保護的 NLB IP 位址啟用性能檢查,以判定它們是否可用。

如果使用 Calico pre-DNAT 網路政策VPC 安全群組VPC 存取控制清單(ACL) 或其他自訂防火牆解決方案來封鎖傳入 Ingress 或路由器服務的流量,則必須允許從健康監控端點傳入的流量。 如需詳細資訊,請參閱 有關允許輸入子網域監控的網路流量的說明文件

開始之前,請使用 DNS 子網域登錄 NLB IP

  1. 取得子網域的名稱。 在輸出中,請注意,主機有一個監視器狀態Unconfigured

    ibmcloud oc nlb-dns monitor ls --cluster <cluster_name_or_id>
    

    輸出範例

    Hostname                                                                                   Status         Type    Port   Path
    mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud        Unconfigured   N/A     0      N/A
    
  2. 建立子網域的性能檢查監視器。 若未指定配置參數,則會使用預設值。

    ibmcloud oc nlb-dns monitor configure --cluster <cluster_name_or_id> --nlb-host <host_name> --enable --type <type> --path <path> --timeout <timeout> --interval <interval> --port <port> --header <header>
    
    -c, --cluster <cluster_name_or_ID>
    必要項目:子網域登錄所在叢集的名稱或 ID。
    --nlb-host <host_name>
    必要項目:要啟用其性能檢查監視器的子網域。
    --enable
    若要為子網域啟用新的狀態檢查監控器,請包含此選項。
    --type <type>
    健康檢查應使用的協定:HTTPHTTPSTCP。 預設值:HTTP
    --path <path>
    typeHTTPS 時:用於執行健康檢查的端點路徑。 預設值: /
    --timeout <timeout>
    逾時(以秒為單位),在此時間後 IP 會被視為無法連接。 性能檢查會等待 interval 參數中指定的秒數,然後重試連接該 IP。 該值必須是介於 1 至 60 之間的整數。 預設值: 5
    --interval <interval>
    每次性能檢查之間的間隔(以秒為單位)。 短間隔可能會改善失效接手時間,但會增加 IP 的負載。 該數值必須是介於 60 至 300 之間的整數。 預設值:60
    --port <port>
    要連接至以進行性能檢查的埠號。 當 type 的值為 TCP 時,此參數為必填項目。 當 type 的網址為 HTTPHTTPS 時,僅當您為 HTTP 使用 80 以外的埠號,或為 HTTPS 使用 443 以外的埠號時,才需定義該埠號。 TCP 的預設值:0。 HTTP 的預設值 : 80。 HTTPS 的預設值:443
    --header <header>
    type 設定為 HTTP HTTPS`` 時,此設定為必填: HTTP 健康檢查的請求標頭僅限於 Host 標頭。 此標誌僅適用於 HTTPHTTPS 類型。 此旗標接受以下格式的值:--header Header-Name=value。 更新監視器時,現有標頭會取代為您指定的標頭。 若要刪除所有現有的標頭,請將標誌設定為空值:--header ""

    範例指令

    ibmcloud oc nlb-dns monitor configure --cluster mycluster --nlb-host mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud --enable --type HTTPS --path /alive --timeout 5 --interval 60 --header Host=example.com
    
  3. 驗證已使用正確的設定配置性能檢查監視器。

    ibmcloud oc nlb-dns monitor get --cluster <cluster_name_or_id> --nlb-host <host_name>
    

    輸出範例

    Status:           enabled
    Type:             https
    Method:           GET
    Path:             /alive
    Expected Codes:   2xx
    Port:             443
    Timeout:          5
    Interval:         60
    Headers:
    Host:      example.com
    
  4. 檢視子網域的性能檢查狀態。

    ibmcloud oc nlb-dns monitor ls --cluster <cluster_name_or_id>
    

    輸出範例

    Hostname                                                                                Status      Type    Port   Path
    mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud     enabled     https   443    /alive
    

從子網域更新及移除 IP 和監視器

您可以在已產生的子網域新增及移除 NLB IP 位址。 您也可以視需要停用及啟用子網域的性能檢查監視器。

NLB IP

如果您後來在叢集的其他區域中新增更多的 NLB 來公開相同的應用程式,則可以將 NLB IP 新增至現有的子網域。

ibmcloud oc nlb-dns add --cluster <cluster_name_or_id> --ip <NLB_IP> --ip <NLB2_IP> ... --nlb-host <host_name>

您也可以移除不想再向子網域登錄之 NLB 的 IP 位址。 請注意,您必須針對要移除的每個 IP 位址執行下列指令。 如果您移除子網域中的所有 IP,則子網域仍然存在,但沒有相關聯的 IP。

ibmcloud oc nlb-dns rm classic --cluster <cluster_name_or_id> --ip <ip> --nlb-host <host_name>

性能檢查監視器

如果您需要變更性能監視器配置,則可以變更特定設定。 請僅列出您想要變更的設定選項。

ibmcloud oc nlb-dns monitor configure --cluster <cluster_name_or_id> --nlb-host <host_name> --type <type> --path <path> --timeout <timeout> --interval <interval> --port <port> --header <header>

您可以執行下列指令,隨時停用子網域的性能檢查監視器:

ibmcloud oc nlb-dns monitor disable --cluster <cluster_name_or_id> --nlb-host <host_name>

若要重新啟用子網域的監視器,請執行下列指令:

ibmcloud oc nlb-dns monitor enable --cluster <cluster_name_or_id> --nlb-host <host_name>