2016-02-04 101 views
0

在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 
----------------------------------------------------------- 
+0

似乎問題是JBoss無法組裝集羣。 –

+0

任何時候節點都不集羣,首先要在'org.jgroups'上啓用TRACE日誌記錄。這比wirehark提供了更多的線索。另外,請檢查'netstat',看看它是不是IPv4/v6問題。所有地址都是IPv4嗎? –

回答

0

我最後一次看到消息「沒有物理地址因爲「是多年前的事情,而且它變成了網絡接口驅動程序中的一個錯誤,並且與實際有缺陷的硬件相結合。

我從來沒有嘗試在VirtualBox上運行Infinispan:這可能沒有與VirtualBox的驅動程序結合使用進行測試;特別是UDP協議棧非常敏感,通常預計會被高級用戶使用,他們會進入並調整堆棧(更改JGroups配置)。

例如對於UDP協議,ip_ttl對於VirtualBox意味着「橋接」的含義可能不夠高?

您可以嘗試不同的虛擬化或容器策略嗎?

相關問題