Ceph upgrade pitfalls
Das Upgrade von Jewel nach Luminous hält doch den einen oder anderen Fallstrick parat. Vor allem, wenn wie unserem Fall das Upgrade per apt auf den Nodes selbst vorgenommen wird.
Hier die Schritte im Einzelnen:
Die Nodes vorbereiten
ceph osd set sortbitwise
ceph set noout
Die Quellen für apt anpassen:
sed -i 's/jewel/luminous/' /etc/apt/sources.list.d/ceph.list
Und das eigentliche Update durchführen:
apt-get update && apt-get dist-upgrade
Dann die MON Dienste neustarten
systemctl restart ceph-mon@<id>
Schließlich noch die OSDs
systemctl restart ceph-osd.target
Und schließlich mit
ceph osd require-osd-release luminous
ceph osd crush tunables optimal
ceph osd unset noout
den Cluster für Luminous optimieren.
Soweit alles ganz problemlos und genauch nach ceph-Manual
Was die offizielle ceph Dokumentation leider verschweigt, ist das auf diese Weise der neue Dienst ceph-mgr nicht installiert wird, was ceph health nicht nur mit der ungewohnten Meldung "no active mgr" quittiert, sondern auch sämtliche Pools als inexistent ausweist
ceph status cluster: id: 046d138f-6d9a-4aaa-918b-142ea99cffbc health: HEALTH_WARN no active mgr services: mon: 3 daemons, quorum ham-nebula-01,ham-nebula-02,ham-nebula-03 mgr: no daemons active osd: 3 osds: 3 up, 3 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 bytes usage: 0 kB used, 0 kB / 0 kB avail pgs:
Nachdem der ersten Schrecken aus den Beinkleidern gewichen, erst mal über ceph-mgr kundig gemacht und wie in den Release Notes zu lesen ist der MGR Dienst seit Luminous ein notwendiger notwendiger Bestandteil geworden.
Zuerst einfach auf allen MON Nodes das Paket ceph-mgr mit
apt-get install ceph-mgr
nachinstallieren. Dann wird es etwas tricky:
Für jeden MGR-Node einen Keyring generieren
ceph auth get-or-create mgr.<mgr-name> mon 'allow profile mgr' osd 'allow *' mds 'allow *'
ceph auth get mgr.<mgr-name>
exported keyring for mgr.<mgr-name>
[mgr.<mgr-name>]
key = xxxxxxxxxxxxxxxxxxxxxxxx==
caps mds = "allow *"
caps mon = "allow profile mgr"
caps osd = "allow *"
und unter /var/lib/ceph/mgr/<cluster>-<mgr-name>/keyring speichern. Dabei muss der File-Eigentümer unbedingt auf ceph:ceph geändert werden.
Wenn das erledigt ist kann der Dienst enabled und gestartet werden
systemctl enable ceph-mgr@mgr3.service
systemctl start ceph-mgr@mgr3
Und als kleines Extra noch das nagelneue Dashboard in Betrieb nehmen mit
ceph mgr module enable dashboard
Damit steht ein schickes Web Dashboard unter Port 7000 zur Verfügung