Skip to content
This repository was archived by the owner on Feb 8, 2024. It is now read-only.

pacemaker dependency graph

Andrei Zheregelia edited this page Jul 8, 2020 · 16 revisions

Pacemaker Resource Dependency Graph

The diagram below expresses the dependencies of resources created by build-ees-ha* scripts.
Note: though stonith-cN resources are added by ees-prvsnr component, they are still part of pacemaker cluster.

@startuml
skinparam defaultFontName "Ubuntu Mono"
'Colors Definitions                                     
!define _order #Red                                     
!define _coloc #Blue

node "srvnode-1" {
    interface lnetn1 as "lnet"
    interface motrn1 as "motr-kernel"
    interface ldapn1 as "ldap"
    interface s3authn1 as "s3auth"
    interface elssearchn1 as "els-search"
    interface statsdn1 as "statsd"
    interface haproxyn1 as "haproxy"
    cloud s3serverN1 as "s3server-c1-{M}"
    interface rabbitmqn1 as "rabbitmq"
    [s3backcons-c1\nattr:s3backcons-running] as s3backconsn1
    interface s3backprod1 as "s3backprod"

    [stonith2] as "stonith-c2"

    package "C1 group"{
        [ipc1] as "ip-c1"
        [consul-c1\nattr: consul-c1-running] as consulc1
        ipc1        -[_order]-> [consul-c1]
        consulc1   -[_order]-> [lnet-c1]
        [lnet-c1] -[_order]-> [hax-c1]
        [hax-c1]    -[_order]-> [motr-confd-c1]
        [motr-confd-c1] -[_order]-> [motr-ios-c1]
    }
    [freespacemon] as "motr-free-space-mon"

    [lnet-c1] -[_order]-> motrn1
    motrn1 -[_order]-> [hax-c1]
    ldapn1 -[_order]-> s3authn1
    [motr-ios-c1] -[_order]-> s3authn1
    elssearchn1 -[_order]-> statsdn1
    s3authn1 -[_order]-> s3serverN1
    s3authn1 *-[_coloc]-- s3serverN1: <colocation INF>
    rabbitmqn1 -[_order]-> s3backconsn1
    s3backconsn1 -[_order]-> s3backprod1
    s3backprod1 -[_coloc]-* s3backconsn1: <colocation 50000>
    s3backprod1 -[_coloc]-* s3backconsn1: <srvnode-1 location rule>
    [motr-ios-c1] -[_order]-> freespacemon: <order start>
    [motr-ios-c1] -[_coloc]-* freespacemon: <colocation 1000>
}
node "srvnode-2" {
    interface lnetn2 as "lnet"
    interface ldapn2 as "ldap"
    interface s3authn2 as "s3auth"
    interface elssearchn2 as "els-search"
    interface rabbitmqn2 as "rabbitmq"
    interface statsdn2 as "statsd"
    interface haproxyn2 as "haproxy"
    cloud s3serverN2 as "s3server-c2-{N}"
    [s3backcons-c2\nattr:s3backcons-running] as s3backconsn2
    interface motrn2 as "motr-kernel"
    interface s3backprod2 as "s3backprod"

    [stonith1] as "stonith-c1"

    package "C2 group"{
        [ipc2] as "ip-c2"
        [consul-c2\nattr: consul-c2-running] as consulc2
        ipc2            -[_order]-> consulc2
        consulc2        -[_order]-> [lnet-c2]
        [lnet-c2]       --[_order]-> [hax-c2]
        [hax-c2]        -[_order]-> [motr-confd-c2]
        [motr-confd-c2] -[_order]-> [motr-ios-c2]
    }
    lnetn2 -[_order]right-> [lnet-c2]
    lnetn1 -[_order]right-> [lnet-c1]
    [lnet-c2] -[_order]-> motrn2
    [lnet-c1] ---[_order]-> motrn2
    [lnet-c2] ---[_order]-> motrn1
    motrn2 --[_order]--> [hax-c2]
    motrn1 ---[_order]-> [hax-c2]
    motrn2 ---[_order]-> [hax-c1]

    ldapn2 -[_order]-> s3authn2
    ldapn1 -[_order]-> s3authn2
    ldapn2 -[_order]-> s3authn1

    [motr-ios-c2] -[_order]-> s3authn2
    elssearchn2 -[_order]-> statsdn2
    elssearchn2 -[_order]-> statsdn1
    elssearchn1 -[_order]-> statsdn2
    s3authn2 -[_order]-> s3serverN2
    s3authn1 --[_order]-> s3serverN2
    s3authn2 --[_order]-> s3serverN1
    s3authn2 *-[_coloc]-- s3serverN2 : <colocation INF>
    rabbitmqn2 ---[_order]-> s3backconsn2
    rabbitmqn2 ----[_order]-> s3backconsn1
    rabbitmqn1 -[_order]--> s3backconsn2
    s3backconsn2 --[_order]-> s3backprod2
    s3backconsn1 --[_order]-> s3backprod2
    s3backconsn2 -[_order]left---> s3backprod1
    s3backprod2 -[_coloc]right-* s3backconsn2: <colocaton 50000>
    s3backprod2 -[_coloc]right-* s3backconsn2: <srvnode-2 location rule>
    [motr-ios-c2] -[_order]-> freespacemon: <order start>
    [motr-ios-c2] -[_coloc]-* freespacemon: <colocation 1000>
}

consulc2 ---[_order]--> [hax-c1]
consulc1 --[_order]--> [hax-c2]

[motr-confd-c2] --[_order]--> [motr-ios-c1]
[motr-confd-c1] --[_order]--> [motr-ios-c2]


cloud "CSM" {
    package csmkib as "csm-kibana" {
        [kibana-vip] -[_order]-> [kibana] 
        [kibana]     -[_order]-> [csm-agent]
        [csm-agent]  -[_order]-> [csm-web]
    }
    csmkib -[_coloc]-* elssearchn1: <colocation>
    csmkib --[_coloc]---* elssearchn2: <colocation>
    csmkib --[_coloc]--* consulc1: <srvnode-1 location rule>
    csmkib --[_coloc]--* consulc2: <srvnode-2 location rule>
    csmkib --[_coloc]--* rabbitmqn1: <colocation>
    csmkib --[_coloc]--* rabbitmqn2: <colocation>
}

cloud "SSPL" {
    consulc1 -[_order]-> [sspl-master]
    consulc2 -[_order]-> [sspl-master]
}

cloud "UDS" {
    [uds] --[_coloc]left-* [csm-agent]: <colocation>
}
@enduml

Clone this wiki locally