Riak Cloud Storage. Teil 1. Einrichtung von Riak KV

Riak CS (Cloud-Speicher) – eine benutzerfreundliche Software zur Organisation von Objektspeichern, die auf Riak KV aufbaut. Riak (KV) ist eine verteilte NoSQL-Datenbank vom Typ „Key-Value“. Riak CS wurde entwickelt, um Einfachheit, Verfügbarkeit und Verteilung von Cloud-Speicher in beliebiger Größenordnung zu gewährleisten und kann verwendet werden, um Cloud-Architekturen — sowohl öffentliche als auch private — aufzubauen oder als infrastrukturellen Speicher für stark belastete Anwendungen und Dienste zu dienen. Die Riak CS API ist mit Amazon S3 kompatibel und unterstützt die Möglichkeit, Berichte über verschiedene Situationen zu erstellen.

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

Im Riak CS-Speichersystem arbeiten drei Komponenten zusammen, was eine zwingende Konfiguration jeder Komponente erfordert, damit sie mit den anderen Komponenten funktioniert:

  • Riak (KV) – ein Datenbanksystem, das als Endsystem fungiert.
  • Riak CS – eine Cloud-Speicherschicht über Riak, die Speicherung und API-Funktionalitäten bereitstellt, Dateien und Metadaten in Riak speichert und diese dann an Endbenutzer überträgt.
  • Stanchion — verwaltet Anfragen, die global eindeutige Entitäten wie Buckets und Benutzer in einer Riak-Instanz betreffen. Zum Beispiel die Erstellung von Benutzern, das Erstellen oder Löschen von Buckets.

Darüber hinaus können Sie auch einen S3-Client einrichten, um mit dem Riak CS-System zu kommunizieren.

Sie sollten sicherstellen, dass für jeden Riak CS-Knoten in Ihrem System ein Riak-Knoten vorhanden ist. Riak- und Riak-CS-Knoten können auf unterschiedlichen physischen Maschinen betrieben werden, aber in den meisten Fällen ist es vorteilhafter, sowohl einen Riak-Knoten als auch einen Riak-CS-Knoten auf derselben physischen Maschine zu betreiben. Vorausgesetzt, dass eine physische Maschine genügend Leistung hat, um den Anforderungen beider Knoten gerecht zu werden, werden Sie in der Regel eine bessere Leistung erzielen, da die Netzwerklatenz verringert wird.

Wenn Ihr System aus mehreren Knoten besteht, besteht die Konfiguration zunächst darin, die Kommunikation zwischen den Komponenten einzurichten. Andere Einstellungen, wie z. B. wo die 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 aufbaut, ist es wichtig, bei der Konfiguration von Riak darauf zu achten, wenn Riak CS gestartet wird. Dieses Dokument dient sowohl als Anleitung zur Konfiguration von Riak als auch als Referenz für wichtige Konfigurationsparameter.

Stellen Sie vor der Konfiguration 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 sein.

Riak Cloud Storage. Teil 1. Einrichtung von Riak KV

Backends für Riak CS

Standardmäßig verwendet Riak als Backend Bitcask, 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 Standardversion gibt es ein multivariantes Backend, das mit Riak geliefert wird.

Die gleichen Riak-Buckets, die innerhalb von Riak CS verwendet werden, nutzen sekundäre Indizes, die jetzt ein 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 zu nutzen und die beste Kombination aus Leistung und Funktionalität zu erreichen. Im nächsten Abschnitt erfahren Sie, wie Sie Riak richtig für die Verwendung dieses Multi-Backends konfigurieren.

Backend ist das, was Riak zur Speicherung von Daten verwendet. Riak KV verfügt über mehrere Backends: Bitcask, LevelDB, Memory und Multi.

Darüber hinaus verwendet das Speicherkalkulationssystem Riak MapReduce zur Aggregation von Dateien in Buckets. Das bedeutet, dass Sie allen Riak-Knoten mitteilen müssen, wo sie nach den vorbereiteten Riak CS-Dateien suchen sollen, bevor die Speicherung berechnet wird.

Einige andere Parameter müssen geändert werden, um einen Riak-Knoten als Teil des Riak CS-Systems einzurichten, wie z. B. die IP-Adresse und die IP-Adresse sowie der Port für die Kommunikation über Protocol Buffers. Die restlichen Einstellungen können nach Bedarf geändert werden. Die folgenden Abschnitte beschreiben, wie man einen Riak-Knoten für den Betrieb als Teil des Riak CS-Systems konfiguriert.

Riak-Backend einrichten

Zunächst werden die Konfigurationsdateien riak.conf oder advanced.config/app.config bearbeitet. Diese Dateien finden sich entweder in /etc/riak oder in /opt/riak/etc. Standardmäßig verwendet Riak das Bitcask-Backend. Das erste, was wir tun müssen, ist, die Konfigurationsdatei zu ändern, indem wir die folgende Zeile entfernen:

RIAK.CONF

## Delete this line:
storage_backend = bitcask

ADVANCED.CONFIG

{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},
]}

Anschließend müssen wir die Notwendigkeit der RiakCS-Module für Riak angeben und Riak anweisen, das konfigurierte Backend zu verwenden, das Riak CS unterstützt. Dazu verwenden wir die Dateien advanced.config oder app.config und fügen die folgenden Optionen hinzu:

ADVANCED.CONFIG

{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
]}

APP.CONFIG

{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
]}

Es ist wichtig zu beachten, dass viele dieser Werte von den spezifischen Verzeichnismodifikationen Ihres Betriebssystems abhängen. Bitte befolgen Sie 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 annähernd auf die Installation von Riak in /var/lib. (Anmerkung: In meinem Fall war dies add_paths — /usr/lib64/riak-cs/).

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

Einrichtung der Symlink-Erstellung

Jetzt müssen wir den Parameter allow_mult auf true setzen. Dies können wir durch Hinzufügen einer Zeile in die Konfigurationsdatei riak.conf oder den Abschnitt riak_core in advanced.config oder app.config tun.

RIAK.CONF

buckets.default.allow_mult = true

ADVANCED.CONFIG

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

APP.CONFIG

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

Dies ermöglicht es Riak, Symlinks zu erstellen, die für den Betrieb 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 synchronisiert sind.

Symlink ist eine Methode zur Speicherung mehrerer Objekte unter einem Schlüssel, sodass ein Objekt unterschiedliche Werte auf verschiedenen Knoten haben kann.

Hinweis: allow_mult
Jeder Riak-Knoten, der auch Riak CS unterstützt, wird immer den Wert true für den Parameter allow_mult haben. Riak CS wird den Start abbrechen, 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 selben Verzeichnis erstellen, in dem sich die app.config befindet, und den Knotennamen mit dem Flag -name angeben. Wir empfehlen, den Knoten Namen im Format @ zu vergeben. Wenn Sie also drei Knoten auf einem Host 100.0.0.1 betreiben, 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 zu riak1@127.0.0.1, das auf dem lokalen Host funktionieren wird.

RIAK.CONF

 nodename = riak1@127.0.0.1 

VM.ARGS

 -name riak1@127.0.0.1

Sie müssen allen Knoten Namen zuweisen, bevor Sie sie starten und in den Cluster einfügen.

Konfigurationstest

Jetzt, da alle erforderlichen Knoten-Konfigurationen vorgenommen wurden, können wir versuchen, Riak zu starten:

SHELL

 riak start 

Hinweis. Die Antwort in meinem Fall war:

Riak Cloud Storage. Teil 1. Einrichtung von Riak KV

Hier müssen Sie eine Weile warten. Dann können Sie den Test des gestarteten Knotens beginnen.

SHELL

 riak ping

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

Hinweis. Die Antwort in meinem Fall war:

Riak Cloud Storage. Teil 1. Einrichtung von Riak KV

Wenn der Knoten nicht korrekt gestartet wurde, überprüfen Sie das Protokoll erlang.log.1 im Verzeichnis /log des Knotens, um das Problem möglicherweise zu identifizieren. Einer der häufigsten Fehler ist `invalid_storage_backend`, was darauf hinweist, dass der Pfad zur Riak CS-Bibliothek in der `advanced.config` oder in der `app.config` nicht korrekt ist (oder dass Riak CS nicht auf dem Server installiert ist). Stellen Sie sicher, dass Sie diesen Fehler nicht haben, und dass Sie nicht von `riak_cs_kv_multi_backend` auf `riak_kv_multi_backend` geändert haben.

Riak für die Verwendung von Protokoll-Puffern (protocol buffers) konfigurieren.

Die Einstellungen für die Protokoll-Puffer von Riak befinden sich in `riak.conf` oder im `riak_api`-Abschnitt 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 Riak und Riak CS nicht in einer lokalen Umgebung ausführen möchten. Ersetzen Sie die IP-Adresse 127.0.0.1 des Riak-Knotens und den Port 8087 durch die passenden Werte.

RIAK.CONF

 listener.protobuf.internal = 10.0.2.10:10001

ADVANCED.CONF

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

APP.CONFIG

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

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

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

Es wird auch empfohlen, dass die Benutzer sicherstellen, dass die Größe von Riak protobuf.backlog (oder pb_backlog in den Dateien advanced.config / app.config) gleich oder größer ist als die für Riak CS in riak-cs.config angegebene Größe pool.request.size (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.

Weitere Riak-Einstellungen

Die Dateien riak.conf und advanced.config enthalten weitere Einstellungen, die die Erstellung von Protokolldateien und deren Speicherorte 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 müssen Sie sicherstellen, dass die Riak-Nodes über eine eindeutige IP-Adresse verfügen, egal ob Sie nur mit einem Node arbeiten oder zusätzliche Nodes 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 im Verzeichnis /etc/riak (oder in /opt/riak/etc/ in anderen Betriebssystemen) zu finden ist.

Zu Beginn zeigt die Zeile mit der IP-Adresse von Riak 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 gewünschte IP-Adresse oder den Hostnamen des Riak-Nodes.

Leistungs- und Bandbreiteneinstellungen

Aus Leistungsgründen empfehlen wir dringend, Werte in die 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

Deaktivierung von JavaScript MapReduce

Es wird empfohlen, das veraltete JavaScript MapReduce nicht in Verbindung mit einer Version von Riak CS zu verwenden. Aus Leistungsgründen sollten Sie die virtuelle Maschine, die JavaScript MapReduce-Operationen ausführt, durch eine Einstellung in der riak.conf Konfigurationsdatei oder im riak_kv-Bereich der advanced.conf oder app.config deaktivieren:

RIAK.CONF

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

ADVANCED.CONFIG

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

APP.CONFIG

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

Als nächstes müssen wir die verbleibenden Komponenten des Riak CS-Systems konfigurieren.

Originalanleitung.

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster