So erstellen Sie einen Sharded RethinkDB-Cluster unter Ubuntu 14.04

Einführung

  • RethinkDB * ist eine NoSQL-Datenbank. Es verfügt über eine benutzerfreundliche API für die Interaktion mit der Datenbank. RethinkDB vereinfacht auch das Einrichten von Datenbankclustern. Dies sind Servergruppen, die dieselben Datenbanken und Tabellen bedienen. Mit Clustern können Sie Ihre Datenbanken einfach und ohne Ausfallzeiten skalieren.

In diesem Tutorial erfahren Sie, wie Sie einen Cluster einrichten, Daten importieren und sichern. Wenn Sie RethinkDB noch nicht kennen, lesen Sie die Grundlagen unter https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-rethinkdb-on-an-ubuntu-12-04-vps [ Dieses Tutorial], bevor Sie sich mit dem komplexeren Cluster-Konfigurationsprozess befassen.

Voraussetzungen

Dieses Tutorial erfordert mindestens 2 Droplets unter Ubuntu 14.04 LTS mit den Namen * rethink1 * & * rethink2 * (Diese Namen werden in diesem Tutorial verwendet). Sie sollten jeweils einen Nicht-Root-Benutzer für sudo einrichten Droplet vor dem Einrichten von RethinkDB - dies ist eine gute Sicherheitspraxis.

In diesem Tutorial wird auch auf den Python-Client-Treiber verwiesen, der unter https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-rethinkdb-on-an-ubuntu-12-04-vps erläutert wird [dieses Tutorial].

Knoten einrichten

Cluster in RethinkDB haben keine speziellen Knoten. Es ist ein reines Peer-to-Peer-Netzwerk. Bevor wir den Cluster konfigurieren können, müssen wir RethinkDB installieren. Fügen Sie auf jedem Server in Ihrem Ausgangsverzeichnis den RethinkDB-Schlüssel und das Repository zu apt-get hinzu:

source /etc/lsb-release && echo "deb http://download.rethinkdb.com/apt $DISTRIB_CODENAME main" | sudo tee /etc/apt/sources.list.d/rethinkdb.list

wget -qO- http://download.rethinkdb.com/apt/pubkey.gpg | sudo apt-key add -

Dann aktualisiere apt-get und installiere RethinkDB:

sudo apt-get update
sudo apt-get install rethinkdb

Als nächstes müssen wir RethinkDB so einstellen, dass es beim Start ausgeführt wird. RethinkDB wird mit einem Skript ausgeliefert, das beim Start ausgeführt wird. Dieses Skript muss jedoch aktiviert sein:

sudo cp /etc/rethinkdb/default.conf.sample /etc/rethinkdb/instances.d/cluster_instance.conf

Das Startskript dient auch als Konfigurationsdatei. Öffnen wir diese Datei:

sudo nano /etc/rethinkdb/instances.d/cluster_instance.conf

Der Name des Computers (der Name in der Web-Management-Konsole und in den Protokolldateien) wird in dieser Datei festgelegt. Machen wir dies genauso wie den Hostnamen des Rechners, indem wir die Zeile (ganz unten) suchen:

# machine-name=server1

Und ändern Sie es zu:

machine-name=

(Hinweis: Wenn Sie den Namen vor dem ersten Start von RethinkDB nicht festlegen, wird automatisch ein DOTA-Themen-Name festgelegt.)

Stellen Sie RethinkDB so ein, dass von allen Netzwerkschnittstellen aus darauf zugegriffen werden kann, indem Sie die folgende Zeile suchen:

# bind=127.0.0.1

Und ändern Sie es zu:

bind=all

Speichern Sie die Konfiguration und schließen Sie nano (durch Drücken von + Ctrl-X +, dann + Y +, dann + Enter +). Wir können jetzt RethinkDB mit der neuen Konfigurationsdatei starten:

sudo service rethinkdb start

Sie sollten diese Ausgabe sehen:

rethinkdb: cluster_instance: Starting instance. (logging to `/var/lib/rethinkdb/cluster_instance/data/log_file')

RethinkDB ist jetzt aktiv.

RethinkDB sichern

Wir haben die Option "+ bind = all +" aktiviert, um RethinkDB von außerhalb des Servers zugänglich zu machen. Das ist unsicher. Deshalb müssen wir RethinkDB vom Internet fernhalten. Wir müssen jedoch den Zugriff auf seine Dienste von autorisierten Computern aus zulassen.

Für den Cluster-Port verwenden wir eine Firewall, um unseren Cluster einzuschließen. Für die Web-Management-Konsole und den Treiberport verwenden wir SSH-Tunnel, um von außerhalb des Servers darauf zuzugreifen. SSH-Tunnel leiten Anforderungen auf einem Clientcomputer über SSH an einen Remotecomputer um und gewähren dem Client Zugriff auf alle Dienste, die nur im lokalen Host-Namespace des Remoteservers verfügbar sind.

Wiederholen Sie diese Schritte auf allen Ihren RethinkDB-Servern.

Sperren Sie zunächst alle externen Verbindungen:

# The Web Management Console
sudo iptables -A INPUT -i eth0 -p tcp --dport 8080 -j DROP
sudo iptables -I INPUT -i eth0 -s 127.0.0.1 -p tcp --dport 8080 -j ACCEPT

# The Driver Port
sudo iptables -A INPUT -i eth0 -p tcp --dport 28015 -j DROP
sudo iptables -I INPUT -i eth0 -s 127.0.0.1 -p tcp --dport 28015 -j ACCEPT

# The Cluster Port
sudo iptables -A INPUT -i eth0 -p tcp --dport 29015 -j DROP
sudo iptables -I INPUT -i eth0 -s 127.0.0.1 -p tcp --dport 29015 -j ACCEPT

Weitere Informationen zum Konfigurieren von IPTables finden Sie unter https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall- using-iptables-on-ubuntu-14-04[dieses Lernprogramm]. .

Installieren wir "iptables-persistent", um unsere Regeln zu speichern:

sudo apt-get update
sudo apt-get install iptables-persistent

Sie sehen ein Menü wie dieses:

Wählen Sie die Option "+ Ja" (drücken Sie die Eingabetaste), um die Firewall-Regeln zu speichern. Sie sehen auch ein ähnliches Menü zu IPv6-Regeln, das Sie auch speichern können.

Einrichten eines Verwaltungsbenutzers

Um auf die Web-Management-Konsole von RethinkDB und die Treiber-Oberfläche zuzugreifen, müssen wir den SSH-Tunnel einrichten. Erstellen wir einen neuen Benutzer für den SSH-Tunnel auf * rethink1 *:

sudo adduser ssh-to-me

Richten Sie dann die Datei mit den autorisierten Schlüsseln für unseren neuen Benutzer ein:

sudo mkdir /home/ssh-to-me/.ssh
sudo touch /home/ssh-to-me/.ssh/authorized_keys

Wenn Sie mit SSH eine Verbindung zum Cloud-Server herstellen, öffnen Sie ein Terminal auf Ihrem lokalen Computer. Wenn dies nicht der Fall ist, können Sie mehr über SSH-Schlüssel erfahren. Holen Sie sich Ihren öffentlichen Schlüssel und kopieren Sie ihn in Ihre Zwischenablage:

cat ~/.ssh/id_rsa.pub

Fügen Sie diesen Schlüssel dann dem neuen Konto hinzu, indem Sie die Datei authorized_keys * auf dem Server * öffnen:

sudo nano /home/ssh-to-me/.ssh/authorized_keys

Fügen Sie Ihren Schlüssel in die Datei ein. Dann speichere und schließe nano (+ Ctrl-X +, dann + Y +, dann + Enter +).

'' '' '

Sie müssen alle diese Schritte für Ihre anderen Clusterknoten wiederholen.

Datenbank importieren oder erstellen

Möglicherweise möchten Sie eine bereits vorhandene Datenbank in Ihren Cluster importieren. Dies ist nur erforderlich, wenn Sie eine bereits vorhandene Datenbank auf einem anderen Server oder auf diesem Server haben. Andernfalls erstellt RethinkDB automatisch eine leere Datenbank.

  • Wenn Sie eine externe Datenbank importieren müssen: *

Wenn die zu importierende Datenbank nicht auf "+ rethink1 " gespeichert ist, müssen Sie sie kopieren. Ermitteln Sie zunächst den Pfad Ihrer aktuellen RethinkDB-Datenbank. Dies ist das automatisch erstellte Verzeichnis " rethinkdb_data ", wenn Sie den Befehl " rethinkdb " zum Starten Ihrer alten Datenbank verwendet haben. Kopiere es dann mit ` scp +` auf * rethink1 *:

sudo scp -rpC @://* /var/lib/rethinkdb/cluster_instance/data

Zum Beispiel:

sudo scp -rpC [email protected]:/home/user/rethinkdb_data/* /var/lib/rethinkdb/cluster_instance/data

Dann starte RethinkDB neu:

sudo service rethinkdb restart
  • Wenn Sie eine bestehende Datenbank auf rethink1 haben: *

Wenn Sie eine vorhandene RethinkDB-Datenbank auf * rethink1 * haben, ist die Vorgehensweise anders. Öffnen Sie zuerst die Konfigurationsdatei auf * rethink1 *:

sudo nano /etc/rethinkdb/instances.d/cluster_instance.conf

Suchen Sie dann den Pfad der RethinkDB-Datenbank, die Sie importieren möchten. Dies ist das automatisch erstellte Verzeichnis "+ rethinkdb_data ", wenn Sie den Befehl " rethinkdb +" zum Starten Ihrer alten Datenbank verwendet haben. Fügen Sie diesen Pfad in die Konfigurationsdatei ein, indem Sie die folgende Zeile hinzufügen:

directory=

Schließen Sie die Datei, um Ihre Änderungen zu speichern (mit + Ctrl-X +, dann + Y +, dann + Enter +). Starten Sie nun RethinkDB neu:

sudo service rethinkdb restart

Es ist wichtig zu beachten, dass das Importieren einer vorhandenen Datenbank bedeutet, dass * rethink1 * den Namen des alten Computers der Datenbank erbt. Sie müssen dies wissen, wenn Sie das Sharding der Datenbank später verwalten.

Cluster erstellen

Um einen Cluster zu erstellen, müssen Sie alle Cluster-Computer durch die Firewalls des jeweils anderen zulassen. Fügen Sie auf Ihrem Rechner * rethink1 * eine IPTables-Regel hinzu, damit die anderen Knoten die Firewall passieren können. In diesem Beispiel sollten Sie "+ rethink2 IP +" durch die IP-Adresse dieses Servers ersetzen:

sudo iptables -I INPUT -i eth0 -s  -p tcp --dport 29015 -j ACCEPT

Wiederholen Sie den Befehl für alle anderen Knoten, die Sie hinzufügen möchten.

Speichern Sie dann die Firewall-Regeln:

sudo sh -c "iptables-save > /etc/iptables/rules.v4"

Wiederholen Sie diese Schritte dann für Ihre anderen Knoten. Für ein Setup mit zwei Servern sollten Sie jetzt eine Verbindung zu * rethink2 * herstellen und die IP von * rethink1 * entsperren.

Jetzt müssen Sie alle Knoten verbinden, um einen Cluster zu erstellen. Verwenden Sie SSH, um eine Verbindung zu * rethink2 * herzustellen und die Konfigurationsdatei zu öffnen:

sudo nano /etc/rethinkdb/instances.d/cluster_instance.conf

Die Option + join + gibt die Adresse des Clusters an, dem beigetreten werden soll. Suchen Sie die Zeile + join + in der Konfigurationsdatei:

# join=example.com:29015

Und ersetzen Sie es durch:

join=

Speichern und schließen Sie die Konfigurationsdatei (mit + Ctrl-X +, dann + Y +, dann + Enter +). Dann starte RethinkDB neu:

sudo service rethinkdb restart

Der erste Knoten, * rethink1 *, benötigt NICHT das Update + join +. Wiederholen Sie die Bearbeitung der Konfigurationsdatei auf allen anderen Knoten mit Ausnahme von * rethink1 *.

Sie haben jetzt einen voll funktionsfähigen RethinkDB-Cluster!

Herstellen einer Verbindung mit der Web Management Console

Die Web-Management-Konsole ist eine benutzerfreundliche Online-Oberfläche, die Zugriff auf die grundlegenden Verwaltungsfunktionen von RethinkDB bietet. Diese Konsole ist nützlich, wenn Sie den Status des Clusters anzeigen, einzelne RethinkDB-Befehle ausführen und grundlegende Tabelleneinstellungen ändern müssen.

Jede RethinkDB-Instanz im Cluster bedient eine Verwaltungskonsole. Diese ist jedoch nur im lokalen Host-Namespace des Servers verfügbar, da wir die Firewall-Regeln verwendet haben, um sie vom Rest der Welt fernzuhalten. Wir können einen SSH-Tunnel verwenden, um unsere Anforderungen für "+ localhost: 8080 " an "rethink1" umzuleiten, wodurch die Anforderung an " localhost: 8080 +" im Namensraum gesendet wird. Auf diese Weise können Sie auf die Webverwaltungskonsole zugreifen. Sie können dies mit SSH auf Ihrem * lokalen Computer * tun:

ssh -L 8080:localhost:8080 ssh-to-me@

Wenn Sie in Ihrem Browser zu http: // localhost: 8080 [localhost: 8080] wechseln, wird jetzt Ihre RethinkDB-Webverwaltungskonsole angezeigt.

Wenn Sie den Fehler "+ bind: Address already in use" erhalten, verwenden Sie bereits Port 8080 auf Ihrem Computer. Sie können die Webverwaltungskonsole an einen anderen Anschluss weiterleiten, der auf Ihrem Computer verfügbar ist. Sie können es beispielsweise an Port 8081 weiterleiten und zu http: // localhost: 8081 [localhost: 8081] gehen:

ssh -L :localhost:8080 ssh-to-me@

Wenn Sie einen Konflikt mit zwei Testdatenbanken sehen, können Sie eine von ihnen umbenennen.

Herstellen einer Verbindung zum Cluster mit dem Python-Treiber

In diesem Setup sind alle RethinkDB-Server (die Webverwaltungskonsole, der Treiberport und der Clusterport) von der Außenwelt abgeschirmt. Wir können einen SSH-Tunnel verwenden, um eine Verbindung zum Treiberport herzustellen, genau wie bei der Web-Management-Konsole. Über den Treiberport stellen die RethinkDB-API-Treiber (mit denen Sie Anwendungen erstellen) eine Verbindung zu Ihrem Cluster her.

Wählen Sie zunächst einen Knoten aus, mit dem eine Verbindung hergestellt werden soll. Wenn Sie über mehrere Clients (z. B. Webanwendungsserver) verfügen, die eine Verbindung zum Cluster herstellen, möchten Sie diese im gesamten Cluster ausgleichen. Es ist eine gute Idee, eine Liste Ihrer Clients zu erstellen und dann jedem Client einen Server zuzuweisen. Versuchen Sie, die Clients so zu gruppieren, dass Clients, die ähnliche Tabellen benötigen, eine Verbindung zu demselben Cloud-Server oder derselben Servergruppe herstellen, sodass kein Server mit vielen Clients überlastet wird.

In diesem Beispiel verwenden wir * rethink2 * als Verbindungsserver. In einem größeren System, in dem Ihre Datenbank- und Web-App-Server getrennt sind, möchten Sie dies jedoch von einem Web-App-Server aus tun, der tatsächlich Datenbankaufrufe tätigt.

Dann generieren Sie auf dem * Verbindungsserver * einen SSH-Schlüssel:

ssh-keygen -t rsa

Und kopiere das in deine Zwischenablage:

cat ~/.ssh/id_rsa.pub

Autorisieren Sie dann den neuen Schlüssel auf dem * Clusterknoten * (in diesem Beispiel * rethink1 *), indem Sie die Datei + authorized_keys + öffnen und den Schlüssel in eine neue Zeile einfügen:

sudo nano /home/ssh-to-me/.ssh/authorized_keys

Schließen Sie nano und speichern Sie die Datei (+ Ctrl-X +, dann + Y +, dann + Enter +).

Verwenden Sie als Nächstes SSH-Tunnel, um über den * Verbindungsserver * auf den Treiberport zuzugreifen:

ssh -L 28015:localhost:28015 ssh-to-me@ -f -N

Der Treiber ist jetzt erreichbar von localhost: 28015. Wenn der Fehler "+ bind: Address already in use" angezeigt wird, können Sie den Port ändern. Verwenden Sie beispielsweise Port 28016:

ssh -L 28016:localhost:28015 ssh-to-me@ -f -N

Installieren Sie den Python-Treiber auf dem * Verbindungsserver *. Hier finden Sie eine kurze Übersicht über die Befehle. Weitere Informationen finden Sie unter https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-rethinkdb-on-an -ubuntu-12-04-vps [dieses Tutorial].

Installieren Sie die virtuelle Python-Umgebung:

sudo apt-get install python-virtualenv

Machen Sie das + ~ / rethink + Verzeichnis:

cd ~
mkdir rethink

Wechseln Sie in das Verzeichnis und erstellen Sie die neue Struktur der virtuellen Umgebung:

cd rethink
virtualenv venv

Aktivieren Sie die Umgebung (Sie müssen die Umgebung jedes Mal aktivieren, bevor Sie die Python-Oberfläche starten. Andernfalls wird eine Fehlermeldung über fehlende Module angezeigt.):

source venv/bin/activate

Installieren Sie das RethinkDB-Modul:

pip install rethinkdb

Starten Sie nun Python vom * Verbindungsserver *:

python

Stellen Sie eine Verbindung zur Datenbank her und stellen Sie sicher, dass + 28015 + durch den von Ihnen verwendeten Port ersetzt wird, falls erforderlich:

import rethinkdb as r
r.connect("localhost", ).repl()

Erstellen Sie die Tabelle + test:

r.db("test").table_create("test").run()

Daten in die Tabelle + test einfügen:

r.db("test").table("test").insert({"hello":"world"}).run()
r.db("test").table("test").insert({"hello":"world number 2"}).run()

Und drucken Sie die Daten aus:

list(r.db("test").table("test").run())

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

[{u'hello': u'world number 2', u'id': u'0203ba8b-390d-4483-901d-83988e6befa1'},
{u'hello': u'world', u'id': u'7d17cd96-0b03-4033-bf1a-75a59d405e63'}]

Sharding einrichten

In RethinkDB können Sie eine Tabelle so konfigurieren, dass sie auf mehrere Cloud-Server aufgeteilt wird. Sharding ist eine einfache Methode, um Datensätze, die größer sind als der Arbeitsspeicher eines einzelnen Computers, in eine gute Leistung umzuwandeln, da mehr Arbeitsspeicher für das Caching zur Verfügung steht. Da durch das Sharding auch das Dataset auf mehrere Computer aufgeteilt wird, können Sie größere Tabellen mit geringer Leistung verwenden, da der Tabelle mehr Speicherplatz zur Verfügung steht. Dies kann über die Web Management Console erfolgen.

Wechseln Sie dazu in der Web Management Console zur Registerkarte * Tables *.

image: https: //assets.digitalocean.com/articles/RethinkDB_Ubuntu14/2.png [Tabellen Liste]

Klicken Sie auf die * test * -Tabelle (die wir im vorherigen Abschnitt erstellt haben), um ihre Einstellungen einzugeben. Scrollen Sie nach unten zur Karte * Sharding settings *.

Klicken Sie auf die Schaltfläche * Bearbeiten *. Dort können Sie die Anzahl der Server eingeben, auf die die Tabelle aufgeteilt werden soll. Geben Sie für dieses Beispiel * 2 * ein. Klicken Sie auf die Schaltfläche * Rebalance *, um die Einstellung zu speichern.

Möglicherweise stellen Sie fest, dass die Anzahl der Shards, die Sie haben können, maximal ist. Dies entspricht der Anzahl der Dokumente in Ihrer Datenbank. Wenn Sie versuchen, Sharding für eine neue Tabelle einzurichten, müssen Sie entweder auf weitere Daten warten oder Dummy-Daten hinzufügen, damit Sie weitere Shards hinzufügen können.

Erweitertes Sharding

Intern verfügt RethinkDB über bereichsbasierte Shards, die auf den Dokument-IDs basieren. Dies bedeutet, dass RethinkDB einen Datensatz mit den IDs A, B, C und D in zwei Shards aufteilen kann: A, B (-unendlich bis C) und C, D (C bis + Unendlich). Wenn Sie ein Dokument mit der ID A1 einfügen, befindet sich dieses im Bereich der ersten Scherbe (-unendlich bis C), sodass es in dieser Scherbe abgelegt wird. Wir können die Grenzen der Shards festlegen, um Ihre Datenbankkonfiguration zu optimieren.

Bevor wir das tun können, werden wir einen Datensatz hinzufügen wollen, mit dem wir spielen wollen. Auf der Registerkarte * Data Explorer * der Web Management Console können wir eine Tabelle erstellen, indem wir diesen Befehl ausführen (klicken Sie nach der Eingabe auf * Run *):

r.db('test').tableCreate('testShards')

Dann geben Sie unsere Testdaten ein:

r.db("test").table("testShards").insert([
 {id:"A"},
 {id:"B"},
 {id:"C"},
 {id:"D"},
 {id:"E"}])

Jetzt können wir die Shards detailliert konfigurieren. Dazu müssen wir die Admin-Shell aufrufen. Die Admin-Shell ist eine erweiterte Methode zur Steuerung Ihres Clusters, mit der Sie Ihre Einrichtung optimieren können. Öffnen Sie auf dem Rechner * rethink1 * die Admin-Shell:

rethinkdb admin

Dann können wir einige Informationen zu unserer Tabelle anzeigen:

ls test.testShards

Erwartete Ausgabe:

table 'testShards' b91fda27-a9f1-4aeb-bf6c-a7a4211fb674

...

1 replica for 1 shard
shard      machine uuid                          name      primary
-inf-+inf  91d89c12-01c7-487f-b5c7-b2460d2da22e  rethink1  yes

In RethinkDB gibt es viele Möglichkeiten, eine Tabelle zu benennen. Sie können + database.name + (+ test.testShards +), den Namen (+ testShards +) oder die Tabellen-UUID (+ e780f2d2-1baf-4667-b725-b228c7869aab +) verwenden. Diese können alle austauschbar verwendet werden.

Lassen Sie uns diese Scherbe aufteilen. Wir werden 2 Scherben machen: -Unendlichkeit bis C und C bis + Unendlichkeit:

split shard test.testShards C

Die allgemeine Form des Befehls lautet:

split shard

Wenn Sie + ls testShards + erneut ausführen, wird angezeigt, dass der Shard aufgeteilt wurde. Möglicherweise möchten Sie den neuen Shard von einem Computer auf einen anderen verschieben. In diesem Beispiel können wir den Splitter "+ -inf-C +" (-infinty to C) an die Maschine heften (verschieben) * rethink2 *:

pin shard test.testShards -inf-C --master rethink2

Die allgemeine Form des Befehls lautet:

pin shard  --master

Wenn Sie "+ ls testShards +" erneut ausführen, sollten Sie feststellen, dass der Shard auf einen anderen Server verschoben wurde.

Wir können auch 2 Splitter zusammenführen, wenn wir die gemeinsame Grenze kennen. Lassen Sie uns die soeben erstellten Shards zusammenführen (-unendlich bis C und C bis + Unendlich):

merge shard test.testShards C

Die allgemeine Form des Befehls lautet:

merge shard

Geben Sie zum Verlassen der Shell "+ exit +" ein

Maschine sicher entfernen

Wenn ein Dokument auf mehrere Computer aufgeteilt wird, enthält ein Computer immer seinen Primärindex. Wenn der Cloud-Server mit dem Primärindex für ein bestimmtes Dokument offline geschaltet wird, geht das Dokument verloren. Bevor Sie einen Computer entfernen, sollten Sie alle primären Shards auf dem Computer von diesem migrieren.

In diesem Beispiel werden wir versuchen, die Daten vom Knoten * rethink2 * zu migrieren, um * rethink1 * als einzigen Knoten zu belassen.

Rufen Sie die RethinkDB-Admin-Shell auf * rethink1 * auf:

rethinkdb admin

Lassen Sie uns zunächst die Shards (Dokumentgruppen) auflisten, für die * rethink2 * verantwortlich ist:

ls rethink2

Ihre Ausgabe sollte ungefähr so ​​aussehen:

machine 'rethink2' bc2113fc-efbb-4afc-a2ed-cbccb0c55897
in datacenter 00000000-0000-0000-0000-000000000000

hosting 1 replicas from 1 tables
table                                 name        shard                                               primary
b91fda27-a9f1-4aeb-bf6c-a7a4211fb674  testShards  -inf-+inf                                           yes

Dies zeigt, dass * rethink2 * für den primären Shard einer Tabelle mit der ID "bdfceefb-5ebe-4ca6-b946-869178c51f93" verantwortlich ist. Als nächstes werden wir diesen Splitter nach * rethink1 * verschieben. Dies wird als Pinning bezeichnet:

pin shard test.testShards -inf-+inf --master rethink1

Die allgemeine Form des Befehls lautet:

pin shard  --master

Wenn Sie jetzt "+ ls rethink1 +" ausführen, werden Sie feststellen, dass der Shard auf diesen Computer verschoben wurde. Nachdem alle Shards von * rethink2 * nach * rethink1 * verschoben wurden, sollten Sie die Admin-Shell verlassen:

exit

Es ist jetzt sicher, RethinkDB auf dem unerwünschten Server zu stoppen. Wichtig: Führen Sie dies auf dem Computer aus, den Sie entfernen möchten. In diesem Beispiel werden wir dies auf * rethink2 * ausführen:

sudo service rethinkdb stop

Wenn Sie das nächste Mal die Web-Management-Konsole besuchen, zeigt RethinkDB eine leuchtend rote Warnung an. Klicken Sie auf * Probleme beheben *.

image: https: //assets.digitalocean.com/articles/RethinkDB_Ubuntu14/4.png [RethinkDB Issues List]

Wenn das angezeigte Problem wie oben dargestellt aussieht und keine Hauptverantwortlichkeiten aufgeführt sind, klicken Sie auf * Permanent entfernen *. Dadurch wird der Computer aus dem Cluster entfernt. Wenn es irgendwelche Hauptverantwortlichkeiten auflistet, schalten Sie RethinkDB wieder ein (+ sudo service rethinkdb start +) und stellen Sie sicher, dass Sie jeden primären Shard von diesem Server migrieren.

Hinweis: Wenn Sie versuchen, den Computer erneut zum Cluster hinzuzufügen, werden Meldungen zu einem Zombie-Computer angezeigt. Sie können das Datenverzeichnis entfernen, um dieses Problem zu beheben:

sudo rm -r /var/lib/rethinkdb/cluster_instance/
sudo service rethinkdb restart