Riak Cloud Storage. Teil 1. Konfiguration von Riak KV

Riak CS (Cloud Storage) – eine einfach zu verwendende Software zur Organisation von Objektspeichern, die auf Riak KV basiert. Riak (KV) ist eine verteilte NoSQL-Datenbank vom Typ „Key-Value“. Riak CS wurde entwickelt, um Einfachheit, VerfĂŒgbarkeit und Verteilung des Cloud-Speichers in beliebigem Maßstab zu gewĂ€hrleisten und kann zum Aufbau von Cloud-Architekturen – sowohl öffentlich als auch privat – oder als infrastrukturelles Speicher fĂŒr hochbelastete Anwendungen und Dienste verwendet werden. Die Riak CS API ist mit Amazon S3 kompatibel und unterstĂŒtzt die Möglichkeit zur Berichterstattung ĂŒber verschiedene Situationen.

Riak Cloud Storage. Teil 1. Konfiguration von Riak KV
Dieser Artikel ist eine freie Übersetzung des offiziellen Handbuchs fĂŒr das System Riak CS Version 2.1.1

Im Speichersystem Riak CS arbeiten drei Komponenten zusammen, was bedeutet, dass jede Komponente eingestellt werden muss, um mit den anderen Komponenten zu arbeiten:

  • Riak (KV) – ein Datenbanksystem, das als Endsystem fungiert.
  • Riak CS – eine Cloud-Speicherschicht ĂŒber Riak, die Speicherung und API-Funktionen bereitstellt, Dateien und Metadaten in Riak speichert und diese dann den Endbenutzern ĂŒbertrĂ€gt.
  • Stanchion – verwaltet Anfragen, die global eindeutige EntitĂ€ten wie Buckets und Benutzer in einem Riak-Exemplar betreffen. Zum Beispiel das Erstellen von Benutzern, das Erstellen oder Löschen von Buckets.

ZusĂ€tzlich können Sie auch einen S3-Client fĂŒr die Kommunikation mit dem Riak CS-System einrichten.

Sie mĂŒssen sicherstellen, dass jeder Riak CS-Knoten in Ihrem System ĂŒber einen Riak-Knoten verfĂŒgt. Riak- und Riak CS-Knoten können auf unterschiedlichen physischen Maschinen betrieben werden, aber in den meisten FĂ€llen ist es vorzuziehen, einen Riak-Knoten und einen Riak CS-Knoten auf derselben physischen Maschine zu betreiben. Vorausgesetzt, die physische Maschine hat genĂŒgend Leistung, um die Anforderungen beider Riak- und Riak CS-Knoten zu erfĂŒllen, werden Sie in der Regel eine bessere Leistung aufgrund verringerter Netzwerkverzögerungen feststellen.

Wenn Ihr System aus mehreren Knoten besteht, besteht die Konfiguration hauptsĂ€chlich darin, die Kommunikation zwischen den Komponenten einzurichten. Andere Einstellungen, wie und wo Protokolldateien gespeichert werden, haben Standardwerte und mĂŒssen nur geĂ€ndert werden, wenn Sie benutzerdefinierte 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, auf Ihre Riak-Konfiguration zu achten, wenn Riak CS gestartet wird. Dieses Dokument dient sowohl als Anleitung zur Konfiguration von Riak als auch als 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. Stanchion muss dagegen nur auf einem Knoten im gesamten Cluster installiert werden.

Riak Cloud Storage. Teil 1. Konfiguration von Riak KV

Backends fĂŒr Riak CS

StandardmĂ€ĂŸig verwendet Riak den Bitcask-Backend, aber das Riak CS-Paket enthĂ€lt ein spezielles Backend, das vom Riak-Cluster, das Teil des Riak CS-Systems ist, verwendet werden sollte. In der regulĂ€ren Version gibt es einen Standard-Multi-Backend, der mit Riak geliefert wird.

Die gleichen Riak-Buckets, die innerhalb von Riak CS verwendet werden, nutzen sekundĂ€re Indizes, die jetzt das LevelDB-Backend erfordern. Andere Teile des Riak CS-Systems können vom Bticask-Backend profitieren. Die Verwendung des exemplarischen Multi-Backends ist in Riak CS integriert, um die Vorteile beider Backends fĂŒr die beste Kombination aus Leistung und FunktionalitĂ€t zu nutzen. Der nĂ€chste Abschnitt beschreibt, wie Riak richtig konfiguriert wird, um dieses Multi-Backend zu verwenden.

Backend ist das, was Riak zur Speicherung von Daten verwenden wird. Riak KV hat mehrere Backends im Angebot: Bitcask, LevelDB, Memory und Multi.

ZusĂ€tzlich verwendet das System zur Berechnung des Speicherplatzes Riak MapReduce, um Dateien in Buckets zu summieren. Das bedeutet, dass Sie allen Riak-Knoten mitteilen mĂŒssen, wo sie die vorbereiteten Riak CS-Dateien vor der Berechnung des Speichers suchen sollen.

Einige weitere Parameter mĂŒssen geĂ€ndert werden, um den Riak-Knoten als Teil des Riak CS-Systems einzurichten, wie beispielsweise die IP-Adresse und der Port fĂŒr die NachrichtenĂŒbertragung ĂŒber Protocol Buffers. Die restlichen Einstellungen können bei Bedarf geĂ€ndert werden. Die folgenden Abschnitte beschreiben, wie der Riak-Knoten konfiguriert wird, um als Teil des Riak CS-Systems zu arbeiten.

Riak-Backend konfigurieren

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. Die erste Aufgabe besteht darin, die Konfigurationsdatei zu Ă€ndern, indem die folgende Zeile entfernt wird:

RIAK.CONF

## Delete this line:
storage_backend = bitcask

{riak_kv, [ %% Diese Zeile löschen: {storage_backend, riak_kv_bitcask_backend}, ]}

APP.CONFIG

{riak_kv, [ %% Diese Zeile löschen: {storage_backend, riak_kv_bitcask_backend}, ]}

Als NĂ€chstes mĂŒssen wir die Notwendigkeit der RiakCS-Module fĂŒr Riak zeigen und Riak anweisen, das konfigurierte Backend zu verwenden, das Riak CS unterstĂŒtzt. Dazu mĂŒssen wir die Dateien advanced.config oder app.config verwenden und folgende Optionen hinzufĂŒgen:

