Die Crush-Map muss in etwa so aussehen....
Das haben wir hier bestimmt 2 Dutzend mal so laufen und teils seit Jahren. Da ist nichts was nur auf einem Node repliziert ist.
Es war eine recht aufwendige Suche in den entsprechenden CEPH-Mailings-Listen um diese Config, die eigentlich der MS Storage Spaces Direct 2-Node-4-Way-Mirror Variante nachempfunden ist abzubilden. Aber es funktioniert seit dem 100% zuverlässig. Node-Ausfälle, reboots, es hat bisher alles absolut sauber überstanden. Wir hosten ERP-Systeme, da würden wir was anderes auch "niemals" akzeptieren...
Code:
# buckets
host RZB-APVE1 {
id -3 # do not change unnecessarily
id -4 class nvme # do not change unnecessarily
id -7 class ssd # do not change unnecessarily
# weight 13.972
alg straw2
hash 0 # rjenkins1
item osd.4 weight 3.493
item osd.5 weight 3.493
item osd.6 weight 3.493
item osd.7 weight 3.493
}
host RZB-APVE2 {
id -5 # do not change unnecessarily
id -6 class nvme # do not change unnecessarily
id -8 class ssd # do not change unnecessarily
# weight 13.972
alg straw2
hash 0 # rjenkins1
item osd.2 weight 3.493
item osd.1 weight 3.493
item osd.3 weight 3.493
item osd.0 weight 3.493
}
rack RACK-RZB {
id -10 # do not change unnecessarily
id -11 class nvme # do not change unnecessarily
id -12 class ssd # do not change unnecessarily
# weight 27.944
alg straw2
hash 0 # rjenkins1
item RZB-APVE1 weight 13.972
item RZB-APVE2 weight 13.972
}
datacenter APVE {
id -13 # do not change unnecessarily
id -14 class nvme # do not change unnecessarily
id -15 class ssd # do not change unnecessarily
# weight 27.945
alg straw2
hash 0 # rjenkins1
item RACK-RZB weight 27.945
}
# rules
rule APVE-NVME-4WayMirror {
id 1
type replicated
min_size 2
max_size 4
step take RACK-RZB class nvme
step choose firstn 2 type host
step chooseleaf firstn 2 type osd
step emit
}