Dieser Beitrag ist Mai 2018 entstanden
Ein wichtiger Punkt bei allen Arten von Storage ist die Erweiterung. Und natürlich muß auch der Manta Objectstore erweitert werden können. Das Prinzip ist dabei recht einfach. Zunächst müssen der unterliegenden Triton-Umgebung zusätzliche Compute-Nodes (CN) hinzugefügt werden. Sobald deren Netzwerkinterfaces in die richtigen VLANs konfiguriert worden sind, sollten sich die neuen CNs per PXE-Boot vom Netz booten und danach mit "sdc-server setup
" eingerichtet werden können. Per Nic-Tag sollte bei den neuen CNs auch das "external
" Interface markiert werden.
Damit kann der nächste Schritt erfolgen: Die Netzwerkkonfiguration für Manta, die auch im Manta Operators Guide beschrieben ist. Dazu muß i. W. für jedes Datacenter, in welchem CNs als Manta-Nodes hinzugefügt werden sollen, die entsprechende Konfigurationsdatei um die Hosts und die MAC-Adressen der relevanten Netzwerkkarten erweitert werden. Der nachfolgende Aufruf von
headnode$ ./manta-net.sh CONFIG_FILE
ist idempotent und erzeugt nur auf den neuen CNs die erforderlichen virtuellen Netzwerkinterfaces manta0
. Die Konfigurationsdatei sieht dabei z. B. so aus:
Ist die Netzwerkkonfiguration der neuen CNs in jedem Datacenter erfolgt, kann die Provisionierung der Manta-Zonen auf den neuen CNs durchgeführt werden. Dazu müssen auch die dafür verwendeten JSON-Dateien erweitert werden. Eine Datei im passenden Format kann mit "manta-adm show -j -s
" erzeugt werden. Diese enthält dann eine Beschreibung des Setups in dem jeweiligen Datacenter. Für das obige de-gt-4
sieht die Datei jetzt z. B. so aus:
Man kann gut die einzelnen CNs und die dort ausgerollten Manta-Dienste (und die Anzahl der Instanzen dieser Dienste) erkennen. Der vorletzte CN ist in diesem Fall der neue. Diesen kleinen Schipssel JSON, braucht man im Grunde nur zu der alten Konfigurationsdatei hinzuzufügen. Wie bin ich darauf gekommen, dort genau 98 Marlin-Instanzen zu konfigurieren? Ich habe das "manta-adm genconfig
" ausrechnen lassen. Ich habe einfach die schon bestehende Beschreibung des Manta Deployments um die drei neuen Hosts erweitert und dann nochmal eine Konfiguration erzeugen lassen. Hier die Beschreibungsdatei:
Da die drei neuen CNs jeweils 393 GB RAM haben, hat "manta-adm genconfig
" für diese Maschinen jeweils 98 Marlin-Zonen vorgesehen. Mit der um den jeweiligen CN erweiterten Konfiguration kann man dann die Manta-Dienste auf diesen neuen CNs provisionieren:
[root@a0121751-0667-487d-a84c-3c316f2a3169 (de-gt-4:manta0) ~]# manta-adm update manta-lab-de-gt-4-config.json.20180529
Das sollte nacheinander (nicht parallel) in den beteiligten Datacentern ausgeführt werden. Wenn die Provisionierung durchgelaufen ist (was sich bei 294 Marlin Zonen schon ganz schön hinziehen kann), müssen noch die marlin-agents auf den drei Hosts ausgebracht werden:
[root@a0121751-0667-487d-a84c-3c316f2a3169 (de-gt-4:manta0) ~]# manta-marlin -s bca7a918-2ab9-44ba-b466-27dc36782c40
Danach sollten noch die Zonen "marlin-dashboard" und "madtom" neu provisioniert werden. Die Reprovisionierung funktioniert genau wie ein Upgrade. Im Prinzip erzeugt man mit
[root@90ca0624-c0c1-4122-bc44-39173307b8a4 (de-gt-3:manta0) ~]# manta-adm show -s -j > config.json
ein json-File, welches das aktuelle Setup in diesem Datacenter beschreibt. Darin sucht man die Komponente(n), die aktualisiert werden sollen und ändert die Image-UUID auf die des Images ab, welches man gerne einspielen möchte. Die UUID ermittelt man vorher mit
headnode$ updates-imgadm list name=manta-jobsupervisor | tail
Der Manta Operator's Guide empfiehlt, vor dem Upgrade manta-init
aufzurufen - das ist aber nicht erforderlich, wenn man nur einzelne Komponenten aktualisieren will, wie in diesem Fall. Wie man einzelne Images importiert, hatte ich bereits unter "Images importieren" beschrieben. Madtom und das Marlin-Dashboard zeigen dann die neuen Storage-Nodes an (auf dem marlin-dashboard werden die neuen Zonen gerade resettet):

