Tuesday, September 10, 2013

How to setup clustered environment in a single machine with 2 WSO2 ESB nodes and 2 WSO2 MB with external zookeeper and Cassendra

Env: ESB 4.7.0 MB 2.1.0

Cassandra Setup
---------------

Cassandra.yaml:
    - seeds: "127.0.0.1"
    listen_address: localhost
    rpc_address: localhost


WSO2 MB Cluster Setup
---------------------

Server 1: localhost
Server 2: localhost


Server 1:
---------

carbon.xml:
    <HostName>localhost</HostName>
    <offset>5</offset>

zoo.cfg:

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=./../data
# the port at which the clients will connect
clientPort=2181
clientPortAddress=localhost

authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider

#requireClientAuthScheme=sasl

# renew server-side ticket once an hour. 1000*60*60 = 3600000 milliseconds

jaasLoginRenew=3600000

conf/advanced/qpid-config.xml:

<enabled>true</enabled>     
<OnceInOrderSupportEnabled>false</OnceInOrderSupportEnabled>
<externalCassandraServerRequired>true</externalCassandraServerRequired>
 <externalZookeeperServerRequired>true</externalZookeeperServerRequired>
<coordination>
    <ZooKeeperConnection>127.0.0.1:2181</ZooKeeperConnection>
    <ReferenceTime>2012-02-29 08:08:08</ReferenceTime>
</coordination>



conf/advanced/qpid-virtualhosts.xml:

<class>org.wso2.andes.server.store.CassandraMessageStore</class>
<username>admin</username>
<password>admin</password>
<cluster>ClusterOne</cluster>
<idGenerator>org.wso2.andes.server.cluster.coordination.TimeStampBasedMessageIdGenerator</idGenerator>
<connectionString>localhost:9160</connectionString>


Server 2:
---------

carbon.xml:
    <HostName>localhost</HostName>
    <offset>6</offset>

zoo.cfg:

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=./../data
# the port at which the clients will connect
clientPort=2181
clientPortAddress=localhost

authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider

#requireClientAuthScheme=sasl

# renew server-side ticket once an hour. 1000*60*60 = 3600000 milliseconds

jaasLoginRenew=3600000


conf/advanced/qpid-config.xml:

<enabled>true</enabled>     
<OnceInOrderSupportEnabled>false</OnceInOrderSupportEnabled>
<externalCassandraServerRequired>true</externalCassandraServerRequired>
 <externalZookeeperServerRequired>true</externalZookeeperServerRequired>
<coordination>
    <ZooKeeperConnection>127.0.0.1:2181</ZooKeeperConnection>
    <ReferenceTime>2012-02-29 08:08:08</ReferenceTime>
</coordination>

conf/advanced/qpid-virtualhosts.xml:

<class>org.wso2.andes.server.store.CassandraMessageStore</class>
<username>admin</username>
<password>admin</password>
<cluster>ClusterOne</cluster>
<idGenerator>org.wso2.andes.server.cluster.coordination.TimeStampBasedMessageIdGenerator</idGenerator>
<connectionString>localhost:9160</connectionString>
              
              
WSO2 ESB 4.7 Setup
------------------
Node 1:
-------
carbon.xml:
    <offset>0</offset>

axis2.xml:
   <!--Uncomment this and configure as appropriate for JMS transport support with WSO2 MB 2.x.x -->              
    <transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
        <parameter name="myTopicConnectionFactory" locked="false">
           <parameter name="java.naming.factory.initial" locked="false">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
            <parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
            <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter>
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
        <parameter name="transport.jms.SessionAcknowledgement" locked="false">CLIENT_ACKNOWLEDGE</parameter>                      
        </parameter>

        <parameter name="myQueueConnectionFactory" locked="false">
            <parameter name="java.naming.factory.initial" locked="false">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
            <parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
            <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
        <parameter name="transport.jms.SessionTransacted">true</parameter>                      
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
        <parameter name="transport.jms.SessionAcknowledgement" locked="false">CLIENT_ACKNOWLEDGE</parameter>                    
        </parameter>

        <parameter name="default" locked="false">
            <parameter name="java.naming.factory.initial" locked="false">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
            <parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
            <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
        <parameter name="transport.jms.SessionTransacted">true</parameter>                      
        <parameter name="transport.jms.SessionAcknowledgement" locked="false">CLIENT_ACKNOWLEDGE</parameter>                      
        </parameter>
    </transportReceiver>
      
   <!-- uncomment this and configure to use connection pools for sending messages-->      

    
repository/conf/jndi.properties:

# register some connection factories
# connectionfactory.[jndiname] = [ConnectionURL]
connectionfactory.QueueConnectionFactory = amqp://admin:admin@clientID/carbon?brokerlist='tcp://localhost:5677'
connectionfactory.TopicConnectionFactory = amqp://admin:admin@clientID/carbon?brokerlist='tcp://localhost:5677'

# register some queues in JNDI using the form
# queue.[jndiName] = [physicalName]
queue.MyQueue = example.MyQueue

# register some topics in JNDI using the form
# topic.[jndiName] = [physicalName]
topic.MyTopic = example.MyTopic
     

Copy Lib from MB_HOME/client-lib to  ESB_HOME/repository/components/lib
andes-client-0.13.wso2v8
geronimo-jms_1.1_spec-1.1.0.wso2v1

Node 2:
-------

carbon.xml:
    <offset>1</offset>

axis2.xml:
   <!--Uncomment this and configure as appropriate for JMS transport support with WSO2 MB 2.x.x -->              
    <transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
        <parameter name="myTopicConnectionFactory" locked="false">
           <parameter name="java.naming.factory.initial" locked="false">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
            <parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
            <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter>
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
        <parameter name="transport.jms.SessionAcknowledgement" locked="false">CLIENT_ACKNOWLEDGE</parameter>                      
        </parameter>

        <parameter name="myQueueConnectionFactory" locked="false">
            <parameter name="java.naming.factory.initial" locked="false">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
            <parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
            <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
        <parameter name="transport.jms.SessionTransacted">true</parameter>                      
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
        <parameter name="transport.jms.SessionAcknowledgement" locked="false">CLIENT_ACKNOWLEDGE</parameter>                    
        </parameter>

        <parameter name="default" locked="false">
            <parameter name="java.naming.factory.initial" locked="false">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
            <parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
            <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
        <parameter name="transport.jms.SessionTransacted">true</parameter>                      
        <parameter name="transport.jms.SessionAcknowledgement" locked="false">CLIENT_ACKNOWLEDGE</parameter>                      
        </parameter>
    </transportReceiver>
      
   <!-- uncomment this and configure to use connection pools for sending messages-->      
  

repository/conf/jndi.properties:

# register some connection factories
# connectionfactory.[jndiname] = [ConnectionURL]
connectionfactory.QueueConnectionFactory = amqp://admin:admin@clientID/carbon?brokerlist='tcp://localhost:5678'
connectionfactory.TopicConnectionFactory = amqp://admin:admin@clientID/carbon?brokerlist='tcp://localhost:5678'

# register some queues in JNDI using the form
# queue.[jndiName] = [physicalName]
queue.MyQueue = example.MyQueue

# register some topics in JNDI using the form
# topic.[jndiName] = [physicalName]
topic.MyTopic = example.MyTopic


Copy Lib from MB_HOME/client-lib to  ESB_HOME/repository/components/lib
andes-client-0.13.wso2v8
geronimo-jms_1.1_spec-1.1.0.wso2v1

No comments: