Thursday, June 19, 2014

WSO2 AS worker/manager cluster with WSO2 ELB

This blog describes how to setup WSO2 Application Server worker/manager cluster with WSO2 Elastic Load Balancer.

WSO2 Elastic Load Balancer - 2.1.0
WSO2 Application Server - 5.2.1

1. Deployment Diagram


2. Configure the load balancer


1. Unzip the WSO2 ELB

2. Setting up the load balancing configuration
Edit “<ELB_HOME>/repository/conf/loadbalancer.conf” file


appserver {
       domains   {          
           wso2.as.domain {
               tenant_range    *;
group_mgt_port 4500;
      worker {
          hosts as.wso2.com;
      }   
mgt {
    hosts mgt.as.wso2.com;
}   
           }
       }
}


3. Setting up the cluster configurations
Edit “<ELB_HOME>/repository/conf/axis2/axis2.xml” file as follows


<clustering class="org.wso2.carbon.core.clustering.hazelcast.HazelcastClusteringAgent" enable="true">
<parameter name="membershipScheme">wka</parameter>
<parameter name="domain">wso2.carbon.lb.domain</parameter>
<parameter name="localMemberHost">127.0.0.1</parameter>
<parameter name="localMemberPort">4000</parameter>

4. Configuring the ELB to listen on default ports
Edit “<ELB_HOME>/repository/conf/axis2/axis2.xml” file as follows


<transportReceiver name="http" class="org.apache.synapse.transport.passthru.PassThroughHttpListener">
     <parameter name="port">80</parameter>
</transportReceiver>
<transportReceiver name="https" class="org.apache.synapse.transport.passthru.PassThroughHttpSSLListener">
       <parameter name="port" locked="false">443</parameter>
</transportReceiver>


5. Mapping the host names to the IP
Update the “/etc/hosts” file

<IP-of-worker>    as.wso2.com
<IP-of-manager>    mgt.as.wso2.com


3. Configure the manager node


1. Unzip the WSO2 AS

2. Setting up the cluster configurations
Edit “<AS_HOME>/repository/conf/axis2/axis2.xml” file as follows


<clustering class="org.wso2.carbon.core.clustering.hazelcast.HazelcastClusteringAgent" enable="true">
<parameter name="membershipScheme">wka</parameter>
<parameter name="domain">wso2.as.domain</parameter>
<parameter name="localMemberHost">mgt.as.wso2.com</parameter>
<parameter name="localMemberPort">4100</parameter>

*** Specify this node belongs to the management sub domain
<parameter name="properties">
<property name="backendServerURL" value="https://${hostName}:${httpsPort}/services/"/>
          <property name="mgtConsoleURL" value="https://${hostName}:${httpsPort}/"/>
          <property name="subDomain" value="mgt"/>
</parameter>

*** Specify the well known member
<members>
   <member>
         <hostName>127.0.0.1</hostName>
         <port>4500</port>        
   </member>
</members>

3. Configuring the port offset and host name
Edit “<AS_HOME>/repository/conf/carbon.xml” file as follows

<Offset>1</Offset>
<HostName>as.wso2.com</HostName>
<MgtHostName>mgt.as.wso2.org</MgtHostName>


4. Configure the HTTP/HTTPS proxy ports to communicate through the load balancer
Edit “<AS_HOME>/repository/conf/tomcat/catalina-server.xml” file as follows


<Connector  protocol="org.apache.coyote.http11.Http11NioProtocol"
               port="9763"
               proxyPort="80"

<Connector  protocol="org.apache.coyote.http11.Http11NioProtocol"
               port="9443"
               proxyPort="443"


4. Configure the worker node


1. Unzip the WSO2 AS

2. Setting up the cluster configurations
Edit “<AS_HOME>/repository/conf/axis2/axis2.xml” file as follows


<clustering class="org.wso2.carbon.core.clustering.hazelcast.HazelcastClusteringAgent" enable="true">
<parameter name="membershipScheme">wka</parameter>
<parameter name="domain">wso2.as.domain</parameter>
<parameter name="localMemberHost">as.wso2.com</parameter>
<parameter name="localMemberPort">4200</parameter>
*** Specify this node belongs to the management sub domain
<parameter name="properties">
<property name="backendServerURL" value="https://${hostName}:${httpsPort}/services/"/>
          <property name="mgtConsoleURL" value="https://${hostName}:${httpsPort}/"/>
          <property name="subDomain" value="worker"/>
</parameter>

*** Specify the well known member
<members>
   <member>
         <hostName>127.0.0.1</hostName>
         <port>4500</port>        
   </member>
</members>

3. Configuring the port offset and host name
Edit “<AS_HOME>/repository/conf/carbon.xml” file as follows

<Offset>2</Offset>
<HostName>as.wso2.com</HostName>

4. Configure the HTTP/HTTPS proxy ports to communicate through the load balancer
Edit “<AS_HOME>/repository/conf/tomcat/catalina-server.xml” file as follows

<Connector  protocol="org.apache.coyote.http11.Http11NioProtocol"
               port="9763"
               proxyPort="80"

<Connector  protocol="org.apache.coyote.http11.Http11NioProtocol"
               port="9443"
               proxyPort="443"


5. Create the worker2 node
Get a copy of worker1 node and change the following

<parameter name="localMemberPort">4300</parameter>
<Offset>3</Offset>


5. Testing the cluster


1. Start the ELB
sudo <ELB_HOME>/bin/wso2server.sh

2. Start the manager node
sudo <AS_HOME>/bin/wso2server.sh

3. Start the worker1 and worker2 nodes
sudo <AS_HOME>/bin/wso2server.sh -DworkerNode=true

4. Check member joined messages in all consoles

5. Access management console https://mgt.as.wso2.com/carbon

6. Test load distribution - create jaggery app to log a message - http://as.wso2.com/sample





No comments: