Hi Devs, This is to discuss the clustering model of the cloud controller:
As shown in the above diagram the idea is to have a coordinator node to handle data persistence logic and message publishing (topology, instance status, etc). The coordinator will be selected randomly and at a given time there will be only one coordinator. If the existing coordinator node goes down, another member will become the coordinator automatically (similar to carbon clustering agent). According to this design Autoscaler (AS)/Stratos Manager (SM) will talk to Cloud Controller (CC) via the Cloud Controller Service endpoint exposed via the load balancer. *Data Replication* When a request comes into one of the CC instances it will execute the necessary actions and update the data holder and/or topology which is in memory. At this point the data holder changes will be replicated to other instances using a distributed map. Once the coordinator receives the above updates it will persist the changes to the registry database. In this design we might not need to replicate the topology since it is already there in the message broker. The idea is to let coordinator publish the topology changes and the other members to listen to it. Please add your thoughts. Thanks -- Imesh Gunaratne Technical Lead, WSO2 Committer & PMC Member, Apache Stratos