oscache+jgroups 集群问题,oscache集群BUG

oscache的集群本身存在BUG,下面是OSCACHE的集群步骤,严格按照官方文档进行,但最后会在通信时报错:

 

oscache的集群配置可以参考oscache的配置文档,下面讲一下在进行集群配置时应该注意的问题。

版本问题:

   版本号:
   oscache-2.4.1+jgroups2.8

注意:

   oscache下载后,你会发现里面有一个jgroups的jar包,请不要使用oscache自带的jgroups包,去jgroups网站下载一个比较稳定的。

 

 

配置问题:

   oscache的配置文档中打开集群的配置,cache.cluster.properties的值不要去修改,使用默认的

cache.event.listeners=com.opensymphony.oscache.plugins.clustersupport.JavaGroupsBroadcastingListener
 cache.cluster.properties= UDP(mcast_addr=231.12.21.132;mcast_port=45566;ip_ttl=32;mcast_send_buf_size=150000;mcast_recv_buf_size=80000):PING(timeout=2000;num_initial_members=3):MERGE2(min_interval=5000;max_interval=10000):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(gc_lag=50;retransmit_timeout=300,600,1200,2400,4800;max_xmit_size=8192):UNICAST(timeout=300,600,1200,2400):pbcast.STABLE(desired_avg_gossip=20000):FRAG(frag_size=8096;down_thread=false;up_thread=false):pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;shun=false;print_local_addr=true)

 

如果运行报异常:类似 配置协议栈失败

异常解决:

    1.log日志包问题:

        如果你项目中有log4j包,最好去apache网站下载http://www.apache.org/dyn/closer.cgi/logging/log4j/1.2.16/apache-log4j-1.2.16.tar.gz  因为可能因为各开源组件对log4的功能做过修改,或版本问题,oscache加载jgroups监听的时候报异常,导致jgroups协议栈加载失败。

   2.IP版本问题:

      如果你机器支持ipv6,而你的机器ip地址使用的ipv4,那么请在jvm运行时加上参数:

           -Djava.net.preferIPv4Stack=true

 

  

最后注意:

      配置完成后,运行两台集群的机器,测试集群功能,结果失败,查看后台日志,会发现机器A 上的jgroups已经成功将数据组播到另一台机器B,B机器接收到的数据包正确,但是在B机器上 OSCACHE将接收到的组播数据更新时,产生异常。

总结:OSCACHE本身的集群功能存在BUG,且OSCACHE是通过组播方式实现缓存的同步,这样在N台机器进行集群时,如果数据更新频率过于频繁会存在网络爆炸的风险。 OSCACHE适合单台服务器的应用上面,不适合进行大规模的集群,如果使用集群,还是考虑使用MEMCACHED吧      

你可能感兴趣的:(apache,jvm,thread,log4j,cache)