Riak Cloud-Speicher. Teil 1: Riak KV einrichten

Riak CS (Cloud-Speicher) – benutzerfreundliche Software zur Organisation der Objektspeicherung, die auf Riak KV läuft. Riak (KV) ist eine verteilte NoSQL-Schlüsselwertdatenbank. Riak CS ist auf Einfachheit, Verfügbarkeit und Verteilung von Cloud-Speicher jeder Größenordnung ausgelegt und kann zum Aufbau öffentlicher und privater Cloud-Architekturen oder als Infrastrukturspeicher für hoch ausgelastete Anwendungen und Dienste verwendet werden. Die Riak CS API ist mit Amazon S3 kompatibel und unterstützt den Empfang von Berichten zu verschiedenen Situationen.

Riak Cloud-Speicher. Teil 1: Riak KV einrichten
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, was bedeutet, dass jede Komponente für die Zusammenarbeit mit den anderen Komponenten konfiguriert werden muss:

  • Riak (KV) – ein Datenbanksystem, das als Endsystem fungiert.
  • Riak CS – Eine Cloud-Speicherschicht auf Riak, die Speicher- und API-Funktionen bereitstellt, Dateien und Metadaten in Riak speichert und sie dann an Endbenutzer verteilt.
  • Stütze – Verwaltet Abfragen mit global eindeutigen Entitäten wie Buckets und Benutzern in der Riak-Instanz. Zum Beispiel das Erstellen von Benutzern, das Erstellen oder Löschen von Buckets.

Darüber hinaus können Sie den S3-Client auch für die Verwendung beim Messaging mit dem Riak CS-System konfigurieren.

Sie sollten für jeden Riak CS-Knoten in Ihrem System einen Riak-Knoten einplanen. 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. Unter der Annahme, dass eine physische Maschine über genügend Leistung verfügt, um die Anforderungen sowohl der Riak- als auch der Riak CS-Knoten zu erfüllen, werden Sie aufgrund der geringeren Netzwerklatenz im Allgemeinen eine bessere Leistung feststellen.

Besteht Ihr System aus mehreren Knoten, geht es bei der Konfiguration vor allem darum, die Kommunikation zwischen den Komponenten einzurichten. Andere Einstellungen, etwa wo die Protokolldateien gespeichert werden, haben Standardwerte und müssen nur geändert werden, wenn Sie nicht standardmäßige Werte verwenden möchten.

Systemkomponenten einrichten. Riak KV für CS einrichten

Da es sich bei Riak CS um eine auf Riak basierende Anwendung handelt, ist es sehr wichtig, beim Ausführen von Riak CS auf Ihre Riak-Konfiguration zu achten. Dieses Dokument ist sowohl ein Riak-Konfigurationsleitfaden als auch ein Referenzdokument, das wichtige Konfigurationsparameter beschreibt.

Stellen Sie vor der Einrichtung sicher, dass Riak KV und Riak CS auf jedem Knoten in Ihrem Cluster installiert sind. Stanchion hingegen sollte nur auf einem Knoten im gesamten Cluster installiert werden.

Riak Cloud-Speicher. Teil 1: Riak KV einrichten

Backends für Riak CS

Das von Riak verwendete Standard-Backend ist Bitcask, aber das Riak CS-Paket enthält ein spezielles Backend, das vom Riak-Cluster verwendet werden muss, der Teil des Riak CS-Systems ist. Die reguläre Version verfügt über das Standard-Multi-Backend, das mit Riak geliefert wird.

Dieselben Riak-Buckets, die in Riak CS verwendet werden, verwenden sekundäre Indizes, die jetzt ein LevelDB-Backend erfordern. Andere Teile des Riak CS-Systems können von der Verwendung des Bticask-Backends profitieren. Die Verwendung eines Beispiel-Multi-Backends ist in Riak CS enthalten, um die Vorteile beider Backends zu nutzen und die beste Kombination aus Leistung und Funktionalität zu erreichen. Im nächsten Abschnitt wird beschrieben, wie Sie Riak richtig für die Verwendung dieses Multi-Backends konfigurieren.

Backend wird Riak zum Speichern von Daten verwenden. Riak KV hat mehrere Backends in seinem Arsenal: Bitcask, LevelDB, Memory und Multi.

Darüber hinaus verwendet das Speicherberechnungssystem Riak MapReduse, um Dateien in Buckets zusammenzufassen. Das bedeutet, dass Sie vor der Speicherberechnung allen Riak-Knoten mitteilen müssen, wo sie nach vorbereiteten Riak CS-Dateien suchen sollen.

Mehrere andere Parameter müssen geändert werden, um den Riak-Knoten als Teil des Riak CS-Systems zu konfigurieren, wie z. B. die IP-Adresse sowie die IP-Adresse und den Port für die Nachrichtenübermittlung über Protokollpuffer. Andere 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 des Riak CS-Systems konfigurieren.

Einrichten des Riak-Backends

Zunächst werden die Konfigurationsdateien riak.conf bzw. 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

ERWEITERTE KONFIGURATION

{riak_kv,
 [ %% Delete this line: 
{storage_backend, riak_kv_bitcask_backend},
 ]}

APP.KONFIG

{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 nachweisen und Riak anweisen, das konfigurierte Backend zu verwenden, das Riak CS bereitstellt. Wir müssen hierfür die Datei advanced.config oder app.config verwenden und die folgenden Optionen hinzufügen:

ERWEITERTE KONFIGURATION

{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.KONFIG

{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 Verzeichnisvarianten abhängen. Befolgen Sie daher die Anweisungen entsprechend. Beispielsweise geht die Option add_paths davon aus, 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/).

Bei dieser Konfiguration wird davon ausgegangen, dass Riak CS auf demselben Computer wie Riak installiert ist. Wenn nicht, muss das Paket auf einen separaten Host kopiert werden.

Einrichten der Geschwistererstellung

Jetzt müssen wir den Parameter „allow_mult“ auf „true“ setzen. Wir können eine Zeile in der Konfigurationsdatei riak.conf oder einen Abschnitt riak_core in advanced.config oder app.config hinzufügen.

RIAK.CONF

buckets.default.allow_mult = true

ERWEITERTE KONFIGURATION

{riak_core, [
    %% Other configs
    {default_bucket_props, [{allow_mult, true}]},
    %% Other configs
]}

APP.KONFIG

{riak_core, [
    %% Other configs
    {default_bucket_props, [{allow_mult, true}]},
    %% Other configs
]}

Dadurch kann Riak Geschwister erstellen, die für die Funktion von Riak CS erforderlich sind. Wenn Sie über die Client-Bibliothek eine Verbindung zu Riak CS herstellen, müssen Sie sich keine Sorgen machen: Sie müssen keine Konflikte lösen, da alle Riak CS-Vorgänge wie definiert streng konsistent sind.

Geschwister ist eine Möglichkeit, mehrere Objekte in einem Schlüssel zu speichern, sodass das Objekt auf verschiedenen Knoten unterschiedliche Werte hat.

Hinweis:allow_mult
Bei jedem Riak-Knoten, der auch Riak CS unterstützt, ist „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 Option nodename in riak.conf 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 mithilfe des Flags -name angeben. Wir empfehlen, Knotennamen im @-Format anzugeben. Wenn also drei Knoten auf einem Host 100.0.0.1 laufen, können Sie diese aufrufen [E-Mail geschützt] , [E-Mail geschützt] Und [E-Mail geschützt] oder Sie können spezifischere Namen vergeben, z [E-Mail geschützt] , [E-Mail geschützt] usw. Das folgende Beispiel zeigt die Änderung des Hostnamens in [E-Mail geschützt] , das auf localhost ausgeführt wird.

RIAK.CONF

 nodename = [email protected] 

VM.ARGS

 -name [email protected]

Sie müssen alle Knoten benennen, bevor Sie sie starten und dem Cluster beitreten.

Setup-Test

Nachdem nun alle notwendigen Node-Einstellungen abgeschlossen sind, können wir versuchen, Riak zu starten:

SHELL

 riak start 

Notiz Die Antwort in meinem Fall:

Riak Cloud-Speicher. Teil 1: Riak KV einrichten

Hier müssen Sie etwas warten. Anschließend können Sie mit dem Testen des laufenden Knotens beginnen.

SHELL

 riak ping

Wenn die Antwort „Pong“ lautet, läuft Riak. Wenn die Antwort „Knoten reagiert nicht auf Pings“ lautet, ist ein Fehler aufgetreten.

Notiz Die Antwort in meinem Fall:

Riak Cloud-Speicher. Teil 1: Riak KV einrichten

Wenn der Knoten nicht ordnungsgemäß gestartet wurde, sehen Sie sich das Protokoll erlang.log.1 im Verzeichnis /log des Knotens an, um festzustellen, ob das Problem vorliegt. Einer der häufigsten Fehler ist invalid_storage_backend. Dies weist darauf hin, dass der Pfad zur Riak CS-Bibliothek in advanced.config oder in 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 gewechselt haben.

Riak für die Verwendung von Protokollpuffern konfigurieren

Die Riak-Protokollpuffereinstellungen befinden sich in riak.conf oder im Abschnitt riak_api in den Dateien advanced.config oder app.config, 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 Riak und Riak CS in einer nicht lokalen Umgebung ausführen möchten. Ersetzen Sie 127.0.0.1 durch die Riak-Host-IP-Adresse und Port 8087 durch eine geeignete.

RIAK.CONF

 listener.protobuf.internal = 10.0.2.10:10001

ERWEITERTE KONF

{riak_api, [
    %% Other configs
    {pb, ["10.0.2.10", 10001]},
    %% Other configs
]}

APP.KONFIG

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 advanced.conf/app.config) muss mit den Werten für riak_host in Riak CS riak-cs.config und übereinstimmen Stanchion stanchion.conf-Dateien (bzw. riak_host in erweiterten .config/app.config-Dateien).

Ein 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 Load Balancer oder Proxyserver verwenden.

Es wird außerdem empfohlen, dass Benutzer sicherstellen, dass die Größe von Riak protobuf.backlog (oder in advanced.config/app.config-Dateien ist dies pb_backlog) gleich oder größer als die für Riak CS in riak-cs angegebene pool.request.size ist. config (oder 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 weitere Einstellungen, die die Erstellung von Protokolldateien und deren Speicherort konfigurieren. Diese Einstellungen haben Standardwerte und sollten in den meisten Fällen funktionieren. Für weitere Informationen empfehlen wir die Lektüre unserer Dokumentation zu Konfigurationsdateien.

Einrichten einer IP-Adresse für Riak

Beim Einrichten einer IP-Adresse für Riak 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 Riak-IP-Adresse ist in 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/) befindet. auf anderen Betriebssystemen).

Zunächst verweist die Zeile mit der Riak-IP-Adresse auf den Localhost an diesem Standort:

RIAK.CONF

 nodename = [email protected]

VM.ARGS

 -name [email protected]

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

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 von JavaScript MapReduce

Es wird empfohlen, das veraltete JavaScript MapReduce mit keiner Version von Riak CS zu verwenden. Aus Leistungsgründen sollten Sie die virtuelle Maschine deaktivieren, die JavaScript-MapReduce-Vorgänge ausführt, indem Sie in der Konfigurationsdatei riak.conf oder im Abschnitt riak_kv von advanced.conf oder app.config Folgendes festlegen:

RIAK.CONF

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

ERWEITERTE KONFIGURATION

{riak_kv, [
    %% Other configs
    {map_js_vm_count, 0},
    {reduce_js_vm_count, 0},
    {hook_js_vm_count, 0}
    %% Other configs
]}

APP.KONFIG

{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 restlichen Komponenten des Riak CS-Systems konfigurieren.

Originalhandbuch.

Source: habr.com

Kommentar hinzufügen