apache +tomcat 群集 组播路由丢失.

自定义apache的发布目录:
 通过修改Apache的配置文件%APACHE2_HOME%/conf/httpd.conf可以定置自己的Apache服务器。注意修改该配置文件前要先停止正
在运行的Apache服务器。
在相应位置增加以下行可以定义自己的文件系统容器,设置自己的本地文件系统到网络空间的映射:
Alias /homepage "D:/heavyz/homepage"
<Directory "D:/heavyz/homepage">
  Options Indexes FollowSymLinks -ExecCGI
  DirectoryIndex index.php index.html home/index.php home/index.html
  Order allow,deny
  Allow from all
  Deny from enpc.fr
</Directory>
       
分析:
以上语句通过<Directory>标签定义了一个文件系统容器,并使用Alias指令把该容器映射到/homepage的URL上去。通过这里的设置,不会影响原来的DocumentRoot,或其它的已自定义的文件系统容器。
在该文件系统容器中还定义了一系列属性。对上述配置的解释如下:
    * <Directory "D:/heavyz/homepage"> and </Directory> : 定义本地文件系统容器,该容器位于D:/heavyz/homepage中。
    * Alias /homepage "D:/heavyz/homepage" : 当URL中的路径名为/homepage时,将映射到该文件系统容器中。
    * Options Indexes FollowSymLinks -ExecCGI : 当搜索不到默认首页时,允许列出目录的内容;允许目录中的符号链;不允许执行CGI脚本。
    * DirectoryIndex index.php index.html home/index.php home/index.html : 按照列出的四个本地URL搜索默认首页,最先找到的文件作为首页返回。(即若URL:http://localhost/homepage,则会先搜索默认首页,若查不到相应的默认首面,则根据第二点配置,显示homepage当前目录的文件列表)
    * Order allow,deny : Order规定了HTTP客户的访问权限。先允许再禁止(allow,deny)表明allow中允许的访问权限优先级低于deny中禁止的访问权限。
    * Allow from all : 先允许来自任何地方的HTTP客户的访问请求。
    * Deny from enpc.fr : 再禁止域名为enpc.fr的HTTP客户的访问请求(国立路桥学校ENPC的主机不允许访问该页面),对于这些客户,服务器返回403 Forbidden信息。注意Order中定义了deny的优先级高于allow,故该指令将生效。
假设在本地文件系统上存在文件D:\heavyz\homepage\index.html,重新启动Apache服务器,并访问页





SEVERE: Unable to start cluster.
java.net.SocketException: No such device
        at java.net.PlainDatagramSocketImpl.join(Native Method)
        at java.net.PlainDatagramSocketImpl.join(PlainDatagramSocketImpl.java:172)
        at java.net.MulticastSocket.joinGroup(MulticastSocket.java:276)
        at org.apache.catalina.cluster.mcast.McastServiceImpl.start(McastServiceImpl.java:221)
        at org.apache.catalina.cluster.mcast.McastService.start(McastService.java:323)
        at org.apache.catalina.cluster.mcast.McastService.start(McastService.java:261)
        at org.apache.catalina.cluster.tcp.SimpleTcpCluster.start(SimpleTcpCluster.java:781)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1004)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
        at org.apache.catalina.core.StandardService.start(StandardService.java:448)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
Oct 2, 2010 3:12:37 PM org.apache.catalina.startup.Catalina start
SEVERE: Catalina.start: 
LifecycleException:  java.net.SocketException: No such device
        at org.apache.catalina.cluster.tcp.SimpleTcpCluster.start(SimpleTcpCluster.java:797)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1004)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
        at org.apache.catalina.core.StandardService.start(StandardService.java:448)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)








以上原因为:组播路由丢失. 


 route add -net 228.0.0.4 netmask 255.255.255.255 dev eth0




 <Channel className="org.apache.catalina.tribes.group.GroupChannel">
            <Membership className="org.apache.catalina.tribes.membership.McastService"
                        address="228.0.0.4"
                        port="45564"
                        frequency="500"
                        dropTime="3000"/>
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="auto"
                      port="5000"
                      selectorTimeout="100"
                      maxThreads="6"/>

            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
            </Sender>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</Channel>






tomcat集群和负载均衡的实现(session同步)补充 

因为tomcat的session同步功能需要用到组播,windows默认情况下是开通组播服务的,但是linux默认情况下并没有开通,可以通过指令打开route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0,如果需要服务器启动时即开通组播需在/etc/sysconfig/static-routes文件内加入eht0 net 224.0.0.0 netmask 240.0.0.0。具体组播概念请查阅CCNP相关内容。

相关推荐