我正在尝试使用--scale
docker-compose 选项在几个基于 docker 的 Flink 任务管理器中公开 JMX,以便与 Java Mission Control 一起使用。(例如 docker-compose docker/flink-job-cluster.yml up -d --scale taskmanager=2
)
我的基本问题是,即使我已经配置了 jmx,
env.java.opts: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.host='0.0.0.0' -Djava.rmi.server.hostname='0.0.0.0'
env.java.opts.jobmanager: -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.rmi.port=9999
env.java.opts.taskmanager: -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.rmi.port=9999
然后像这样映射 docker-compose 文件中的端口,
...
jobmanager:
image: flink:1.14.3-scala_2.11-java11
hostname: jobmanager
ports:
- "8081:8081" # Flink Web UI
- "9999:9999" # JMX Remote Port
command: "standalone-job"
....
taskmanager:
image: flink:1.14.3-scala_2.11-java11
depends_on:
- jobmanager
command: "taskmanager.sh start-foreground"
ports:
- "10000-10005:9999" # JMX Remote Port
environment:
- JOB_MANAGER_RPC_ADDRESS=jobmanager
.....
我无法使用任何端口将 Java Mission Control 连接到任务管理器。例如localhost:10000
或localhost:10001
等等。但是我可以使用连接到作业localhost:9999
管理器,并且如果我单独明确设置端口,我只能连接到任务管理器。不使用 docker-compose 文件中的动态端口映射。理想情况下,端口映射会起作用,所以我可以继续使用--scale
docker-compose 的命令。