通信矩阵

创建时间: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读取