簡體   English   中英

無法連接到在 localhost 上運行的遠程 JMX

[英]Can't connect to remote JMX running on localhost

我有兩個 Kubernetes 容器在一個 pod 中運行,分別稱為容器 A 和 B。A 有一個 JMX 服務器正在運行。 用於運行服務器的 Java 選項有:

-Dcom.sun.management.jmxremote=true  
-Dcom.sun.management.jmxremote.host=127.0.0.1  
-Dcom.sun.management.jmxremote.port=1234  
-Dcom.sun.management.jmxremote.ssl=false  
-Dcom.sun.management.jmxremote.authenticate=false

-Dcom.sun.management.jmxremote.host=localhost標志是專門設置的,這樣 JMX 服務器就不會暴露給外部客戶端。
容器 B 只想通過本地主機使用 JMX 來監控 A。 使用以下代碼建立與 A 中 JMX 服務器的連接:

String serverUrl = "service:jmx:rmi:///jndi/rmi://127.0.0.1:1234/jmxrmi";
JMXConnector jmxConnector = JMXConnectorFactory.connect(serviceUrl, null);
MBeanServerConnection mBeanConn = jmxConnector.getMBeanServerConnection();

我希望代碼可以毫無問題地運行,因為我可以使用 telnet 從 B 連接到 A 的 JMX 端口。 但是,當Java代碼運行時,拋出異常,前幾行是:

java.rmi.ConnectException: Connection refused to host: 10.8.0.88; nested exception is: 
    java.net.ConnectException: Connection refused (Connection refused)
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:623) ~[na:1.8.0_312]
    at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216) ~[na:1.8.0_312]
    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202) ~[na:1.8.0_312]
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:132) ~[na:1.8.0_312]

客戶端使用私有 IP 連接到 RMI 服務器,而不是使用 127.0.0.1 連接,並且由於 JMX 服務器僅在本地主機上偵聽而失敗。 我需要幫助找出允許容器 A 和 B 之間通過 localhost 進行通信的最佳方式。

為遇到同樣問題的其他人回答我自己的問題。 將選項-Djava.rmi.server.hostname=127.0.0.1添加到 Java 選項可解決該問題。

暫無
暫無

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

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