簡體   English   中英

Cassandra docker - 無法通過 JMX 連接

[英]Cassandra docker - unable to connect through JMX

我很難通過 JMX 連接到 docker 容器內的 Cassandra。 我在 AWS 中運行(這意味着我獲得了一個 NAT 化的 IP)。 以下是我嘗試過的事情:

  1. 創建 jmxremote.password 文件
  2. 添加了 jmxremote.password 文件以啟用 jmx 連接。 我的 Dockerfile 從中創建了我的圖像:

從 cassandra: 最新

復制 ./jmxremote.password /etc/cassandra/jmxremote.password

運行 chmod 400 /etc/cassandra/jmxremote.password

復制 ./jmxremote.password /etc/java-8-openjdk/management/jmxremote.password

  1. 我使用上面的 docker 文件構建了圖像
  2. 運行容器:

    docker run -P -d -e "JVM_OPTS=-Djava.rmi.server.hostname=10.0.1.12" -e "LOCAL_JMX=no" -e

這將引發以下異常:

java.rmi.ConnectException: Connection refused to host: 10.0.1.12; nested exception is: 
java.net.ConnectException: Connection refused
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:130)
at javax.management.remote.rmi.RMIServerImpl_Stub.newClient(Unknown Source)
at javax.management.remote.rmi.RMIConnector.getConnection(RMIConnector.java:2432)
at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:308)
at sun.tools.jconsole.ProxyClient.tryConnect(ProxyClient.java:368)
at sun.tools.jconsole.ProxyClient.connect(ProxyClient.java:313)
at sun.tools.jconsole.VMPanel$2.run(VMPanel.java:294)

Caused by: java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at java.net.Socket.connect(Socket.java:538) at java.net.Socket.<init>(Socket.java:434) at java.net.Socket.<init>(Socket.java:211) at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40) at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:148) at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613) ... 9 more

  1. 我嘗試將 cassandra.yaml 文件中的 listen_address 設置為我的主機 IP (10.0.1.12),因為它默認設置為 docker IP。 結果相同
  2. 我還嘗試在啟動容器時設置環境變量“CASSANDRA_START_RPC=true”,但我遇到了同樣的問題

有人可以就過去幾天完全阻止我的這個問題提供指示或幫助嗎? 提前感謝您的時間和分享您的知識。

干杯,蘇多爾

我像這樣關閉了 jmx 身份驗證:

Dockerfile:

FROM cassandra

RUN sed -i 's/JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"/JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=false"/g' /etc/cassandra/cassandra-env.sh

RUN sed -i '/password/d' /etc/cassandra/cassandra-env.sh

docker-compose.yml:

environment:
    - LOCAL_JMX=no
    - JVM_EXTRA_OPTS=-Djava.rmi.server.hostname=127.0.0.1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM