Tech Blog.

Thoughts, stories, ideas.

SUSE Enterprise Storage 2 – Ceph/Calamari hands on

2. November 2016

Ceph ist in aller Munde und spätestens seit Red Hat sich Inktank einverleibt hat ist die Software Defined Storage Lösung auch im Enterprise Segment angekommen.

Ceph verspricht nichts anderes, als den Storage Markt, der von Grössen wie NetApp, EMC und Co. dominiert wird, auf den Kopf zu stellen.

SUSE schickt mit SUSE Enterprise Storage ebenfalls eine Ceph Distribution mit Enterprise Anspruch ins Rennen – wir haben uns ausführlich mit der Version 2.0 beschäftigt und fassen die wichtigsten Schritte der Installation in diesem Post kurz zusammen.

Hinweise: die folgende Installation entspricht nicht einem “best practice” Szenario sondern deckt die Schritte ab, um die Lösung in einem Lab-Szenario testen zu können.

Vorwort

Die Umgebung in welcher unsere Testinstallation stattfindet, besteht aus drei physikalischen Servern, welche fortan Node1, Node2 und Node3 genannt werden. Alle drei Geräte werden als OSD verwendet und zusätzlich wird Node1 auch Monitor und Calamari beherbergen. Für eine produktive Umgebung müssten die verschiedenen Rollen (OSD/MON) getrennt betrieben werden und ein Minimum von drei MONs müsste vorhanden sein.

SUSE Enterprise Storage wird als Addon-Package für SLES 12 angeboten. Um diesen zu installieren, wird während der Installation des Basis Betriebssystems oder auch zu einem späteren Zeitpunkt im YAST2 dieses Addon-Package hinzugefügt. Nach der Installation der Pakete, kann das Setup beginnen.

Voraussetzungen

Zuerst wird sicher gestellt, dass die Nodes sich gegenseitig mit DNS-Namen auflösen können. Dies wurde mit entsprechender Konfiguration der /etc/hosts Datei sichergestellt. Auch muss auf jedem System ein Benutzer für Ceph angelegt werden. Für diesen Test ist dies ceph. Zudem muss die Monitor Node(1) ohne Passwort und jeweils mit vollen sudo Rechten ohne Passwort auf den anderen Nodes (2 + 3) Befehle ausführen dürfen.

Calamari Konfiguration

Danach konfigurieren wir als root Calamari, das Webgui zur Administration und Überwachung des Ceph Clusters. Dafür wird ein Administrationsbenutzer (in diesem Beispiel “root”) und dessen Kennwort festgelegt. Anschliessend konfiguriert calamari-ctl postgresql und apache2 und startet diese Dienste. Das Webgui ist mit der standard Installation unter der Server IP direkt auf Port 80 erreichbar.

calamari-ctl initialize

Achtung: Alle ceph-deploy Befehle, werden als Benutzer ceph auf der Node1 ausgeführt!
Nun werden alle Nodes an unseren Calamari Server angebunden:

ceph-deploy calamari --master node1 connect node1 node2 node3

 

Calamari, das SUSE Enterprise Storage Dashboard

Ceph Grund-Konfiguration

Der nächste Schritt ist das Konfigurieren des Ceph Clusters mit Hilfe des Tools “ceph-deploy”, welches auf den meisten Distributionen über die hauseigene Paket-Verwatlung installiert werden kann. Falls das Paket nicht zur Verfügung steht, ist es auch problemlos möglich, “ceph-deploy” über Python pip oder direkt aus den Quellen mit git clone https://github.com/ceph/ceph-deploy.git zu beziehen.

Danach wird der Ceph Cluster erstellt:

ceph-deploy new node1

Anschliessend wird Ceph auf allen Nodes installiert:

ceph-deploy install node1 node2 node3

Schlussendlich wird der erste Monitor erstellt:

ceph-deploy mon create-initial

Nun ist der Ceph Cluster soweit, dass Speicher hinzugefügt werden kann.

Ceph Speicher-Konfiguration

In dieser Testumgebung ist auf jeder Node die Partition /dev/sda3 als Speicherort für die Ceph Daten vorgesehen. Dies können aber auch problemlos ganze Platten (Mehrzahl) pro System sein.

Als erstes werden die Partitionen vorbereitet:

ceph-deploy osd prepare node1:/dev/sda3 node2:/dev/sda3 node3:/dev/sda3

Danach können die OSDs aktiviert werden:

ceph-deploy osd activate node1:/dev/sda3 node2:/dev/sda3 node3:/dev/sda3

Et voilà, ein fertig konfigurierter Ceph Cluster mit Calamari Webinterface ist konfiguriert.

Der OSD Workbench von SUSE Enterprise Storage

Hilfen

Falls die Installation des Ceph Clusters neu gestartet werden soll, kann das bestehende Setup mit folgenden Befehlen zurückgesetzt werden:

ceph-deploy purge node1 node2 node3
ceph-deploy purgedata node1 node2 node3
ceph-deploy forgetkeys

Wenn es bei OSD prepare Fehlermeldungen gibt, kann ceph-deploy disk zap helfen. Der Befehl überschreibt die Partitionstabelle der Festplatte:

ceph-deploy disk zap nodeX:sda3

Um das selbe für Calamari durchzuführen, muss der folgende Befehl ausgeführt werden:

calamari-ctl clear --yes-i-am-sure

Das Passwort für den Calamari Benutzer kann man wie folgt neu setzen:

calamari-ctl change_password --password {password} {user-name}

Weiterführendes

Ab diesem Zeitpunkt steht der Konfiguration des Clusters für andere Dienste nichts mehr im Weg. Die Ceph internen Dienste sind:

Zu diesem Thema ist beim SUSE Enterprise Storage z.B. neu das iSCSI-Plugin vorhanden, mit welchem viele weitere Dienste in den Genuss einer Ceph-Anbindung kommen können!

Das hier gewählte Setup ist die minimale Installation. Für Ausfallsicherheit und mehr Leistung sollten den Anweisungen von Ceph gefolgt werden.

Interessante und hilfreiche Links zu SUSE Enterprise Storage und Ceph:

  • https://www.suse.com/products/suse-enterprise-storage/
  • http://docs.ceph.com/docs/master/

Fazit

Die Installation eines Ceph Clusters mit SUSE Enterprise Storage gestaltet sich relativ einfach. Das Webfrontend sowie die iSCSI-Schnittstelle sind interessante Ergänzungen zu Ceph, welche wir in kommenden Posts noch intensiver behandeln werden.

Verglichen mit einer Debian basierten Installation, welche erst richtig funktionierte als ceph-deploy von Hand konfiguriert wurde, gestaltet sich die Lösung von SUSE benutzerfreundlicher.

Ausblick

In weiteren Tests haben wir uns mit der Performance sowie der iSCSI/libvirt Anbindung von Ceph beschäftigt. In Kürze werden wir weitere Details dazu auf diesem Blog veröffentlichen.