Dieser Artikel beschreibt, wie Sie GlusterFS-Server zu Ihrem Server-Array hinzufügen und daraus entfernen.
Neuen Server erstellen
Verwenden Sie den nova boot
Befehl aus dem vorherigen Artikel, um einen Server namens web3 zu erstellen:
nova boot --image bb02b1a3-bc77-4d17-ab5b-421d89850fca --flavor performance1-4 web3
Sie können den neuen Server auch über das Rackspace Cloud Control Panel erstellen.
Fügen Sie den Server zum benutzerdefinierten Netzwerk von Rackspace hinzu
Im vorherigen Artikel haben Sie ein benutzerdefiniertes Netzwerk von Rackspace hinzugefügt.
-
Rufen Sie den Universal Unique Identifer (UUID) des Netzwerks ab, indem Sie den folgenden
nova
verwenden Befehl:nova network-list
-
Nachdem Sie die UUID haben, ordnen Sie ihr den neuen Host zu.
Ersetzen Sie
UUID
im folgenden Befehl mit der tatsächlichen UUID (z. B.5492de89-1497-4aa0-96eb-bcdd55e1195c1
).web03
ist der Hostname des Servers, den Sie hinzufügen möchten.nova network-associate-host UUID web03
Sie können auch das Rackspace Cloud Control Panel verwenden, um einen Server mit Ihrem bestehenden Netzwerk zu verknüpfen.
Wenn Sie fertig sind, sollte der neue Server die IP-Adresse 192.168.0.3 auf der Schnittstelle /dev/eth3
haben . Das ist die Adresse, die GlusterFS verwendet, um mit dem anderen Server zu kommunizieren.
Partition formatieren und GlusterFS installieren
Verwenden Sie die folgenden Schritte, um die Serverpartition zu formatieren und GlusterFS zu installieren:
-
Verwenden Sie Secure Shell (SSH), um sich beim Server anzumelden.
-
Befolgen Sie die Anweisungen aus dem vorherigen Artikel, installieren Sie GlusterFS und formatieren Sie die
bricks
wie folgt partitionieren:apt-get update apt-get install -y glusterfs-server glusterfs-client apt-get install -y xfsprogs mkfs.xfs /dev/xvde1 mkdir /srv/.bricks echo /dev/xvde1 /srv/.bricks xfs rw 0 1 >> /etc/fstab mount /srv/.bricks ufw allow in on eth2
Integrieren Sie den neuen Baustein in das Gluster-Volumen
-
Verwenden Sie SSH, um sich entweder bei
web01
anzumelden oderweb02
. -
Der folgende Befehl weist das GlusterFS-Volume an, dem neuen Server zu vertrauen:
root@web02 :~# gluster peer probe 192.168.0.3 peer probe: success
-
Fügen Sie den Baustein mit den folgenden Befehlen zum Volume hinzu:
root@web02 :~# gluster volume add-brick www replica 3 192.168.0.3:/srv/.bricks/www volume add-brick: success
Der Befehl enthält die folgenden Teile:
gluster
- Der Befehl ist für GlusterFS.volume
- Der Befehl bezieht sich auf ein Volume.add-brick
- Sie fügen dem Volumen einen Baustein hinzu.www
- Dies ist der Name des Volumes.replica 3
- Nachdem Sie diesen Baustein hinzugefügt haben, behält das Volume mindestens drei Kopien jeder Datei, eine Kopie pro Baustein und in diesem Fall eine Kopie pro Server (da sich auf jedem Server nur ein Baustein befindet).192.168.0.3:/srv/.bricks/www
- Dieser Teil des Befehls ist die IP-Adresse des Gluster-Servers, gefolgt vom absoluten Pfad zum Speicherort der Brick-Daten.
Volumenspeicherstrategien
GlusterFS bietet die folgenden Arten von Volume-Speicherstrategien:
- Verteilt - Eine Datei befindet sich auf einem Stein und die nächste Datei befindet sich auf dem nächsten Stein. Diese Strategie gibt Ihnen mehr Platz, da Ihr Volumen die Summe aller Bausteine ist.
- Repliziert (Empfohlen ) - Jede Datei wird auf jeden Server kopiert.
- Gestreift - Dateien werden in Stücke geschnitten, und ein Stück wird in den ersten Baustein geschrieben, ein Stück wird in den zweiten Baustein geschrieben und so weiter.
Sie können Strategien auch kombinieren, z. B. repliziert und verteilt, wie im folgenden Beispiel veranschaulicht:
gluster volume create www replica 2 transport tcp
192.168.0.1:/srv/.bricks/www 192.168.0.2:/srv/.bricks/www
192.168.0.3:/srv/.bricks/www 192.168.0.4:/srv/.bricks/www
Die Replikatnummer ist die Anzahl der Bausteine, aus denen ein Replikatsatz besteht, dh eine vollständige Kopie der Dateien enthalten. Im vorherigen Beispiel 192.168.0.1
und 192.168.0.2
halten eine vollständige Kopie der Dateien, ebenso wie 192.168.0.3
und 192.168.0.4
. Die Ziegelreihenfolge ist signifikant. Wenn Sie es 1,3,2,4 bestellt haben, würden 1 und 3 und 2 und 4 die vollständigen Dateien enthalten. Wenn 1 und 2 ausfallen würden, würden Sie die Hälfte Ihrer Dateien verlieren und zwei Kopien der anderen Hälfte haben.
Eine Kombination aus repliziertem und verteiltem Volume gibt Ihnen ein wenig mehr Geschwindigkeit und mehr Speicherplatz im Austausch für Datensicherheit.
Eine Kombination aus Stripeset- und replizierten Volumes wird nur empfohlen, wenn Sie Dateien haben, die größer als ein Ziegelstein sind, oder viele große Dateien, die vielen E/A-Vorgängen unterzogen werden.
Status der Server anzeigen
Die folgenden Befehle helfen Ihnen, mehr darüber herauszufinden, was in Ihrem Cluster passiert. Sie werden diese Befehle in späteren GlusterFS-Artikeln verwenden.
Peer-Status
Wenn Sie den folgenden Befehl von einem beliebigen Server aus ausführen, zeigt er alle ihm bekannten Peer-Server an:
root@web01:~# gluster peer status
Number of Peers: 2
Hostname: 192.168.0.3
Uuid: ba502dc2-447f-466a-a732-df989e71b551
State: Peer in Cluster (Connected)
Hostname: 192.168.0.2
Uuid: 56e02356-d2c3-4787-ae25-6b46e867751a
State: Peer in Cluster (Connected)
Volumestatus
Der folgende Befehl ist ein hilfreicher Befehl zur Fehlerbehebung. Es gibt Informationen über alle GlusterFS-Volumes und Aufgaben in der Warteschlange und in Bearbeitung.
root@web03:~# gluster volume status
Status of volume: www
Gluster process Port Online Pid
------------------------------------------------------------------------------
Brick 192.168.0.2:/srv/.bricks/www 49152 Y 13673
Brick 192.168.0.1:/srv/.bricks/www 49152 Y 10249
Brick 192.168.0.3:/srv/.bricks/www 49153 Y 13783
NFS Server on localhost 2049 Y 13793
Self-heal Daemon on localhost N/A Y 13800
NFS Server on 192.168.0.2 2049 Y 13900
Self-heal Daemon on 192.168.0.2 N/A Y 13907
NFS Server on 192.168.0.1 2049 Y 10286
Self-heal Daemon on 192.168.0.1 N/A Y 10293
There are no active volume tasks
Entferne einen Stein
Sie können Volumes nach Bedarf verkleinern, während der Cluster online und verfügbar ist. Verwenden Sie den folgenden Befehl, um einen Baustein zu entfernen:
# gluster volume remove-brick <volName> <brickName> start
Ausführen von remove-brick
mit start
Option löst automatisch einen Neuausgleichsvorgang aus, um Daten von den entfernten Bausteinen auf den Rest des Volumes zu migrieren.
Das folgende Beispiel entfernt Baustein 2:
root@web01:~# gluster volume remove-brick www replica 2 192.168.0.2:/srv/.bricks/www start
Removing brick(s) can result in data loss. Do you want to Continue? (y/n) y
volume remove-brick commit force: success
Dieser Befehl teilt GlusterFS mit, dass der www
Volume behält jetzt nur noch 2 Kopien jeder Datei. Es warnt Sie, dass Sie möglicherweise Daten verlieren, und fordert Sie auf, fortzufahren.
Wenn Sie einen Baustein auf einem verteilten Volume entfernen möchten, sollten Sie stattdessen den folgenden Befehl ausführen:
root@web01:~# gluster volume remove-brick www 192.168.0.2:/srv/.bricks/www start
Sie können den Status des remove-brick
anzeigen Vorgang mit dem folgenden Befehl:
root@web01:~# watch gluster volume remove-brick www replica 2 192.168.0.2:/srv/.bricks/www status
Baustein erneut hinzufügen
In diesem Abschnitt wird erklärt, wie Sie einen Baustein erneut hinzufügen.
Versuchen Sie, web02 wie folgt wieder zum Volume hinzuzufügen:
root@web02:~# gluster volume add-brick www replica 3 192.168.0.2:/srv/.bricks/www
volume add-brick: failed:
Es ging schief. Sehen Sie sich die Protokolle auf web02 an, um zu sehen, warum der Befehl fehlgeschlagen ist:
root@web02:/srv/.bricks# tail /var/log/glusterfs/*log -f | grep E
[2014-05-25 00:19:04.954410] I [input.c:36:cli_batch] 0-: Exiting with: 0
[2014-05-25 00:19:12.958620] I [input.c:36:cli_batch] 0-: Exiting with: 0
[2014-05-25 00:40:46.923747] E [glusterd-utils.c:5377:glusterd_is_path_in_use] 0-management: /srv/.bricks/www or a prefix of it is already part of a volume
[2014-05-25 00:40:46.923789] E [glusterd-op-sm.c:3719:glusterd_op_ac_stage_op] 0-management: Stage failed on operation 'Volume Add brick', Status : -1
Das Problem ist, dass /srv/.bricks/www
enthält noch die Daten aus der Zeit, als web02 Mitglied des Bandes war.
Sie brauchen einen sauberen Ort, um die Daten zu speichern. Der einfachste Weg zur Bereinigung besteht darin, einfach alle Daten mit dem folgenden Befehl zu entfernen:
root@web02:~# rm -rf /srv/.bricks/www
Warnung :Achten Sie darauf, diese Aktion auf dem richtigen Host auszuführen (web02, das derzeit nicht im Volume ist). Wenn Sie einen Fehler machen, zeigt Ihnen der nächste Artikel, wie Sie ihn wiederherstellen können. Alternative Aktionen sind das Verschieben von www
Verzeichnis aus dem Weg zu räumen oder den Baustein mit einem anderen Verzeichnis wie www2
hinzuzufügen .
Jetzt, da Sie einen sauberen Ort haben, an dem Sie den Baustein lagern können, ist das Hinzufügen des Bausteins erfolgreich:
root@web01:/srv# gluster volume add-brick www replica 3 192.168.0.2:/srv/.bricks/www
volume add-brick: success
Nächste Schritte
- Wie man einen ausgefallenen Server in einem GlusterFS-Array wiederherstellt