
Dieser Artikel ist eine kostenlose Übersetzung des offiziellen Handbuchs für das Riak CS-System, Version 2.1.1.
Im Riak CS-Speichersystem arbeiten drei Komponenten zusammen. Dies bedeutet, dass jede Komponente für die Arbeit mit anderen Komponenten konfiguriert werden muss:
- Riak (KV) ist ein Datenbanksystem, das als Endsystem fungiert.
- Riak CS ist eine Cloud-Speicherschicht über Riak, die Speicher- und API-Funktionen bereitstellt, Dateien und Metadaten in Riak speichert und diese dann an Endbenutzer überträgt.
- Stütze - Verwaltet Abfragen, an denen global eindeutige Entitäten wie Buckets und Benutzer in einer Riak-Instanz beteiligt sind. Zum Beispiel Benutzer erstellen, Buckets erstellen oder löschen.
Darüber hinaus können Sie den S3-Client auch für die Verwendung beim Messaging mit dem Riak CS-System konfigurieren.
Sie sollten planen, einen Riak-Knoten für jeden Riak CS-Knoten auf Ihrem System zu haben. Riak- und Riak CS-Knoten können auf verschiedenen physischen Maschinen ausgeführt werden. In den meisten Fällen ist es jedoch vorzuziehen, einen Riak-Knoten und einen Riak CS-Knoten auf derselben physischen Maschine auszuführen. Angenommen, eine einzelne physische Maschine verfügt über genügend Leistung, um die Anforderungen von Riak- und Riak CS-Knoten zu erfüllen, wird die Leistung aufgrund der verringerten Netzwerklatenz im Allgemeinen verbessert.
Wenn Ihr System aus mehreren Knoten besteht, geht es bei der Konfiguration in erster Linie darum, die Kommunikation zwischen Komponenten einzurichten. Andere Einstellungen, z. B. wo die Protokolldateien gespeichert werden, haben Standardwerte und müssen nur geändert werden, wenn Sie nicht standardmäßige Werte verwenden möchten.
Systemkomponenten konfigurieren. Riak KV für CS einrichten
Da Riak CS eine Anwendung ist, die auf Riak basiert, ist es sehr wichtig, beim Starten von Riak CS auf Ihre Riak-Konfiguration zu achten. Dieses Dokument ist sowohl ein Riak-Konfigurationshandbuch als auch ein Referenzdokument zur Beschreibung wichtiger Konfigurationsparameter.
Stellen Sie vor der Konfiguration sicher, dass Riak KV und Riak CS auf jedem Knoten in Ihrem Cluster installiert sind. Die Stütze sollte dagegen nur auf einem Knoten im gesamten Cluster installiert werden.

