登錄 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.2IP。
您可以執行下列指令,以查看叢集裡 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 建立子網域。
- 您最多可以登錄 128 個子網域。 開立支援案例,即可要求提高這項限制。
- 在單一區域叢集裡建立應用程式的 NLB 或在多區域叢集的每個區域中建立 NLB。
若要為一個以上的 NLB IP 位址建立子網域,請執行下列動作:
-
取得 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 -
建立 DNS 子網域來登錄 IP。 若要指定多個 IP 位址,請使用多個
--ip選項。ibmcloud oc nlb-dns create classic --cluster <cluster_name_or_id> --ip <NLB_IP> --ip <NLB2_IP> -
驗證已建立子網域。
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> -
選用項目: 設定自訂網域以指向您在前一個步驟中建立的 IBM提供的子網域。
- 透過與您的網域服務 (DNS) 提供者合作註冊自訂網域。
- 使用 IBM Cloud DNS 註冊自訂網域。
您也可以在負載平衡器配置中使用
service.kubernetes.io/ibm-load-balancer-cloud-provider-dns-name註解來註冊自訂網域。 -
透過將 IBM 提供的子網域設定為規範名稱記錄 (CNAME),為您的自訂網域定義一個別名。
-
在 Web 瀏覽器中,輸入 URL 以透過您建立的子網域來存取應用程式。
接下來,您可以藉由建立性能監視器來啟用子網域的性能檢查。
瞭解子網域格式
NLB 的子網域格式為 <cluster_name>-<globally_unique_account_HASH>-0001.<region>.containers.appdomain.cloud。
例如,您為 NLB 建立的子網域看起來可能像這樣:mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud。 下表說明子網域的每個元件。
| 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。
-
取得子網域的名稱。 在輸出中,請注意,主機有一個監視器狀態為
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 -
建立子網域的性能檢查監視器。 若未指定配置參數,則會使用預設值。
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 -
驗證已使用正確的設定配置性能檢查監視器。
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 -
檢視子網域的性能檢查狀態。
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>