通信矩阵
创建时间:2023-10-31 最近修改时间:2024-06-26
#1. 通信矩阵
在 K8s 部署模式中,集群内组件全部通过 service 通信,依托于 K8s 网络,无需额外配置网络互通。
- 200xx 通常为组件自身端口,如使用 hostNetwork 则可直接通信
- 30xxx 通常为 nodePort 暴露端口,在 K8s 环境中通常支持修改
#2. 控制器与外部通信
| 客户端 | 客户端进程 | 服务端 | 服务端进程 | 协议 | 端口号 | 功能 |
|---|---|---|---|---|---|---|
| 操作浏览器 | -- | 主区域控制器 | openresty | TCP | 80/30080 | DeepFLow Web 界面访问、API 调用 |
| 操作浏览器 | -- | 主区域控制器 | openresty | TCP | 443/30443 | DeepFLow Web 界面访问、API 调用 |
| 操作PC | -- | 主区域控制器 | sshd | TCP | 22(按实际情况) | SSH 登录 DeepFlow 节点,执行部署、运维、更新操作 |
| 主备控制器 | postman | 邮件服务器 | -- | 按实际情况 | 邮件发送告警、报表 | |
| 控制器 | deepflow-server | 本区域云平台服务器 | -- | TCP | 按实际情况 | 云平台对接,资源同步 |
| 控制器 | chronyd | 外部NTP服务 | -- | UDP | 123 | K8s计算节点和外部NTP服务同步 |
注意:当不同区域的外部NTP服务IP不相同时,若NTP服务的IP是固定的,可以在不同区域的控制器上配置到同一个域名(例如 external.ntp-server.com)的不同解析,实现分区同步。
#3. 多区域通信
#3.1 主区域访问从区域
| 客户端 | 客户端进程 | 服务端 | 服务端进程 | 协议 | 端口号 | 功能 |
|---|---|---|---|---|---|---|
| 主区域控制器 | -- | 从区域控制器 | deepflow-server | TCP | 30417 | 健康检查、获取采集器网卡信息、策略和采集器配置的实时刷新 |
| 主区域控制器 | deepflow-server | 从区域控制器 | deepflow-server | TCP | 30035 | 云平台密钥加密 |
| 主区域控制器 | -- | 从区域控制器 | deepflow-server | TCP | 30416 | 查询数据 |
| 主区域控制器 | deepflow-server | 从区域控制器 | deepflow-server | TCP | 30106 | 执行数据源新增和修改 |
部分升级环境,如 deepflow-server 使用 hostNetwork,且只放通了 20416 端口,可自行修改主从区域负载均衡器配置中的端口。
#3.2 从区域访问主区域
| 客户端 | 客户端进程 | 服务端 | 服务端进程 | 协议 | 端口号 | 功能 |
|---|---|---|---|---|---|---|
| 从区域控制器 | deepflow-server | 主区域控制器 | deepflow-server | TCP | 30417 | 获取主区域 master 信息 |
| 从区域控制器 | deepflow-server | 主区域控制器 | deepflow-server | TCP | 30035 | 申请资源ID |
| 从区域控制器 | -- | 主区域控制器 | mysql | TCP | 30130 | 访问 DeepFlow 数据库 |
| 从区域控制器 | -- | 主区域控制器 | fpermit | TCP | 30823 | 访问主区域权限认证 |
#4. 采集器与控制器通信
6.1.1 之前 deepflow-server 默认部署为 hostNetwork 模式,所以用 20033 端口通信,之后默认不用 hostNetwork ,固使用 nodePort 30035 端口通信
#4.1 采集器与所在区域的控制器、数据节点通信
| 客户端 | 客户端进程 | 服务端 | 服务端进程 | 协议 | 端口号 | 功能 |
|---|---|---|---|---|---|---|
| 采集器 | deepflow-agent | 控制器 | deepflow-server | TCP | 20033/30033 | 采集器发送自身监控数据和日志到关联控制器上,监控数据最终存储于控制器的 Clickhouse 中 |
| 采集器 | deepflow-agent | 控制器 | deepflow-server | TCP | 20035/30035, 20135/30135 | 采集器向控制器 deepflow-server 请求策略、远程升级、请求chronyd时间、请求Genesis资源同步。二选一,明文/SSL通信 |
| 采集器 | deepflow-agent | 数据节点 | deepflow-server | TCP/UDP | 20033/30033 | 发送指标数据、流量日志、PCAP,用于全景图流量搜索、流量日志、流量下载。TCP/UDP二选一 |
| 控制器 | deepflow-agent-ctl | 采集器 | deepflow-agent | UDP | 20035/30035 | 采集器向控制器发送信标以便于反向使用 deepflow-agent-ctl 获取debug信息和profile |
上述 deepflow-agent-ctl、go、wget、curl可在控制器上安装,用于对采集器的功能和性能问题进行排查。
#4.2 分发点
| 客户端 | 客户端进程 | 服务端 | 服务端进程 | 协议 | 端口号 | 功能 |
|---|---|---|---|---|---|---|
| 采集器 | deepflow-agent | 分发点 | -- | UDP | 4789 | 包分发,VXLAN隧道 |
| 采集器 | deepflow-agent | 分发点 | -- | GRE | -- | 包分发,ERSPAN隧道 |
| 采集器 | deepflow-agent | 采集器 | river, rosen | UDP | 4789 | 仅隧道卸载模式的采集器,用于接收分发流量、卸载VXLAN |
#5. 仅发生在一个K8s集群内部的通信
全部使用 serivce 互相通信,同一 K8s 集群内无需额外配置防火墙
| 节点类型 | 服务端进程 | 协议 | 端口号 | 功能 |
|---|---|---|---|---|
| 控制器 | fauth | TCP | 20822 | 授权管理 |
| 控制器 | fpermit | TCP | 20823 | 权限认证 |
| 控制器 | fuser | TCP | 20824 | 用户管理 |
| 控制器 | df-web-service | TCP | 20825 | |
| 控制器 | rabbitmq | TCP | 4369 | |
| 控制器 | rabbitmq | TCP | 20020 | |
| 控制器 | rabbitmq | TCP | 20001 | |
| 控制器 | redis | TCP | 6379 | |
| 控制器 | talker | TCP | 20013 | 云平台资源API |
| 控制器 | acl-controller | TCP | 20408 | 策略API |
| 控制器 | statistics | TCP | 20404 | 全景图流量搜索API |
| 控制器、区域主节点 | grafana-server | TCP | 20060 | 展示DeepFlow性能监控数据 |
| 控制器 | report | TCP | 20400 | 报表API |
| 控制器 | alarm | TCP | 20401 | 告警API |
| 控制器 | diagnose | TCP | 20407 | 全景图虚拟网络诊断API |
| 控制器 | pcap | TCP | 20409 | PCAP下载API |
| 控制器 | warrant | TCP | 20413 | 授权API |
| 控制器 | monitor | TCP | 20415 | 记录资源事件,提供资源事件API |
| 数据节点 | deepflow-server | TCP | 9526 | 性能故障排查,go profile |
| 数据节点 | clickhouse | TCP | 8123,8124 | 自身性能监控,供telegraf读取 |