Apache Flink 所有通信底层均基于TCP,仅REST/WebUI封装了HTTP/HTTPS应用层协议;分为外部对外接口、集群内部 TCP 私有接口、扩展网关接口三大类,仅 REST、SQL Gateway 可人为对外暴露,其余内部端口严禁对公网开放。
一、对外可暴露:HTTP/REST 系列(唯一 HTTP 协议)
1. JobManager REST API + Web UI
协议:TCP 底层 + HTTP/HTTPS 应用层
默认端口:
8081(rest.port)承载进程:Dispatcher/JobMaster(JobManager)
功能:
Web 可视化面板、Flink CLI 提交作业、API 管理集群(上传 Jar、启停任务、触发 Savepoint、查询指标 / Checkpoint)
是否对外暴露:可配置对外
默认绑定
localhost,仅本机访问;修改rest.bind-address: 0.0.0.0后可内网 / 公网访问;生产禁止直接暴露公网,建议 Nginx/Envoy 代理 + 认证;默认无鉴权,存在未授权 RCE 风险。
2. SQL Gateway(SQL 客户端接口)
协议:TCP 底层 + HTTP/HTTPS(REST)
默认端口:
8083(sql-gateway.endpoint.rest.port)功能:Flink SQL 客户端、JDBC/ODBC、SQL 脚本远程执行
是否对外暴露:可选对外,同 REST 安全风险,需独立认证。
二、集群内部私有 TCP 接口(无 HTTP,仅集群节点互通,禁止对外)
全部基于自定义 TCP 私有协议(Pekko RPC / Netty 数据协议),仅 JM/TM 之间通信,生产网络策略必须拦截外部访问。
1. Pekko RPC 控制通信(调度、心跳、注册)
JobManager RPC
端口:
6123(jobmanager.rpc.port)通信:JM ↔ TM、JM 主备 HA 同步
用途:任务调度、资源注册、心跳、JobMaster 协调
TaskManager RPC
端口:
6122(taskmanager.rpc.port)通信:TM ↔ JM、TM 内部服务通信
Metric Query Service(指标查询 RPC)
端口:随 RPC 体系复用 / 动态分配
用途:WebUI 拉取 TM 实时指标、反压数据
2. Blob Server(文件分发 TCP)
端口:
6124(blob.server.port)通信:JM ↔ TM
用途:分发作业 Jar、依赖、Checkpoint 元数据、任务资源文件
安全风险:外部可拉取集群所有作业包,严禁对公网开放。
3. Queryable State(可查询状态 TCP)
端口:
6124(同 Blob,可单独配置范围)通信:TM ↔ 外部状态查询客户端(仅业务内网可按需放开,不建议公网)
4. TaskManager Shuffle 数据传输(Netty TCP)
端口范围:默认
6121起始,动态端口段taskmanager.data.port-range通信:TM ↔ TM、上游 TM → 下游 TM
用途:流批任务 shuffle 数据、分区网络传输、广播数据
5. HA 高可用配套(依赖第三方,非 Flink 自有)
Zookeeper:TCP 2181,用于 JM 选主、集群元数据存储;不属于 Flink 集群接口,仅集群依赖。
三、其他 TCP 辅助端口(内部 / 调度平台)
Prometheus Metric Exporter(指标采集)
端口:
9249(metrics.reporter.prom.port)协议:TCP + HTTP(Prometheus 标准)
暴露:仅监控服务内网访问,不建议公网。
YARN/K8s 资源调度端口(非 Flink 自身)
YARN RM 8088、NM 8042;K8s NodePort/Service 端口,不属于 Flink 集群原生接口。
四、分类总表(协议 + 暴露权限)
表格
五、关键结论
协议区分
只有 REST/WebUI、SQL Gateway、Prometheus 指标 上层是 HTTP;
所有集群内部调度、数据、文件传输全是纯 TCP 私有二进制协议,无 HTTP。
暴露规则
唯一可对外提供服务:8081 REST、8083 SQL Gateway;但必须加网络白名单、HTTPS、账号 /mTLS 认证,严禁裸端口公网。
6121/6122/6123/6124 等内部端口只允许集群节点内网互通,任何外部 IP 一律拦截,否则存在代码上传、集群劫持高危漏洞。
底层统一:Flink 全部网络通信基于 TCP,无 UDP 协议接口。