简体   繁体   中英

Infinispan and JGroups discovery on EC2

I'm trying to use my application on AWS EC2 on some Linux boxes with Tomcat servers. Previously I used my application with Infinispan on LAN and I used UDP multicasting for JGroups member discovery. EC2 does not support UDP multicasting and this is the default node discovery approach used by Infinispan to detect nodes running in a cluster. I looked into using the S3_PING protocol, but I have not figured out why it doesn't work.

Does anyone have any ideas what the problem might be here?

Here is my configuration files: 1. applicationContext-cache.xml

<!-- Infinispan cache -->
<cache:annotation-driven/>

<import resource="classpath:/applicationContext-dao.xml"/>


<bean id="cacheManager" class="org.infinispan.spring.provider.SpringEmbeddedCacheManagerFactoryBean">
    <property name="configurationFileLocation" value="classpath:/infinispan-replication.xml"/>
</bean>

<context:component-scan base-package="com.alex.cache"/>

2.infinispan-replication.xml

<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="urn:infinispan:config:5.1 http://www.infinispan.org/schemas/infinispan-config-5.1.xsd"
        xmlns="urn:infinispan:config:5.1">

<global>
    <transport transportClass="org.infinispan.remoting.transport.jgroups.JGroupsTransport">
        <properties>
            <property name="configurationFile" value="/home/akasiyanik/dev/projects/myapp/myapp-configs/jgroups.xml"/>
        </properties>
    </transport>
</global>

<default>
    <!-- Configure a synchronous replication cache -->
    <clustering mode="replication">
        <sync/>
        <hash numOwners="2"/>
    </clustering>
</default>
</infinispan>

3. jgroups.xml

<config>
    <TCP bind_port="${jgroups.tcp.port:7800}"
      loopback="true"
      port_range="30"
      recv_buf_size="20000000"
      send_buf_size="640000"
      discard_incompatible_packets="true"
      max_bundle_size="64000"
      max_bundle_timeout="30"        
      enable_bundling="true"
      use_send_queues="true"
      sock_conn_timeout="300"
      enable_diagnostics="false"
      thread_pool.enabled="true"
      thread_pool.min_threads="2"
      thread_pool.max_threads="30"
      thread_pool.keep_alive_time="60000"
      thread_pool.queue_enabled="false"
      thread_pool.queue_max_size="100"
      thread_pool.rejection_policy="Discard"

      oob_thread_pool.enabled="true"
      oob_thread_pool.min_threads="2"
      oob_thread_pool.max_threads="30"
      oob_thread_pool.keep_alive_time="60000"
      oob_thread_pool.queue_enabled="false"
      oob_thread_pool.queue_max_size="100"
      oob_thread_pool.rejection_policy="Discard"
     />
    <S3_PING location="r********s" access_key="AK***************SIA"
      secret_access_key="y*************************************BJ" timeout="2000" num_initial_members="2"/>
    <MERGE2 max_interval="30000"
        min_interval="10000"/>
    <FD_SOCK/>
    <FD timeout="3000" max_tries="3"/>
    <VERIFY_SUSPECT timeout="1500"/>
    <BARRIER />
    <pbcast.NAKACK use_mcast_xmit="false"
               exponential_backoff="500"
               discard_delivered_msgs="true"/>
    <UNICAST />
    <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
               max_bytes="4M"/>
    <pbcast.GMS print_local_addr="true" join_timeout="3000" 
            view_bundling="true"/>
    <UFC max_credits="2M"
     min_threshold="0.4"/>
    <MFC max_credits="2M"
     min_threshold="0.4"/>
   <FRAG2 frag_size="60K" />
   <pbcast.STATE_TRANSFER/>
</config>

Use this: https://github.com/meltmedia/jgroups-aws

It is an implementation of JGroups discovery protocol for AWS using AWS API (multicast replacement)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM