Riak Cloud Storage. Parte 1. Configurazione di Riak KV

Riak CS (Cloud Storage) – software facile da usare per la gestione dello storage degli oggetti, che funziona sopra Riak KV. Riak (KV) è un database distribuito NoSQL di tipo chiave-valore. Riak CS è progettato per garantire semplicità, disponibilità e distribuzione dello storage cloud su qualsiasi scala e può essere utilizzato per costruire architetture cloud — sia pubbliche che private — o come storage infrastrutturale per applicazioni e servizi ad alto carico. L'API di Riak CS è compatibile con Amazon S3 e supporta la generazione di report su varie situazioni.

Riak Cloud Storage. Parte 1. Configurazione di Riak KV
Questo articolo è una traduzione libera della guida ufficiale per il sistema Riak CS versione 2.1.1

Nel sistema di storage Riak CS, tre componenti operano insieme, il che richiede la configurazione obbligatoria di ciascun componente per lavorare con gli altri:

  • Riak (KV) – un sistema di database che funge da sistema finale.
  • Riak CS — uno strato di storage cloud sopra Riak, che fornisce storage e funzionalità API, memorizza file e metadati in Riak e successivamente li trasmette agli utenti finali.
  • Stanchion — gestisce le richieste che coinvolgono entità uniche a livello globale, come i bucket e gli utenti nell'istanza di Riak. Ad esempio, la creazione di utenti, la creazione o la rimozione di bucket.

Inoltre, puoi configurare un client S3 per utilizzarlo nella comunicazione con il sistema Riak CS.

Devi pianificare la presenza di un nodo Riak per ogni nodo Riak CS nel tuo sistema. I nodi Riak e Riak CS possono essere eseguiti su macchine fisiche diverse, ma nella maggior parte dei casi è preferibile eseguire un nodo Riak e un nodo Riak CS sulla stessa macchina fisica. Presumendo che una macchina fisica abbia abbastanza potenza per soddisfare le esigenze di entrambi i nodi Riak e Riak CS, in genere vedrai migliori prestazioni grazie alla riduzione delle latenze di rete.

Se il tuo sistema è composto da più nodi, la configurazione consiste principalmente nella gestione della comunicazione tra i componenti. Altre impostazioni, come e dove verranno memorizzati i log, hanno valori predefiniti e necessitano di modifiche solo se desideri utilizzare valori non standard.

Configurazione dei componenti del sistema. Configurazione di Riak KV per CS

Poiché Riak CS è un'applicazione sviluppata sopra Riak, è fondamentale prestare attenzione alla configurazione di Riak quando viene avviato Riak CS. Questo documento funge sia da guida per la configurazione di Riak sia da documento di riferimento per la descrizione dei parametri di configurazione importanti.

Prima di procedere con la configurazione, assicurati che Riak KV e Riak CS siano installati su ogni nodo del tuo cluster. Stanchion, al contrario, deve essere installato solo su un nodo all'interno dell'intero cluster.

Riak Cloud Storage. Parte 1. Configurazione di Riak KV

Backend per Riak CS

Di default, il backend utilizzato da Riak è Bitcask, ma il pacchetto Riak CS include un backend speciale che deve essere utilizzato dal cluster Riak facente parte del sistema Riak CS. Nella versione standard c'è un backend Multi standard che viene fornito con Riak.

I bucket utilizzati all'interno di Riak CS usano indici secondari che ora richiedono un backend LevelDB. Altre parti del sistema Riak CS possono beneficiare dell'uso del backend Bitcask. L'uso del backend Multi è integrato in Riak CS per sfruttare i vantaggi di entrambi i backend, raggiungendo la migliore combinazione di prestazioni e funzionalità. Nella sezione seguente viene descritto come configurare correttamente Riak per utilizzare questo backend Multi.

Backend è ciò che Riak utilizzerà per salvare i dati. Nel repertorio di Riak KV ci sono diversi backend: Bitcask, LevelDB, Memory e Multi.

Inoltre, il sistema di calcolo della capacità di archiviazione utilizza Riak MapReduce per aggregare i file nei bucket. Ciò significa che è necessario informare tutti i nodi Riak su dove cercare i file preparati di Riak CS prima di calcolare la capacità di archiviazione.

Alcuni altri parametri devono essere modificati per configurare il nodo Riak come parte del sistema Riak CS, come l'indirizzo IP e l'indirizzo IP e la porta per lo scambio di messaggi tramite Protocol Buffers. Le altre impostazioni possono essere cambiate se necessario. Le sezioni seguenti descrivono come configurare il nodo Riak per lavorare come parte del sistema Riak CS.

Configurazione del backend Riak

In primo luogo, bisogna modificare i file di configurazione riak.conf o advanced.config/app.config. Questi file possono trovarsi nelle directory /etc/riak o /opt/riak/etc. Per impostazione predefinita, Riak utilizza il backend Bitcask. La prima cosa che dobbiamo fare è modificare il file di configurazione rimuovendo la seguente riga:

RIAK.CONF

## Delete this line:
storage_backend = bitcask

ADVANCED.CONFIG

{riak_kv,
 [ %% Rimuovere questa riga: 
{storage_backend, riak_kv_bitcask_backend},
 ]}

APP.CONFIG

{riak_kv, 
  [ %% Rimuovere questa riga:
    {storage_backend, riak_kv_bitcask_backend},
]}

In seguito, dobbiamo indicare la necessità dei moduli RiakCS per Riak e informare Riak di utilizzare il backend configurato per supportare Riak CS. Per questo, dobbiamo utilizzare il file advanced.config o app.config e aggiungere le seguenti opzioni:

ADVANCED.CONFIG

{eleveldb, [
    {total_leveldb_mem_percent, 30}
    ]},
{riak_kv, [
    %% Altre configurazioni
    {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"}
        ]}
    ]},
    %% Altre configurazioni
]}

APP.CONFIG

{eleveldb, [
    {total_leveldb_mem_percent, 30}
    ]},
{riak_kv, [
    %% Altre configurazioni
    {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"}
        ]}
    ]},
    %% Altre configurazioni
]}

È molto importante notare che molti di questi valori dipenderanno dalle variazioni delle directory specifiche per il tuo sistema operativo, quindi segui le istruzioni in base a esse. Ad esempio, il parametro add_paths presuppone che Riak CS sia installato in /usr/lib/riak-cs, mentre i parametri data_root presuppongono che Riak sia installato in /var/lib. (Nota: nel mio caso era add_paths — /usr/lib64/riak-cs/).

Questa configurazione presuppone che Riak CS sia installato sulla stessa macchina di Riak. In caso contrario, il pacchetto deve essere copiato su un host separato.

Configurazione della creazione dei siti secondari

Ora, dobbiamo impostare il parametro allow_mult su true. Possiamo aggiungere una riga nel file di configurazione riak.conf, o nella sezione riak_core in advanced.config o app.config.

RIAK.CONF

buckets.default.allow_mult = true

ADVANCED.CONFIG

{riak_core, [
    %% Altre configurazioni
    {default_bucket_props, [{allow_mult, true}]},
    %% Altre configurazioni
]}

APP.CONFIG

{riak_core, [
    %% Altre configurazioni
    {default_bucket_props, [{allow_mult, true}]},
    %% Altre configurazioni
]}

Questo permetterà a Riak di creare i permalink necessari per il funzionamento di Riak CS. Se ti connetti a Riak CS utilizzando una libreria client, non preoccuparti: non dovrai risolvere conflitti, poiché tutte le operazioni di Riak CS sono rigorosamente coordinate secondo la loro definizione.

Permalink è un metodo per memorizzare più oggetti in una chiave affinché l'oggetto possa avere valori diversi su nodi diversi.

Nota: allow_mult
Qualsiasi nodo Riak che supporta anche Riak CS avrà sempre il valore true per il parametro allow_mult. Riak CS non si avvierà se il valore è false.

Configurazione del nome del nodo e dell'indirizzo IP

Ogni nodo Riak ha un nome che può essere specificato in riak.conf nell'opzione nodename. Se stai usando il file di configurazione app.config, devi creare un file chiamato vm.args nella stessa directory in cui si trova app.config e specificare il nome del nodo utilizzando il flag -name. Raccomandiamo di assegnare nomi ai nodi nel formato @. Quindi, se hai tre nodi in esecuzione su un host 100.0.0.1, puoi nominarli riak1@100.0.0.1, riak2@100.0.0.1 e riak3@100.0.0.1, oppure puoi dare nomi più specifici, come test_cluster1@100.0.0.1, user_data3@100.0.0.1 e così via. L'esempio seguente dimostra come cambiare il nome del nodo in riak1@127.0.0.1, che funzionerà sull'host locale.

RIAK.CONF

 nodename = riak1@127.0.0.1 

VM.ARGS

 -name riak1@127.0.0.1

Devi assegnare nomi a tutti i nodi prima di avviarli e includerli nel cluster.

Test di configurazione

Ora che tutte le impostazioni necessarie del nodo sono state completate, possiamo provare ad avviare Riak:

SHELL

 riak start 

Nota. La risposta nel mio caso:

Riak Cloud Storage. Parte 1. Configurazione di Riak KV

Qui è necessario attendere un momento. Dopo può essere iniziato il test del nodo avviato.

SHELL

 riak ping

Se la risposta è pong, significa che Riak è avviato: se invece la risposta è Node not responding to pings, significa che qualcosa è andato storto.

Nota. La risposta nel mio caso:

Riak Cloud Storage. Parte 1. Configurazione di Riak KV

