Day 5 Part 2: Cluster based Distributed Controller Architecture
This paper presents a cluster based distributed controller architecture. The cluster of controllers is used instead of a mainframe controller since it not only increases scalability but also avoids single point of failure. Scalability could be increased by addition of controllers to the cluster. Controllers in the cluster communicate with each other using the JGroups membership notifications and messaging infrastructure.
In this setting, the controllers elect a master node amongst them which
conducts and maintains the global controller-switch mapping in the network. The master node is periodically monitored by all other nodes, and if it is found to be inaccessible, it is immediately replaced by one of the other nodes. The controller architecture ensures to provide abstraction to the application layer from the data plane layer.
In the proposed framework, each controller in the cluster is equipped with the same algorithm that generates and updates the network mapping. In this setting, a master node is responsible for realizing the controller-switch mapping updates. The master controller is determined using a distributed atomic integer primitive provided by JGroups. To avoid single point failure on the master, all the controllers are checking constantly for the working status of the master node.
The mapping information is stored locally by all controllers and this database is automatically synchronized amongst all of them via JGroups with every local update. The mapping is generated and updated by the master controller using a function.
In this setting, the controllers elect a master node amongst them which
conducts and maintains the global controller-switch mapping in the network. The master node is periodically monitored by all other nodes, and if it is found to be inaccessible, it is immediately replaced by one of the other nodes. The controller architecture ensures to provide abstraction to the application layer from the data plane layer.
In the proposed framework, each controller in the cluster is equipped with the same algorithm that generates and updates the network mapping. In this setting, a master node is responsible for realizing the controller-switch mapping updates. The master controller is determined using a distributed atomic integer primitive provided by JGroups. To avoid single point failure on the master, all the controllers are checking constantly for the working status of the master node.
The mapping information is stored locally by all controllers and this database is automatically synchronized amongst all of them via JGroups with every local update. The mapping is generated and updated by the master controller using a function.
Cons:
- security issues need to be addressed since this is a paper only addressing the architecture
- early detection of failure should be anticipated instead of waiting for the failure to occur to search for a new master controller
You can run master controller in hot standby mode (e.g. using keepalived software) to ensure one of the master controller is always up.
ReplyDeleteWill look into 'keepalived'.
Delete