{eleveldb, [ {total_leveldb_mem_percent, 30} ]}, {riak_kv, [ %% Weitere Konfigurationen {add_paths, ["/usr/lib/riak-cs/lib/riak_cs-2.1.1/ebin"]}, {storage_backend, riak_cs_kv_multi_backend}, {multi_backend_prefix_list, [{<>, 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"} ]} ]}, %% Weitere Konfigurationen ]}

{riak_kv, [ %% Diese Zeile löschen: {storage_backend, riak_kv_bitcask_backend}, ]}

Es ist sehr wichtig zu beachten, dass viele dieser Werte von spezifischen Verzeichnisvariationen abhĂ€ngen, die fĂŒr Ihr Betriebssystem typisch sind. Befolgen Sie daher die Anweisungen entsprechend. Zum Beispiel geht der Parameter add_paths davon aus, dass Riak CS in /usr/lib/riak-cs installiert ist, wĂ€hrend die Parameter data_root annehmen, dass Riak in /var/lib installiert ist. (Hinweis: In meinem Fall war es add_paths — /usr/lib64/riak-cs/).

{riak_kv, [ %% Diese Zeile löschen: {storage_backend, riak_kv_bitcask_backend}, ]}

Es ist sehr wichtig zu beachten, dass viele dieser Werte von spezifischen Verzeichnisvariationen abhĂ€ngen, die fĂŒr Ihr Betriebssystem typisch sind. Befolgen Sie daher die Anweisungen entsprechend. Zum Beispiel geht der Parameter add_paths davon aus, dass Riak CS in /usr/lib/riak-cs installiert ist, wĂ€hrend die Parameter data_root annehmen, dass Riak in /var/lib installiert ist. (Hinweis: In meinem Fall war es add_paths — /usr/lib64/riak-cs/).

Diese Konfiguration setzt voraus, dass Riak CS auf demselben Rechner wie Riak installiert ist. Andernfalls muss das Paket auf einen separaten Host kopiert werden.

Konfiguration zur Erstellung von Siblingen

Jetzt mĂŒssen wir den Parameter allow_mult auf true setzen. Wir können die Zeile in der Konfigurationsdatei riak.conf oder im Abschnitt riak_core in advanced.config oder app.config hinzufĂŒgen.

buckets.default.allow_mult = true

RIAK.CONF

{riak_core, [
    %% Weitere Konfigurationen
    {default_bucket_props, [{allow_mult, true}]},
    %% Weitere Konfigurationen
]}

{riak_kv, [ %% Diese Zeile löschen: {storage_backend, riak_kv_bitcask_backend}, ]}

Dadurch kann Riak Siblinge erstellen, die fĂŒr die FunktionalitĂ€t von Riak CS erforderlich sind. Wenn Sie sich ĂŒber eine Client-Bibliothek mit Riak CS verbinden, mĂŒssen Sie sich keine Sorgen machen: Sie mĂŒssen keine Konflikte lösen, da alle Riak CS-Operationen strikt gemĂ€ĂŸ ihrer Definition konsistent sind.

{riak_kv, [ %% Diese Zeile löschen: {storage_backend, riak_kv_bitcask_backend}, ]}

Dadurch kann Riak Siblinge erstellen, die fĂŒr die FunktionalitĂ€t von Riak CS erforderlich sind. Wenn Sie sich ĂŒber eine Client-Bibliothek mit Riak CS verbinden, mĂŒssen Sie sich keine Sorgen machen: Sie mĂŒssen keine Konflikte lösen, da alle Riak CS-Operationen strikt gemĂ€ĂŸ ihrer Definition konsistent sind.

Sibling

ist eine Methode zur Speicherung mehrerer Objekte unter einem SchlĂŒssel, damit das Objekt unterschiedliche Werte auf verschiedenen Knoten hat. Hinweis: allow_mult

Hinweis: allow_mult
Jeder Riak-Knoten, der auch Riak CS unterstĂŒtzt, wird die Parameter allow_mult immer auf true setzen. Riak CS wird den Start zurĂŒcksetzen, wenn der Wert false ist.

Konfiguration des Knotennamens und der IP-Adresse

Jeder Riak-Knoten hat einen Namen, der in der riak.conf unter der Option nodename angegeben werden kann. Wenn Sie die Konfigurationsdatei app.config verwenden, mĂŒssen Sie eine Datei mit dem Namen vm.args im gleichen Verzeichnis wie app.config erstellen und den Knotennamen mit dem Flag -name angeben. Wir empfehlen, Knoten im Format @ zu benennen. Falls Sie also drei Knoten auf demselben Host 100.0.0.1 ausgefĂŒhrt haben, können Sie sie riak1@100.0.0.1, riak2@100.0.0.1 und riak3@100.0.0.1 oder spezifischere Namen wie test_cluster1@100.0.0.1, user_data3@100.0.0.1 usw. nennen. Das folgende Beispiel zeigt die Änderung des Knotennamens in den Namen riak1@127.0.0.1, 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 allen Knoten vor dem Starten und dem HinzufĂŒgen zum Cluster Namen zuweisen.

Testkonfiguration

Jetzt, wo alle erforderlichen Knoteninstellungen vorgenommen wurden, können wir versuchen, Riak zu starten:

SHELL

 riak start 

Hinweis: Meine Antwort lautet in meinem Fall:

Riak Cloud Storage. Teil 1. Konfiguration von Riak KV

Hier mĂŒssen Sie einen Moment warten. Danach können Sie den Test des laufenden Knotens beginnen.

SHELL

 riak ping

Wenn die Antwort pong lautet, ist Riak gestartet: Wenn die Antwort Node not responding to pings lautet, ist etwas schiefgegangen.

Hinweis: Meine Antwort lautet in meinem Fall:

Riak Cloud Storage. Teil 1. Konfiguration von Riak KV

Wenn der Knoten nicht korrekt gestartet ist, schauen Sie sich das Journal erlang.log.1 im Verzeichnis /log des Knotens an, wenn das Problem möglicherweise identifiziert werden kann. Einer der hÀufigsten Fehler ist invalid_storage_backend. Dies weist darauf hin, dass der Pfad zur Riak CS-Bibliothek in der advanced.config oder in der app.config falsch ist (oder dass Riak CS nicht auf dem Server installiert ist). Stellen Sie dennoch sicher, dass Sie nicht von riak_cs_kv_multi_backend auf riak_kv_multi_backend gewechselt sind.

Konfiguration von Riak zur Verwendung von Protokollpuffern (protocol buffers)

Die Einstellungen fĂŒr die Protokollpuffer von Riak befinden sich in riak.conf oder im Abschnitt riak_api in den advanced.config- oder app.config-Dateien, die sich im Verzeichnis /etc/riak/ befinden. StandardmĂ€ĂŸig hat der Host die IP-Adresse 127.0.0.1 und den Port 8087. Sie mĂŒssen diese Ă€ndern, wenn Sie planen, Riak und Riak CS nicht in einer lokalen Umgebung auszufĂŒhren. Ersetzen Sie die IP-Adresse 127.0.0.1 des Riak-Knotens und den Port 8087 durch die geeigneten.

RIAK.CONF

 listener.protobuf.internal = 10.0.2.10:10001

ADVANCED.CONF

{riak_api, [
    %% Weitere Konfigurationen
    {pb, ["10.0.2.10", 10001]},
    %% Weitere Konfigurationen
]}

{riak_kv, [ %% Diese Zeile löschen: {storage_backend, riak_kv_bitcask_backend}, ]}

riak_api, [
    %% Weitere Konfigurationen
    {pb, ["10.0.2.10", 10001]},
    %% Weitere Konfigurationen
]}

Hinweis:Der Wert des Parameters listener.protobuf.internal in der riak.conf (oder der Wert des Parameters pb in der advanced.conf / app.config) Datei muss den Werten fĂŒr riak_host in der Riak CS riak-cs.config und Stanchion stanchion.conf (oder riak_host entsprechend in den advanced.config / app.config Dateien) entsprechen.

Hinweis zur Portnummer
Eine andere Portnummer kann erforderlich sein, wenn der Port mit Ports in Konflikt steht, die von einer anderen Anwendung verwendet werden, oder wenn Sie einen Lastenausgleich oder einen Proxy-Server verwenden.

Es wird auch empfohlen, dass Benutzer sicherstellen, dass die GrĂ¶ĂŸe von Riak protobuf.backlog (oder in den advanced.config / app.config Dateien pb_backlog) gleich oder grĂ¶ĂŸer ist als die GrĂ¶ĂŸe von pool.request.size, die fĂŒr Riak CS in der riak-cs.config (oder request_pool_size in den advanced.config / app.conf Dateien) angegeben ist.

Wenn der Wert von pool.request.size in Riak CS geÀndert wurde, muss auch der Wert von protobuf.backlog in Riak aktualisiert werden.

Weitere Riak-Einstellungen

Die Dateien riak.conf und advanced.config enthalten weitere Einstellungen, die die Erstellung von Protokolldateien und deren Pfade konfigurieren. Diese Einstellungen haben Standardwerte und sollten in den meisten FĂ€llen funktionieren. FĂŒr weitere Informationen empfehlen wir, unsere Dokumentation zu den Konfigurationsdateien zu lesen.

Konfiguration der IP-Adresse fĂŒr Riak

Bei der Konfiguration IP-Adressen von Riak sollten Sie sicherstellen, dass die Riak-Knoten eine eindeutige IP-Adresse haben, egal ob Sie nur mit einem Knoten arbeiten oder zusĂ€tzliche Knoten zum System hinzufĂŒgen. Die IP-Adresse von Riak befindet sich in der riak.conf oder – wenn Sie die app.config Datei verwenden – in der vm.args Konfigurationsdatei, die sich ebenfalls im Verzeichnis /etc/riak (oder in /opt/riak/etc in anderen Betriebssystemen) befindet.

UrsprĂŒnglich zeigt die Zeile, die die IP-Adresse von Riak enthĂ€lt, auf den lokalen Host an dieser Stelle:

RIAK.CONF

 nodename = riak@127.0.0.1

VM.ARGS

 -name riak@127.0.0.1

Ersetzen Sie 127.0.0.1 durch die bevorzugte IP-Adresse oder den Hostnamen des Riak-Knotens.

Leistungs- und Bandbreiteneinstellungen

Aus LeistungsgrĂŒnden empfehlen wir dringend, Werte in die Riak-Konfigurationsdateien riak.conf oder vm.args, die sich in den Verzeichnissen /etc/riak/ oder /opt/riak/etc befinden, hinzuzufĂŒgen.

RIAK.CONF

 erlang.max_ports = 65536

VM.ARGS

## This setting should already be present for recent Riak installs.
 -env ERL_MAX_PORTS 65536

Deaktivierung von JavaScript MapReduce

Es wird empfohlen, das veraltete JavaScript MapReduce nicht mit irgendeiner Version von Riak CS zu verwenden. Aus LeistungsgrĂŒnden sollten Sie die virtuelle Maschine, die JavaScript MapReduce-Operationen ausfĂŒhrt, in der riak.conf Konfigurationsdatei oder im riak_kv Abschnitt von advanced.conf oder app.config deaktivieren:

RIAK.CONF

 javascript.map_pool_size = 0
 javascript.reduce_pool_size = 0
 javascript.hook_pool_size = 0 

{riak_kv, [ %% Diese Zeile löschen: {storage_backend, riak_kv_bitcask_backend}, ]}

{riak_kv, [
    %% Weitere Konfigurationen
    {map_js_vm_count, 0},
    {reduce_js_vm_count, 0},
    {hook_js_vm_count, 0}
    %% Weitere Konfigurationen
]}

{riak_kv, [ %% Diese Zeile löschen: {storage_backend, riak_kv_bitcask_backend}, ]}

{riak_kv, [
    %% Weitere Konfigurationen
    {map_js_vm_count, 0},
    {reduce_js_vm_count, 0},
    {hook_js_vm_count, 0}
    %% Weitere Konfigurationen
]}

Als NĂ€chstes mĂŒssen wir die verbleibenden Komponenten des Riak CS-Systems einrichten.

Originalhandbuch.

Quelle: habr.com

60GB SSD 8Gb DDR4