Se il nodo non è stato avviato correttamente, controlla il registro erlang.log.1 nella directory /log del nodo, se è possibile identificare il problema. Uno degli errori più comuni è invalid_storage_backend, che indica che il percorso per la libreria Riak CS in advanced.config o app.config non è corretto (oppure Riak CS non è installato sul server). Nonostante questo errore, assicurati di non aver cambiato da riak_cs_kv_multi_backend a riak_kv_multi_backend.

Configurare Riak per utilizzare i protocolli di buffer (protocol buffers)

Le impostazioni dei protocolli di buffer di Riak si trovano in riak.conf o nella sezione riak_api nei file advanced.config o app.config, che si trovano nella directory /etc/riak/. Per impostazione predefinita, l'host ha l'indirizzo IP 127.0.0.1 e la porta 8087. Dovrai modificarli se prevedi di eseguire Riak e Riak CS non in un ambiente locale. Sostituisci l'indirizzo IP del nodo Riak 127.0.0.1 e la porta 8087 con quelli appropriati.

RIAK.CONF

 listener.protobuf.internal = 10.0.2.10:10001

ADVANCED.CONF

{riak_api, [
    %% Altre configurazioni
    {pb, ["10.0.2.10", 10001]},
    %% Altre configurazioni
]}

APP.CONFIG

riak_api, [
    %% Altre configurazioni
    {pb, ["10.0.2.10", 10001]},
    %% Altre configurazioni
]}

Nota:Il valore del parametro listener.protobuf.internal nel file riak.conf (o il valore del parametro pb in advanced.conf / app.config) deve corrispondere ai valori per riak_host nel file riak CS riak-cs.config e stanchion.conf (o riak_host rispettivamente in advanced.config / app.config).

Nota sul numero di porta
Potrebbe essere necessario un numero di porta diverso se c'è conflitto con le porte utilizzate da un'altra applicazione o se si utilizza un bilanciatore di carico o un proxy.

Si raccomanda inoltre che gli utenti verifichino che la dimensione di Riak protobuf.backlog (o in advanced.config / app.config è pb_backlog) sia pari o superiore alla dimensione pool.request.size specificata per Riak CS in riak-cs.config (o request_pool_size in advanced.config / app.conf).

Se il valore di pool.request.size in Riak CS è stato modificato, il valore di protobuf.backlog in Riak deve essere aggiornato di conseguenza.

Altre impostazioni di Riak

I file riak.conf e advanced.config includono altre impostazioni che configurano la creazione dei file di log e i percorsi di salvataggio. Queste impostazioni hanno valori predefiniti e dovrebbero funzionare nella maggior parte dei casi. Per ulteriori informazioni, si consiglia di leggere la nostra documentazione sui file di configurazione.

Configurazione dell'indirizzo IP per Riak

Nella configurazione Indirizzi IP per Riak devi assicurarti che i nodi Riak abbiano un indirizzo IP unico, sia che tu stia lavorando con un solo nodo o aggiungendo altri nodi al sistema. L'indirizzo IP di Riak è contenuto in riak.conf oppure — se utilizzi il file app.config — nel file di configurazione vm.args, che si trova nella stessa directory in /etc/riak (o in /opt/riak/etc/ su altri sistemi operativi).

Inizialmente, la riga contenente l'indirizzo IP di Riak punta all'host locale in questo punto:

RIAK.CONF

 nodename = riak@127.0.0.1

VM.ARGS

 -name riak@127.0.0.1

Sostituisci 127.0.0.1 con l'indirizzo IP preferito o il nome host del nodo Riak.

Impostazioni delle prestazioni e della capacità

Per motivi di prestazioni, ti raccomandiamo vivamente di aggiungere valori nei file di configurazione Riak riak.conf o vm.args, situati in /etc/riak/ o /opt/riak/etc.

RIAK.CONF

 erlang.max_ports = 65536

VM.ARGS

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

Disattivazione di JavaScript MapReduce

Si raccomanda di non utilizzare JavaScript MapReduce obsoleto con nessuna versione di Riak CS. Per motivi di prestazioni, devi disabilitare la macchina virtuale che esegue le operazioni di JavaScript MapReduce configurando nel file di configurazione riak.conf, o nella sezione riak_kv di advanced.conf o app.config:

RIAK.CONF

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

ADVANCED.CONFIG

{riak_kv, [
    %% Altre configurazioni
    {map_js_vm_count, 0},
    {reduce_js_vm_count, 0},
    {hook_js_vm_count, 0}
    %% Altre configurazioni
]}

APP.CONFIG

{riak_kv, [
    %% Altre configurazioni
    {map_js_vm_count, 0},
    {reduce_js_vm_count, 0},
    {hook_js_vm_count, 0}
    %% Altre configurazioni
]}

Successivamente, dobbiamo configurare i restanti componenti del sistema Riak CS.

Versione originale della guida.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster