0

我正在使用 OpenShift 路由器,默认情况下,路由器基于 haproxy。当我创建 aa.bb.cc 之类的域时,我可以通过此路由访问我的服务。

我看到路由器(haproxy)pod 正在运行我的集群,我的问题是,当我 curl http://aa.bb.cc时,域 aa.bb.cc 如何到达 haproxy pod?什么组件正在解析域 aa.bb.cc?

4

1 回答 1

1

那将是包含通配符域的 DNS 服务器。我们的流程通常如下:

 *.apps.example.com
                                       +
+-----------------+                    |
|   DNS Server    |                    |
+-----+-----------+                    |       OpenShift Cluster
      ^    |                           |
      |    |                           |
      |    | LB IP                     |
      |    |                           |
      |    v                           |
    +-+----+--+      +--------------+  | +---------------+                +----------+
    |         |      |              |  | |               |                |          |
    | Clients +------> Loadbalancer +-----> HAProxy      +--------------->+ App Pods |
    |         |      |              |  | |               |                |          |
    +---------+      +--------------+  | +---------------+                +----------+
                                       |
                                       +

您的客户端将使用其常规 DNS 服务器来解析应用程序域。通常,在 OpenShift 集群上运行的所有应用程序路由都有一个通配符 DNS 条目(例如*.apps.example.com)。因此,当您的客户端请求时myapp.apps.example.com,将返回 OpenShift 集群的负载均衡器的 IP。

负载均衡器反过来知道OpenShift 路由器正在运行的所有节点。因此负载均衡器会将请求转发到这些节点中的任何一个。

如您所述,运行 HAProxy 的OpenShift 路由器随后会查看HTTP 主机标头或 TLS 连接的SNI 扩展,以检查连接需要转发到的位置。

HAProxy 具有从集群中的路由/服务派生的动态配置,然后将您的请求转发到您的应用程序 Pod

于 2021-01-20T12:01:05.817 回答