Backends für Riak CS
Standardmäßig ist das von Riak verwendete Backend Bitcask. Das Riak CS-Paket enthält jedoch ein spezielles Backend, das vom Riak-Cluster verwendet werden muss, der Teil des Riak CS-Systems ist. Die reguläre Version verfügt über ein Standard-Multi-Backend, das mit Riak geliefert wird.
Dieselben Riak-Buckets, die intern von Riak CS verwendet werden, verwenden Sekundärindizes, für die jetzt das LevelDB-Backend erforderlich ist. Andere Teile des Riak CS-Systems können vom Bticask-Backend profitieren. Die Verwendung des beispielhaften Multi-Backends ist in Riak CS enthalten, um beide Backends zu nutzen und die beste Kombination aus Leistung und Funktionalität zu erzielen. Im nächsten Abschnitt wird beschrieben, wie Sie Riak für die Verwendung dieses Multi-Backends richtig konfigurieren.
Das Backend wird von Riak zum Speichern der Daten verwendet. Im Riak KV-Arsenal gibt es mehrere Backends: Bitcask, LevelDB, Memory und Multi.
Darüber hinaus verwendet das Speicherberechnungssystem Riak MapReduse, um Dateien in Buckets zusammenzufassen. Dies bedeutet, dass Sie allen Riak-Knoten mitteilen müssen, wo nach den bereitgestellten Riak CS-Dateien gesucht werden soll, bevor der Speicher berechnet wird.
Einige andere Parameter müssen geändert werden, um den Riak-Knoten als Teil des Riak CS-Systems zu konfigurieren, z. B. die IP-Adresse sowie die IP-Adresse und der Port für das Messaging über Protokollpuffer. Die restlichen Einstellungen können bei Bedarf geändert werden. In den folgenden Abschnitten wird beschrieben, wie Sie einen Riak-Knoten für den Betrieb als Teil eines Riak CS-Systems konfigurieren.
Riak-Backend einrichten
Zunächst werden die Konfigurationsdateien riak.conf oder advanced.config / app.config bearbeitet. Diese Dateien können sich in den Verzeichnissen / etc / riak oder / opt / riak / etc befinden. Standardmäßig verwendet Riak das Bitcask-Backend. Als erstes müssen wir die Konfigurationsdatei ändern, indem wir die folgende Zeile entfernen:
RIAK.CONF
## Delete this line:
storage_backend = bitcask
ADVANCED.CONFIG
{riak_kv,
[ %% Delete this line:
{storage_backend, riak_kv_bitcask_backend},
]}
APP.CONFIG
{riak_kv,
[ %% Delete this line:
{storage_backend, riak_kv_bitcask_backend},
]}
Als nächstes müssen wir die Notwendigkeit von RiakCS-Modulen für Riak zeigen und Riak anweisen, das angepasste Riak CS-Backend zu verwenden. Dazu müssen wir die Datei advanced.config oder app.config verwenden und die folgenden Optionen hinzufügen:
ADVANCED.CONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Other configs
{add_paths, ["/usr/lib/riak-cs/lib/riak_cs-2.1.1/ebin"]},
{storage_backend, riak_cs_kv_multi_backend},
{multi_backend_prefix_list, [{<<"0b:">>, be_blocks}]},
{multi_backend_default, be_default},
{multi_backend, [
{be_default, riak_kv_eleveldb_backend, [
{data_root, "/var/lib/riak/leveldb"}
]},
{be_blocks, riak_kv_bitcask_backend, [
{data_root, "/var/lib/riak/bitcask"}
]}
]},
%% Other configs
]}
APP.CONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Other configs
{add_paths, ["/usr/lib/riak-cs/lib/riak_cs-2.1.1/ebin"]},
{storage_backend, riak_cs_kv_multi_backend},
{multi_backend_prefix_list, [{<<"0b:">>, be_blocks}]},
{multi_backend_default, be_default},
{multi_backend, [
{be_default, riak_kv_eleveldb_backend, [
{data_root, "/var/lib/riak/leveldb"}
]},
{be_blocks, riak_kv_bitcask_backend, [
{data_root, "/var/lib/riak/bitcask"}
]}
]},
%% Other configs
]}
Es ist sehr wichtig zu beachten, dass viele dieser Werte von den für Ihr Betriebssystem spezifischen Verzeichnisvariationen abhängen. Befolgen Sie daher die entsprechenden Anweisungen. Der Parameter add_paths setzt beispielsweise voraus, dass Riak CS in / usr / lib / riak-cs installiert ist, während die Optionen data_root davon ausgehen, dass Riak in / var / lib installiert ist. (Hinweis. In meinem Fall war es add_paths - / usr / lib64 / riak-cs /).
Diese Konfiguration setzt voraus, dass der Riak CS auf demselben Computer wie der Riak installiert ist. Wenn nicht, muss das Paket auf einen separaten Host kopiert werden.
Einrichtung der Erstellung von Geschwistern
Jetzt müssen wir den Parameter allow_mult auf true setzen. Wir können eine Zeile in die Konfigurationsdatei riak.conf oder einen Abschnitt riak_core in die Datei advanced.config oder app.config einfügen.
RIAK.CONF
buckets.default.allow_mult = true
ADVANCED.CONFIG
{riak_core, [
%% Other configs
{default_bucket_props, [{allow_mult, true}]},
%% Other configs
]}
APP.CONFIG
{riak_core, [
%% Other configs
{default_bucket_props, [{allow_mult, true}]},
%% Other configs
]}
Auf diese Weise kann Riak die Geschwister erstellen, die Riak CS zum Funktionieren benötigt. Machen Sie sich keine Sorgen, wenn Sie über die Clientbibliothek eine Verbindung zu Riak CS herstellen: Sie müssen keine Konflikte lösen, da alle Riak CS-Vorgänge gemäß ihrer Definition streng konsistent sind.
Geschwister ist eine Möglichkeit, mehrere Objekte in einem Schlüssel zu speichern, sodass das Objekt an verschiedenen Knoten unterschiedliche Werte aufweist.
Hinweis: allow_mult Für
jeden Riak-Knoten, der auch Riak CS unterstützt, wird der Parameter allow_mult immer auf true gesetzt. Riak CS setzt den Start zurück, wenn der Wert falsch ist.
Festlegen des Hostnamens und der IP-Adresse
Jeder Riak-Knoten hat einen Namen, der in der Datei riak.conf mit der Option Knotenname angegeben werden kann. Wenn Sie die Konfigurationsdatei app.config verwenden, müssen Sie eine Datei mit dem Namen vm.args im selben Verzeichnis wie app.config erstellen und den Hostnamen mit dem Flag -name angeben. Wir empfehlen, dass Sie die Knoten im @ -Format benennen. Wenn Sie also drei laufende Knoten auf demselben Host 100.0.0.1 haben, können Sie sie riak1@100.0.0.1, riak2@100.0.0.1 und riak3@100.0.0.1 benennen oder sie spezifischer benennen, z. B. test_cluster1@100.0 .0.1, user_data3@100.0.0.1 usw. Das folgende Beispiel zeigt, wie der Hostname in riak1@127.0.0.1 geändert wird, was auf dem lokalen Host funktioniert.
RIAK.CONF
nodename = riak1@127.0.0.1
VM.ARGS
-name riak1@127.0.0.1
Sie müssen alle Knoten benennen, bevor Sie sie starten und dem Cluster hinzufügen.
Tuning-Test
Nachdem alle erforderlichen Knoteneinstellungen vorgenommen wurden, können wir versuchen, Riak:
SHELL zu starten
riak start
Ca. Die Antwort in meinem Fall:
Hier muss man ein wenig warten. Anschließend können Sie den laufenden Knoten testen.
SCHALE
riak ping
Wenn die Antwort Pong ist, läuft Riak: Wenn die Antwort Node ist, der nicht auf Pings reagiert, ist ein Fehler aufgetreten.
Ca. Die Antwort in meinem Fall:
Wenn der Knoten nicht richtig gestartet wurde, überprüfen Sie das Protokoll erlang.log.1 im Verzeichnis / log des Knotens, wenn das Problem identifiziert werden kann. Einer der häufigsten Fehler ist invalid_storage_backend. Dies zeigt an, dass der Pfad zur Riak CS-Bibliothek in advanced.config oder app.config falsch ist (oder Riak CS nicht auf dem Server installiert ist). Stellen Sie trotz dieses Fehlers sicher, dass Sie nicht von riak_cs_kv_multi_backend zu riak_kv_multi_backend geändert haben.
Riak für die Verwendung von Protokollpuffern konfigurieren
Die Einstellungen für den Riak-Protokollpuffer befinden sich im Abschnitt riak.conf oder riak_api in den Dateien advanced.config oder app.config, die sich im Verzeichnis / etc / riak / befinden. Standardmäßig hat der Host eine IP-Adresse von 127.0.0.1 und einen Port von 8087. Sie müssen diese ändern, wenn Sie Riak und Riak CS außerhalb Ihrer lokalen Umgebung ausführen möchten. Ersetzen Sie 127.0.0.1 durch die IP-Adresse des Riak-Hosts und des Ports 8087 durch eine geeignete.
RIAK.CONF
listener.protobuf.internal = 10.0.2.10:10001
ADVANCED.CONF
{riak_api, [
%% Other configs
{pb, ["10.0.2.10", 10001]},
%% Other configs
]}
APP.CONFIG
riak_api, [
%% Other configs
{pb, ["10.0.2.10", 10001]},
%% Other configs
]}
Hinweis: Der Wert des Parameters listener.protobuf.internal in der Datei riak.conf (oder der Wert des Parameters pb in der Datei advanced.conf / app.config) muss mit den Werten für riak_host in Riak CS riak-cs.config und Stanchion stanchion.conf (bzw. riak_host) übereinstimmen in den Dateien advanced.config / app.config).
Hinweis zur Portnummer
Möglicherweise benötigen Sie eine andere Portnummer, wenn der Port mit den von einer anderen Anwendung verwendeten Ports in Konflikt steht oder wenn Sie einen Load Balancer oder einen Proxyserver verwenden.
Es wird außerdem empfohlen, dass Benutzer sicherstellen, dass die Größe des Riak-Protokolls protobuf.backlog (oder pb_backlog in den Dateien advanced.config / app.config) gleich oder größer als die in riak-cs.config (oder) für den Riak CS angegebene Größe pool.request.size ist request_pool_size in den Dateien advanced.config / app.conf).
Wenn der Wert von pool.request.size in Riak CS geändert wurde, muss auch der Wert von protobuf.backlog in Riak aktualisiert werden.
Andere Riak-Einstellungen
Die Dateien riak.conf und advanced.config enthalten andere Einstellungen, mit denen konfiguriert wird, wie Protokolldateien generiert und wo sie gespeichert werden. Diese Einstellungen haben Standardwerte und sollten in den meisten Fällen funktionieren. Weitere Informationen finden Sie in unserer Dokumentation zu Konfigurationsdateien.
Einrichten einer IP-Adresse für Riak
Wenn Sie eine IP-Adresse für Riak konfigurieren, müssen Sie sicherstellen, dass die Riak-Knoten eine eindeutige IP-Adresse haben, unabhängig davon, ob Sie mit nur einem Knoten arbeiten oder dem System weitere Knoten hinzufügen. Die IP-Adresse von Riak ist in der Datei riak.conf oder - wenn Sie die Datei app.config verwenden - in der Konfigurationsdatei vm.args enthalten, die sich dort im Verzeichnis / etc / riak (oder / opt / riak / etc / auf anderen Betriebssystemen) befindet ).
Zu Beginn zeigt die Zeile mit der IP-Adresse von Riak an dieser Stelle auf den lokalen Host:
RIAK.CONF
nodename = riak@127.0.0.1
VM.ARGS
-name riak@127.0.0.1
Ersetzen Sie 127.0.0.1 durch Ihre bevorzugte IP-Adresse oder den Hostnamen des Riak-Hosts.
Leistungs- und Bandbreiteneinstellungen
Aus Leistungsgründen empfehlen wir dringend, Werte zu den Riak-Konfigurationsdateien riak.conf oder vm.args hinzuzufügen, die sich im Verzeichnis / etc / riak / oder / opt / riak / etc befinden.
RIAK.CONF
erlang.max_ports = 65536
VM.ARGS
## This setting should already be present for recent Riak installs.
-env ERL_MAX_PORTS 65536
Deaktivieren Sie JavaScript MapReduce
Es wird empfohlen, veraltetes JavaScript MapReduce nicht in Verbindung mit einer Version von Riak CS zu verwenden. Aus Leistungsgründen müssen Sie die virtuelle Maschine deaktivieren, die JavaScript MapReduce-Vorgänge ausführt, indem Sie sie in der Konfigurationsdatei riak.conf oder im Abschnitt riak_kv von advanced.conf oder app.config:
RIAK.CONF festlegen
javascript.map_pool_size = 0
javascript.reduce_pool_size = 0
javascript.hook_pool_size = 0
ADVANCED.CONFIG
{riak_kv, [
%% Other configs
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Other configs
]}
APP.CONFIG
{riak_kv, [
%% Other configs
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Other configs
]}
Als nächstes müssen wir die verbleibenden Komponenten des Riak CS-Systems konfigurieren.
Links
Riak Cloud Storage. Teil 1. Konfigurieren des Riak KV
Riak Cloud-Speichers. Teil 2. Konfigurieren der Riak CS
Riak Cloud Storage- Komponente . Teil 3. Stütze, Proxy und Lastausgleich, S3 Client
Originalhandbuch.