易君召
易君召
发布于 2026-07-21 / 1 阅读
0
0

Apache Flink 集群全量接口协议、类型、暴露范围汇总

Apache Flink 所有通信底层均基于TCP,仅REST/WebUI封装了HTTP/HTTPS应用层协议;分为外部对外接口集群内部 TCP 私有接口扩展网关接口三大类,仅 REST、SQL Gateway 可人为对外暴露,其余内部端口严禁对公网开放

一、对外可暴露:HTTP/REST 系列(唯一 HTTP 协议)

1. JobManager REST API + Web UI

  • 协议:TCP 底层 + HTTP/HTTPS 应用层

  • 默认端口:8081rest.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)

  • 默认端口:8083sql-gateway.endpoint.rest.port

  • 功能:Flink SQL 客户端、JDBC/ODBC、SQL 脚本远程执行

  • 是否对外暴露:可选对外,同 REST 安全风险,需独立认证。

二、集群内部私有 TCP 接口(无 HTTP,仅集群节点互通,禁止对外)

全部基于自定义 TCP 私有协议(Pekko RPC / Netty 数据协议),仅 JM/TM 之间通信,生产网络策略必须拦截外部访问

1. Pekko RPC 控制通信(调度、心跳、注册)

  1. JobManager RPC

    • 端口:6123jobmanager.rpc.port

    • 通信:JM ↔ TM、JM 主备 HA 同步

    • 用途:任务调度、资源注册、心跳、JobMaster 协调

  2. TaskManager RPC

    • 端口:6122taskmanager.rpc.port

    • 通信:TM ↔ JM、TM 内部服务通信

  3. Metric Query Service(指标查询 RPC)

    • 端口:随 RPC 体系复用 / 动态分配

    • 用途:WebUI 拉取 TM 实时指标、反压数据

2. Blob Server(文件分发 TCP)

  • 端口:6124blob.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 数据、分区网络传输、广播数据

  • Zookeeper:TCP 2181,用于 JM 选主、集群元数据存储;不属于 Flink 集群接口,仅集群依赖。

三、其他 TCP 辅助端口(内部 / 调度平台)

  1. Prometheus Metric Exporter(指标采集)

    • 端口:9249metrics.reporter.prom.port

    • 协议:TCP + HTTP(Prometheus 标准)

    • 暴露:仅监控服务内网访问,不建议公网。

  2. YARN/K8s 资源调度端口(非 Flink 自身)

    • YARN RM 8088、NM 8042;K8s NodePort/Service 端口,不属于 Flink 集群原生接口。

四、分类总表(协议 + 暴露权限)

表格

接口名称

底层传输

应用层协议

默认端口

允许对外暴露?

访问主体

REST API / WebUI

TCP

HTTP/HTTPS

8081

仅内网可控开放,禁止公网直曝

浏览器、Flink CLI、运维脚本

SQL Gateway REST

TCP

HTTP/HTTPS

8083

内网按需开放

SQL 客户端、JDBC 程序

JM RPC(Pekko)

TCP

Flink 私有 RPC

6123

❌ 禁止对外

JobManager ↔ TaskManager

Blob Server

TCP

私有二进制

6124

❌ 禁止对外

JM 下发 Jar / 资源至 TM

Shuffle 数据端口

TCP

Netty 私有数据

6121 + 段

❌ 禁止对外

TaskManager 之间数据交换

Queryable State

TCP

私有状态查询

6124

仅业务内网极小范围

业务状态查询服务

Prometheus 指标

TCP

HTTP

9249

仅监控内网

Prometheus 采集器

五、关键结论

  1. 协议区分

    • 只有 REST/WebUI、SQL Gateway、Prometheus 指标 上层是 HTTP;

    • 所有集群内部调度、数据、文件传输全是纯 TCP 私有二进制协议,无 HTTP。

  2. 暴露规则

    • 唯一可对外提供服务:8081 REST、8083 SQL Gateway;但必须加网络白名单、HTTPS、账号 /mTLS 认证,严禁裸端口公网。

    • 6121/6122/6123/6124 等内部端口只允许集群节点内网互通,任何外部 IP 一律拦截,否则存在代码上传、集群劫持高危漏洞。

  3. 底层统一:Flink 全部网络通信基于 TCP,无 UDP 协议接口。


评论