[Sheepdog] [PATCH v2 0/6] introduce cluster driver
MORITA Kazutaka
morita.kazutaka at lab.ntt.co.jp
Sun Oct 9 07:23:52 CEST 2011
At Tue, 4 Oct 2011 21:38:52 +0900,
MORITA Kazutaka wrote:
>
> This patchset introduces a cluster driver, and moves all corosync
> stuff to it. The benefit of this abstraction is that we can support
> other coordination systems such as ZooKeeper. I like the current
> fully symmetric architecture, but corosync has a problem in its
> scalability.
>
> The interface of the cluster driver is as follows.
>
> struct cluster_driver {
> const char *name;
> int (*init)(struct cdrv_handlers *handlers, struct sheepid *myid);
> int (*join)(void);
> int (*leave)(void);
> int (*notify)(void *msg, size_t msg_len);
> int (*dispatch)(void);
> };
>
> This is a thin wrapper of corosync. join() and leave() are used to
> join/leave the cluster, and notify() is a multicasting to all nodes.
> The sequence of their events must be totally ordered in the cluster.
>
> This interface is designed not to affect the current Sheepdog codes so
> much. In future, I'd like to add more features to the cluster driver
> and simplify sheep/group.c. But, for now, this interface would be a
> good start point. In addition, I believe it is pretty easy to
> implement a ZooKeeper driver with this interface.
>
>
> Changes from v1 to v2 are:
>
> - split patches to make them easy to read
> - address Yibin's comments
>
>
> MORITA Kazutaka (6):
> sheep: define cluster driver interface
> sheep: remove corosync nodeid
> cluster: add corosync driver
> sheep: make first_cpg_node local
> sheep: use cluster driver
> cluster: add check for cluster driver definition
>
> sheep/Makefile.am | 2 +-
> sheep/cluster.h | 160 ++++++++++++++
> sheep/cluster/corosync.c | 260 ++++++++++++++++++++++
> sheep/group.c | 536 +++++++++++++++++++---------------------------
> sheep/sdnet.c | 2 +
> sheep/sheep.c | 24 ++-
> sheep/sheep_priv.h | 16 +-
> 7 files changed, 671 insertions(+), 329 deletions(-)
> create mode 100644 sheep/cluster.h
> create mode 100644 sheep/cluster/corosync.c
Applied this patchset.
The current sheep/group.c is still complex, so I think of moving more
things from it to the cluster driver. I'll send the patches later.
Thanks,
Kazutaka
More information about the sheepdog
mailing list