openshift - 什么组件正在解析 OpenShift 路由器中的域
问题描述
我正在使用 OpenShift 路由器,默认情况下,路由器基于 haproxy。当我创建 aa.bb.cc 之类的域时,我可以通过此路由访问我的服务。
我看到路由器(haproxy)pod 正在运行我的集群,我的问题是,当我 curl http://aa.bb.cc时,域 aa.bb.cc 如何到达 haproxy pod?什么组件正在解析域 aa.bb.cc?
解决方案
那将是包含通配符域的 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。
推荐阅读
- python - Pandas df.merge 意外的排序行为
- wordpress - Easy Digital 下载结帐页面无法以访客身份查看
- c# - 创建一个弹出窗口的正确方法是什么,该窗口包含一个仅在第一次加载到 WPF 项目时才执行的方法?
- java - Maven 在构建时出错=无法识别 Java 路径
- python - 如何获取多索引数据帧第二级的最后 10 行?
- python - PANDAS & glob - Excel 文件格式无法确定,必须手动指定引擎
- html - 如何使边缘粘在屏幕上?
- javascript - 节点服务器 - 有没有办法每 x 时间运行一次?
- symfony - 如何在 Symfony 中测试竞态条件?
- reactjs - 为什么我不能在 next/image 中将字符串传递给 src?