Hi All,
We implemented a new Carbon membership scheme for Carbon servers for
automatically discovering the Hazelcast cluster via the Stratos topology.
This is for automatically discovering Carbon instances in a Carbon cluster
when running on Private PaaS. In the previous version of the Private PaaS
we used WKA membership scheme for this and implemented additional logic to
manage the number of WKA members and their recovery process. In the
previous model we needed to restart the entire Carbon cluster if all the
existing WKA members get terminated due to some reason.
The initial implementation of $subject which was done for Carbon 4.4.0 can
be found here [1].
*How it works*
This new model allows all the members in the cluster to get connected to
all the other members. More importantly the member list of the Hazelcast
cluster configuration get updated dynamically when new members join the
cluster and when existing members leave.
As shown in the above diagram the Stratos membership scheme fetch the
topology from the message broker and find the list of member IP addresses.
Then those IP addresses are configured in Hazelcast Network Configuration
and let the Clustering Agent to create the Hazelcast instance. This happens
at the server startup.
Once a new member is created by the PaaS, it executes the same logic and
get connected to all the existing members available in the given
cluster(s). Once this happens the existing members get connected back to
the new member via Hazelcast.
In the axis2.xml we can specify a list of cluster ids from which the
members should be listed from:
<clustering
class="org.wso2.carbon.core.clustering.hazelcast.HazelcastClusteringAgent"
enable="true">
...
<parameter name="membershipScheme">stratos</parameter>
<parameter name="clusterIds">cluster-1,cluster-2</parameter>
...
</clustering>
Here we have allowed to specify multiple cluster ids to be able to use
cartridge grouping functionality in Private PaaS which would allow us to
model worker/manager separation.
*Work in progress*
Currently in the Carbon Kernel we do not have an extension point for
plugging in new membership schemes. As a result we had to patch the Carbon
Kernel Core module to do this initial implementation.
Now we are in the process of introducing an extension point for plugging in
custom membership schemes to the Carbon runtime. Once that is implemented
we could move the above feature to a separate bundle and drop it to the
dropins folder and use it.
[1] https://github.com/imesh/stratos-membership-scheme
Thanks
--
*Imesh Gunaratne*
Senior Technical Lead
WSO2 Inc: http://wso2.com
T: +94 11 214 5345 M: +94 77 374 2057
W: http://imesh.gunaratne.org
Lean . Enterprise . Middleware
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture