5.4. 可用的路由器插件
路由器可以分配给节点,以控制 OpenShift Container Platform 集群中的流量。OpenShift Container Platform 使用 HAProxy 作为默认路由器,但选项可用。
5.4.1. HAProxy 模板路由器
HAProxy 模板路由器实施是模板路由器插件的参考实施。它使用 openshift3/ose-haproxy-router 存储库运行 HAProxy 实例以及模板路由器插件。
模板路由器有两个组件:
- 监视端点和路由的打包程序,并基于更改导致 HAProxy 重新加载
- 基于路由和端点构建 HAProxy 配置文件的控制器
HAProxy 路由器使用版本 1.8.1。
控制器和 HAProxy 存储在由部署配置管理的 pod 中。oc adm router
命令自动设置路由器的过程。
控制器监控路由和端点是否有变化,以及 HAProxy 的健康状况。当检测到更改时,它会构建一个新的 haproxy-config 文件并重启 HAProxy。haproxy-config 文件基于路由器的模板文件和 OpenShift Container Platform 的信息构建。
HAProxy 模板文件可以根据需要自定义,以支持 OpenShift Container Platform 当前不支持的功能。HAProxy 手册 描述了 HAProxy 支持的所有功能。
下图显示了如何通过插件处理 master 的数据,最后进入 HAProxy 配置中:
图 5.4. HAProxy 路由器数据流
HAProxy 模板路由器指标
HAProxy 路由器以 Prometheus 格式 公开或发布指标,供外部指标收集和聚合系统(如 Prometheus, statsd)消耗。路由器可以被配置为提供 HAProxy CSV 格式 指标,或者根本不提供路由器指标。
指标从路由器控制器以及 HAProxy 每 5 秒从 HAProxy 收集。当路由器部署并随着时间增加时,路由器指标计数器从零开始。每次重新加载 haproxy 时,HAProxy 指标计数器都会重新设置为零。路由器收集每个 frontend、后端和服务器的 HAProxy 统计信息。为减少资源使用超过 500 台服务器时,将报告后端而非服务器,因为后端可以有多个服务器。
统计信息是 可用 HAProxy 统计 的子集。
以下 HAProxy 指标会定期收集,并转换为 Prometheus 格式。对于每个前端,都会收集"F"计数器。当为每个后端收集计数器并为每个服务器收集"S"服务器计数器时。否则,会为每个后端收集"B"计数器,并且不收集服务器计数器。
如需更多信息,请参阅 路由器环境变量。
在下表中:
栏 1 - HAProxy CSV 统计中的索引
列 2
F | 前端指标 |
b | 如果因为 Server Threshold 没有显示服务器指标时的后端指标, |
B | 显示服务器指标时的后端指标 |
S | 服务器指标. |
列 3 - 计数器
列 4 - Counter description
索引 | 使用方法 | 计数 | 描述 |
2 | bBS | current_queue | 当前未分配给任何服务器的已排队请求数量。 |
4 | FbS | current_sessions | 当前活跃会话数量。 |
5 | FbS | max_sessions | 观察到的活跃会话数量上限。 |
7 | FbBS | connections_total | 连接总数。 |
8 | FbS | bytes_in_total | 当前传入字节总数. |
9 | FbS | bytes_out_total | 传出字节的当前总数。 |
13 | bS | connection_errors_total | 连接错误总数。 |
14 | bS | response_errors_total | 响应错误总数。 |
17 | bBS | up | 后端的当前状态(1 = UP,0 = DOWN)。 |
21 | S | check_failures_total | 失败健康检查的总数。 |
24 | S | downtime_seconds_total | 总停机时间(以秒为单位), nil), |
33 | FbS | current_session_rate | 当前每秒的会话数量已超过秒。 |
35 | FbS | max_session_rate | 每秒观察到的会话数量上限。 |
40 | FbS | http_responses_total | HTTP 响应总数, 代码 2xx |
43 | FbS | http_responses_total | HTTP 响应总数, 代码 5xx |
60 | bS | http_average_response_latency_milliseconds | 最新的 1024 请求(以毫秒为单位)。 |
路由器控制器提取下列项目:它们只能通过 Prometheus 格式指标使用。
名称 | 描述 |
template_router_reload_seconds | 测量重新加载路由器的时间(以秒为单位)。 |
template_router_write_config_seconds | 测量将路由器配置写入磁盘的时间(以秒为单位)。 |
haproxy_exporter_up | 是 haproxy 成功的最后一个提取。 |
haproxy_exporter_csv_parse_failures | 解析 CSV 时的错误数。 |
haproxy_exporter_scrape_interval | 允许其他提取前的时间(以秒为单位)与数据大小成比例。 |
haproxy_exporter_server_threshold | 跟踪的服务器数量和当前的阈值。 |
haproxy_exporter_total_scrapes | 当前的 HAProxy 提取总数。 |
http_request_duration_microseconds | HTTP 请求延迟(微秒)。 |
http_request_size_bytes | HTTP 请求大小(以字节为单位)。 |
http_response_size_bytes | HTTP 响应大小(以字节为单位)。 |
openshift_build_info | 带有由 OpenShift 构建的 main、min、git commit & git version 标签的恒定"1"值的指标。 |
ssh_tunnel_open_count | SSH 隧道总数打开的尝试计数器 |
ssh_tunnel_open_fail_count | SSH 隧道失败的打开尝试计数器 |