注册 NLB 的 DNS 子域
经典基础设施
此内容仅适用于经典集群中的 NLB。 对于 VPC 集群,请参阅向 DNS 子域注册 VPC 负载均衡器主机名。
设置网络负载均衡器 (NLB) 后,可以通过创建子域来为 NLB IP 创建 DNS 条目。 您还可以设置 TCP/HTTP(S) 监视器,以对每个子域后面的 NLB IP 地址执行运行状况检查。
- 子域
- 在单专区或多专区集群中创建公共 NLB 时,可以通过为 NLB IP 地址创建子域,向因特网公开应用程序。 此外,IBM Cloud 还负责为子域生成和维护通配符 SSL 证书。 在多专区集群中,可以创建子域,并将每个专区中的 NLB IP 地址添加到该子域 DNS 条目。 例如,如果为美国南部 3 个专区中的应用程序部署了 NLB,那么可为这 3 个 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,客户机会随机访问其中 1 个 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 个字符,并且此区域中存在同名的现有集群,那么将包括整个集群名称,并添加包含 6 个随机字符的短划线: myclustername-ABC123。-如果集群名称不超过 26 个字符,并且集群名称在此区域中是唯一的, 仅使用集群名称的前 24 个字符: myveryverylongclusternam。-如果集群名称为 26 个或更多字符,并且此区域中存在同名的现有集群,那么将仅使用集群名称的前 17 个字符,并添加包含 6 个随机字符的短划线: 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) 或其他自定义防火墙解决方案来阻止输入端或路由器服务的传入流量,则必须允许来自健康监控端点的传入流量。 如需了解更多信息,请参阅 有关允许输入网络流量用于输入子域监控的文档。
开始之前,请向 DNS 子域注册 NLB IP。
-
获取子域的名称。 在输出中,请注意,主机的监视 Status 为
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>- 必需:向其注册子域的集群的名称或标识。
--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>