登錄 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.1、2.2.2.2 及 3.3.3.3,則子網域的正常作業 DNS 查閱會傳回所有 3 個 IP,而用戶端會隨機存取其中之一。 如果由於區域故障等任何原因而導致無法使用具有 IP 位址 3.3.3.3 的 NLB,則該 IP 的性能檢查會失敗、監視器會從子網域移除失敗的 IP,而 DNS 查閱只會傳回性能健全的 1.1.1.1 和 2.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-IP 是 168.2.4.5 和 88.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>
    健康檢查應使用的協定:HTTP、HTTPS 或 TCP。 預設值:HTTP。
    --path <path>
    當 type 為 HTTPS 時:用於執行健康檢查的端點路徑。 預設值: /
    --timeout <timeout>
    逾時(以秒為單位),在此時間後 IP 會被視為無法連接。 性能檢查會等待 interval 參數中指定的秒數,然後重試連接該 IP。 該值必須是介於 1 至 60 之間的整數。 預設值: 5
    --interval <interval>
    每次性能檢查之間的間隔(以秒為單位)。 短間隔可能會改善失效接手時間,但會增加 IP 的負載。 該數值必須是介於 60 至 300 之間的整數。 預設值:60。
    --port <port>
    要連接至以進行性能檢查的埠號。 當 type 的值為 TCP 時,此參數為必填項目。 當 type 的網址為 HTTP 或 HTTPS 時,僅當您為 HTTP 使用 80 以外的埠號,或為 HTTPS 使用 443 以外的埠號時,才需定義該埠號。 TCP 的預設值:0。 HTTP 的預設值 : 80。 HTTPS 的預設值:443。
    --header <header>
    當 type 設定為 HTTP 或 HTTPS`` 時,此設定為必填: HTTP 健康檢查的請求標頭僅限於 Host 標頭。 此標誌僅適用於 HTTP 或 HTTPS 類型。 此旗標接受以下格式的值:--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>