This blog describes how to setup WSO2 Application Server worker/manager cluster with WSO2 Elastic Load Balancer.
1. Deployment Diagram
4. Configure the HTTP/HTTPS proxy ports to communicate through the 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
Comments