0

我正在尝试使用--scaledocker-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

来源:https ://github.com/aedenj/apache-flink-kotlin-starter/blob/multiple-schemas/conf/flink/flink-conf.yaml

然后像这样映射 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
    .....

来源:https ://github.com/aedenj/apache-flink-kotlin-starter/blob/multiple-schemas/docker/flink-job-cluster.yml

我无法使用任何端口将 Java Mission Control 连接到任务管理器。例如localhost:10000localhost:10001等等。但是我可以使用连接到作业localhost:9999管理器,并且如果我单独明确设置端口,我只能连接到任务管理器。不使用 docker-compose 文件中的动态端口映射。理想情况下,端口映射会起作用,所以我可以继续使用--scaledocker-compose 的命令。

4

0 回答 0