diff options
-rwxr-xr-x | cluster-cman.py | 69 |
1 files changed, 44 insertions, 25 deletions
diff --git a/cluster-cman.py b/cluster-cman.py index fe2b423..8c14ae7 100755 --- a/cluster-cman.py +++ b/cluster-cman.py @@ -302,14 +302,17 @@ graph = lambda\ # cluster services layer # ) - ,SubgraphStandard('cluster.shared-storage' + ,SubgraphStandard('cluster.shared-devices' # - # shared storage + # shared devices (storage and switch/es) # - ,label='shared storage' + ,label='shared devices' ,_nodes=\ [StorageDevice('nas' ,label='NAS' + ) + ,StorageDevice('switch' + ,label='switch' )] ) ,SubgraphStandard('cluster.fence' @@ -318,17 +321,17 @@ graph = lambda\ # ,label='fence devices' ,_subgraphs=\ - [SubgraphStandard('cluster.power-fence' + [SubgraphStandard('cluster.direct-fence' # - # power fencing + # direct fencing # - ,label='power fence' + ,label='direct fence' ,_subgraphs=\ [SubgraphStandard('cluster.hypervisor' # # hypervisor (in a role of power fence executor) # - ,label='hypervisor\n(when cluster is virtualized)' + ,label='hypervisor as controller\n(when cluster virtualized)' ,rank='same' ,_nodes=\ [Daemon('fence_virtd' @@ -343,18 +346,28 @@ graph = lambda\ )] )] ,_nodes=\ - [FenceDevice('power-fence' - ,label='Power fence\ndevice(s)\n(DRAC/drac,\nHP iLO/ilo, …)' + [FenceDevice('direct-fence' + ,label='control card\n(drac,ilo,…)\n/power control\n(apc,…)' + )] + ) + ,SubgraphStandard('cluster.storage-based-fence' + # + # storage-based fencing + # + ,label='storage-based' + ,_nodes=\ + [FenceDevice('storage-based-fence' + ,label='blocking writes\n(scsi)/attesting\nliveness (sanlock)' )] ) - ,SubgraphStandard('cluster.storage-fence' + ,SubgraphStandard('cluster.link-based-fence' # - # storage fence + # switch-based fencing # - ,label='storage fence' + ,label='switch-based' ,_nodes=\ - [FenceDevice('storage-fence' - ,label='Direct use of\nshared storage\n(scsi, sanlock)' + [FenceDevice('switch-based-fence' + ,label='Ethernet (ifmib)/\nFibre Channel\n(brocade,…)/…' )] )] # @@ -395,11 +408,11 @@ graph = lambda\ [Delegate\ ('node_b-fence_virt' ,'fence_virtd' - ,label='multicast/serial port' + ,label='serial port/\nVMChannel\n/TCP,\nmulticast' ) ,Delegate\ ('node_b-fence_agent' - ,'power-fence' + ,'direct-fence' ,ltail='cluster.node_b-fence-agents' ,lhead='cluster.fence' ) @@ -411,48 +424,54 @@ graph = lambda\ # this has to be enabled as using kernel instead of ricci # destroys the intended depiction :-/ ,ltail='cluster.node_a' - ,lhead='cluster.shared-storage' + ,lhead='cluster.shared-devices' ,headport='e' ) ,Databus\ ('node_b-io' ,'nas' #,ltail='cluster.node_b' - ,lhead='cluster.shared-storage' + ,lhead='cluster.shared-devices' ,headport='n' ) ,Databus\ ('node_c-kernel' ,'nas' #,ltail='cluster.node_c' - ,lhead='cluster.shared-storage' + ,lhead='cluster.shared-devices' # cluster devices layer - cluster nodes layer (fence execution) )]+\ [FencedBy\ ('node_a-ricci' - ,'power-fence' + ,'direct-fence' ,ltail='cluster.node_a' - ,lhead='cluster.power-fence' + ,lhead='cluster.direct-fence' ) ,FencedBy\ ('node_b-clumond.sock' ,'libvirt' ,ltail='cluster.node_b' - ,lhead='cluster.power-fence' + ,lhead='cluster.direct-fence' ) ,FencedBy\ ('node_c-ricci' ,'libvirt' ,ltail='cluster.node_c' - ,lhead='cluster.power-fence' + ,lhead='cluster.direct-fence' ,minlen='2' ,weight='3' ) ,FencedBy\ + ('switch' + ,'switch-based-fence' + #,ltail='cluster.node_c' + ,lhead='cluster.storage-based-fence' + ) + ,FencedBy\ ('nas' - ,'storage-fence' + ,'storage-based-fence' #,ltail='cluster.node_c' - ,lhead='cluster.storage-fence' + ,lhead='cluster.storage-based-fence' )] )] ,_edges=\ |