我正在尝试使用 jconsole 监视远程 jvm。我需要通过 OpenVPN 网络进行监视,这可能是问题的一部分。这是网络配置:
Server A Server B Server C
Jconsole JVM
10.171.0.1 <---> 10.170.0.1 <---> 10.170.0.14
当所有服务器都在不同的物理网络上时,它不起作用。当Server A
和Server C
位于同一物理网络中时,它可以工作。在这两种情况下,跟踪路由都是网络配置中描述的路由,如下所示:
traceroute to 10.170.0.14 (10.170.0.14), 64 hops max, 52 byte packets
1 10.170.0.1 (10.170.0.1) 114.440 ms 109.152 ms 109.581 ms
2 10.170.0.14 (10.170.0.14) 234.207 ms 228.535 ms 229.630 ms
关于如何解决这个问题有什么想法吗?
[编辑]
所有系统都是linux。
Jmx远程参数有:
-Dcom.sun.management.jmxremote.port=8086
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
服务器Server B (10.170.0.1)
作为两个网络之间的桥梁和防火墙,防火墙10.170.0.1
如下:
*filter
:INPUT DROP [1000:900000]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 127.0.0.1 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 389 -j ACCEPT
-A INPUT -p udp -m udp --dport 1194 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8086 -j ACCEPT
-A INPUT -p udp -m udp --dport 8086 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 13 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 30 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.171.0.1 -d 10.170.0.0/16 -j ACCEPT
-A FORWARD -s 10.171.0.3 -d 10.170.0.0/16 -j ACCEPT
-A FORWARD -s 10.170.0.0/16 -d 10.171.0.0/16 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
COMMIT
答案1
这个问题问了很久了,但因为 @mark 表现出了一些兴趣,下面是我最终解决它的方法。问题是 JVM 绑定到本地 IP 地址而不是 VPN IP 地址。只需添加以下内容即可:
-Djava.rmi.server.hostname=10.170.0.14
到我想要监控的服务器。
答案2
有 3 件事值得一试(如果您还没有尝试过):1)完全摆脱所有机器上的防火墙规则,以进行测试(如果您可以这样做)2)如果 1)不是一种选择,请设置 3 个模仿设置的虚拟机,没有防火墙 - 这样做我发现自己的网络存在类似的问题。3)确保您的 openvpn 客户端配置文件中有一个 keepalive - 一行类似于:keepalive 10 120
我遇到的类似问题是,我的公司网络设置为在 x 秒不活动后丢弃所有传入的数据包,因此即使 VPN 在技术上仍然打开,所有单向的流量都会被丢弃,直到一些流量来自另一端,然后它才能正常工作。
答案3
尝试使用 Java 8
1. 将其剪切并粘贴到您的 jvm 启动脚本中:
-Dcom.sun.management.jmxremote.port=1616
-Dcom.sun.management.jmxremote.rmi.port=1618
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
2.通过 ssh 连接(并避免 VPN 限制):
ssh solr@remote-host -L 1616:remote-host:1616 -L 1618:remote-host:1618
3.在电脑上打开jconsole
jconsole localhost:1616