在Windows 10主機上有兩個運行openSUSE的VirtualBox,每個運行着一個JBoss DataGrid。 iptables
規則在兩個VM上都在系統範圍內禁用。 VM的網絡適配器都配置爲Bridged Adapters
。從一個虛擬機到另一個虛擬機的JBoss DataGrid udp複製
當第二個實例啓動時,首先觀察它併成爲主人。第二個成爲奴隸。
有如下每個數據網格配置分佈式緩存:
<cache-container name="clustered" default-cache="oaas-properties-cache" statistics="true">
<transport stack="udp" cluster="oaas-cluster" lock-timeout="60000"/>
<distributed-cache name="code-error-message-cache" mode="ASYNC" batching="false">
<eviction strategy="LIRS" max-entries="10000"/>
<expiration max-idle="${oaas.maxidle.lifespan:87400000}" lifespan="${oaas.properties.lifespan:86400000}"/>
</distributed-cache>
</cache-container>
套接字綁定還配置:
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:5}">
<socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"/>
<socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
<socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9443}"/>
<socket-binding name="ajp" port="8009"/>
<socket-binding name="hotrod" interface="management" port="11222"/>
<socket-binding name="http" port="8080"/>
<socket-binding name="https" port="8443"/>
<socket-binding name="jgroups-mping" port="0" multicast-address="${jboss.default.multicast.address:234.99.54.14}" multicast-port="45700"/>
<socket-binding name="jgroups-tcp" port="7600"/>
<socket-binding name="jgroups-tcp-fd" port="57600"/>
<socket-binding name="jgroups-udp" port="55200" multicast-address="${jboss.default.multicast.address:234.99.54.14}" multicast-port="45688"/>
<socket-binding name="jgroups-udp-fd" port="54200"/>
<socket-binding name="memcached" interface="management" port="11211"/>
<socket-binding name="modcluster" port="0" multicast-address="<A_REAL_IP_HOES_HERE>" multicast-port="23364"/>
<socket-binding name="remoting" port="4447"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
</socket-binding-group>
據對兩個VM UDP包從一個去Wireshark的一邊到另一邊,反之亦然。但我看不到這些軟件包在wireshark中通過主機(奇怪,是不是?)。
最後,檢查DataGrid的其餘接口我注意到緩存複製實際上並不工作。把價值主宰,我不能從奴隸獲得它。
最後,因爲從正在運行,主定期記錄此:
10:26:03,839 WARN [org.jgroups.protocols.TP$ProtocolAdapter] (INT-1,shared=udp) JGRP000031: linux-bb91/oaas-cluster: dropping unicast message to wrong destination linux-bb91/oaas-cluster
和從日誌,這些日誌:
10:26:03,903 WARN [org.jgroups.protocols.UDP] (TransferQueueBundler,shared=udp) JGRP000032: null: no physical address for 4d05dc4d-66ac-1943-4e97-92c6e2b471c0, dropping message
想不通究竟是什麼錯。這裏有的iperf實用程序(由從到主,反之亦然)的結果:
#iperf -s -u -B $MASTER_IP -i 1
bind failed: Cannot assign requested address
------------------------------------------------------------
Server listening on UDP port 5001
Binding to local address $MASTER_IP
Receiving 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
#iperf -c $MASTER_IP -u -T 32 -t 3 -i 1
------------------------------------------------------------
Client connecting to $MASTER_IP, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 10.27.11.11 port 36857 connected with 10.27.11.87 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 121 KBytes 988 Kbits/sec
[ 3] 1.0- 2.0 sec 126 KBytes 1.03 Mbits/sec
[ 3] 2.0- 3.0 sec 126 KBytes 1.03 Mbits/sec
[ 3] 0.0- 3.0 sec 375 KBytes 1.02 Mbits/sec
[ 3] Sent 269 datagrams
read failed: Connection refused
[ 3] WARNING: did not receive ack of last datagram after 5 tries.
但是,當我從主機器Wireshark的發送nc $SLAVE_HOST 45688
顯示傳入的包和ACK。
需要幫助。甚至不知道我可以在哪裏挖掘。謝謝。
UPD
UDP封裝現在似乎要兩側。當我在服務器模式下運行iperf3從另一個虛擬機作爲客戶端結果檢查是:
# iperf3 -c 10.27.11.87 -u -T 32 -t 3 -i 1
32: Connecting to host 10.27.11.87, port 5201
32: [ 4] local 10.27.11.11 port 58036 connected to 10.27.11.87 port 5201
32: [ ID] Interval Transfer Bandwidth Total Datagrams
32: [ 4] 0.00-1.00 sec 120 KBytes 983 Kbits/sec 15
32: [ 4] 1.00-2.00 sec 128 KBytes 1.05 Mbits/sec 16
32: [ 4] 2.00-3.00 sec 128 KBytes 1.05 Mbits/sec 16
32: - - - - - - - - - - - - - - - - - - - - - - - - -
32: [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
32: [ 4] 0.00-3.00 sec 376 KBytes 1.03 Mbits/sec 2.462 ms 0/47 (0%)
32: [ 4] Sent 47 datagrams
32:
32: iperf Done.
和服務器接收包:
# iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 10.27.11.11, port 50940
[ 5] local 10.27.11.87 port 5201 connected to 10.27.11.11 port 58036
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 5] 0.00-1.00 sec 120 KBytes 983 Kbits/sec 0.361 ms 0/15 (0%)
[ 5] 1.00-2.00 sec 128 KBytes 1.05 Mbits/sec 6.556 ms 0/16 (0%)
[ 5] 2.00-3.00 sec 128 KBytes 1.05 Mbits/sec 2.462 ms 0/16 (0%)
[ 5] 3.00-3.04 sec 0.00 Bytes 0.00 bits/sec 2.462 ms 0/0 (-nan%)
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 5] 0.00-3.04 sec 376 KBytes 1.01 Mbits/sec 2.462 ms 0/47 (0%)
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
似乎問題是JBoss無法組裝集羣。 –
任何時候節點都不集羣,首先要在'org.jgroups'上啓用TRACE日誌記錄。這比wirehark提供了更多的線索。另外,請檢查'netstat',看看它是不是IPv4/v6問題。所有地址都是IPv4嗎? –