天天看點

Tomcat叢集問題記錄

按照官方文檔的描述在server.xml的Engine元素中增加cluster子元素,配置如下:

Tomcat叢集問題記錄

    但是,在我的linux虛拟機上面啟動tomcat時總是如下錯誤:

資訊: Starting Servlet Engine: Apache Tomcat/7.0.62

七月 07, 2015 10:15:38 上午 org.apache.catalina.ha.tcp.SimpleTcpCluster startInternal

資訊: Cluster is about to start

七月 07, 2015 10:15:38 上午 org.apache.catalina.tribes.transport.ReceiverBase bind

資訊: Receiver Server Socket bound to:/127.0.0.1:4000

七月 07, 2015 10:15:38 上午 org.apache.catalina.tribes.membership.McastServiceImpl setupSocket

資訊: Setting cluster mcast soTimeout to 500

七月 07, 2015 10:15:38 上午 org.apache.catalina.tribes.membership.McastServiceImpl start

嚴重: Unable to join multicast group, make sure your system has multicasting enabled.

嚴重: Unable to start cluster.

org.apache.catalina.tribes.ChannelException: java.net.SocketException: 沒有那個裝置; No faulty members identified.

        at org.apache.catalina.tribes.group.ChannelCoordinator.internalStart

(ChannelCoordinator.java:177)

at org.apache.catalina.tribes.group.ChannelCoordinator.start

(ChannelCoordinator.java:98)

at org.apache.catalina.tribes.group.ChannelInterceptorBase.start

(ChannelInterceptorBase.java:160)

at org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor.start

(MessageDispatchInterceptor.java:157)

at org.apache.catalina.tribes.group.GroupChannel.start

(GroupChannel.java:419)

at org.apache.catalina.ha.tcp.SimpleTcpCluster.startInternal

(SimpleTcpCluster.java:690)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1106)

at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300)

at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)

at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:739)

at org.apache.catalina.startup.Catalina.start(Catalina.java:689)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)

Caused by: java.net.SocketException: 沒有那個裝置

at java.net.PlainDatagramSocketImpl.join(Native Method)

at java.net.AbstractPlainDatagramSocketImpl.join(AbstractPlainDatagramSocketImpl.java:179)

at java.net.MulticastSocket.joinGroup(MulticastSocket.java:319)

at org.apache.catalina.tribes.membership.McastServiceImpl.start(McastServiceImpl.java:253)

at org.apache.catalina.tribes.membership.McastService.start(McastService.java:444)

at org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:162)

... 22 more

七月 07, 2015 10:15:38 上午 org.apache.catalina.startup.Catalina start

嚴重: The required Server component failed to start so Tomcat is unable to start.

org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)

Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]

... 7 more

Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]

... 9 more

Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.ha.tcp.SimpleTcpCluster[Catalina]]

... 11 more

Caused by: org.apache.catalina.LifecycleException: org.apache.catalina.tribes.ChannelException: java.net.SocketException: 沒有那個裝置; No faulty members identified.

at org.apache.catalina.ha.tcp.SimpleTcpCluster.startInternal(SimpleTcpCluster.java:695)

... 14 more

Caused by: org.apache.catalina.tribes.ChannelException: java.net.SocketException: 沒有那個裝置; No faulty members identified.

at org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:177)

at org.apache.catalina.tribes.group.ChannelCoordinator.start(ChannelCoordinator.java:98)

at org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:160)

at org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor.start(MessageDispatchInterceptor.java:157)

at org.apache.catalina.tribes.group.GroupChannel.start(GroupChannel.java:419)

at org.apache.catalina.ha.tcp.SimpleTcpCluster.startInternal(SimpleTcpCluster.java:690)

... 15 more

七月 07, 2015 10:15:38 上午 org.apache.coyote.AbstractProtocol pause

資訊: Pausing ProtocolHandler ["http-bio-8080"]

資訊: Pausing ProtocolHandler ["ajp-bio-8009"]

七月 07, 2015 10:15:38 上午 org.apache.catalina.core.StandardService stopInternal

資訊: Stopping service Catalina

七月 07, 2015 10:15:38 上午 org.apache.coyote.AbstractProtocol destroy

資訊: Destroying ProtocolHandler ["http-bio-8080"]

資訊: Destroying ProtocolHandler ["ajp-bio-8009"]

我猜測應該是多點傳播的問題,本質上講是我虛拟機的網絡那塊有問題,導緻無法加入多點傳播組。

後來,在網上搜集了一些資料,都沒有什麼好的方案

有人說将Receiver的address改成自己的ip位址,不要用auto

也有人說是hostname和/etc/hosts中配置不一緻

更有人說是因為沒有插網線

……

我都試過,無奈還是報這個錯,即使我把SELinux和防火牆都關了亦是如此。

後來,我将tomcat放到我的win7上面可以啟動成功(即使拔掉網線)

我想,放到win7下可以,放到linux上呢?,我将虛拟機中那個無法啟動的tomcat又放到公司的

linux伺服器上,竟然也能啟動成功。我很困惑……

後來,我将虛拟機上的網卡eth0的廣播位址改成228.0.0.4

ipconfig eth0 broadcast 228.0.0.4

再次啟動tomcat,天呐,經常啟動成功了,不知道為什麼……

最後,我做了一個大膽的嘗試

我将虛拟機的網絡連接配接方式由“僅主機模式”改成“橋接模式”,讓虛拟機能夠聯網

又一次在虛拟機中啟動tomcat,結果啟動成功了,很意外

    在網絡連接配接方式為“僅主機模式”的虛拟機環境中啟動tomcat,報錯

    将虛拟機的廣播位址改成228.0.0.4,啟動tomcat,成功

    将虛拟機中的那個tomcat放到win7環境和真實的linux伺服器上啟動成功

    不改變虛拟機的廣播位址,将網絡連接配接方式改為“橋接模式”,啟動tomcat,也成功

就這麼稀裡糊塗的,tomcat的就啟動成功了,我也不知道這是為什麼,看來虛拟機環境還是有問題啊!

這裡也懶得往下深究了,總之,做實驗就用橋接模式吧!

日後遇到高人再請教吧………………

繼續閱讀