Archiviazione cloud Riak. Parte 1: Configurazione di Riak KV

Riak CS (archiviazione cloud) – software facile da usare per organizzare l'archiviazione di oggetti, in esecuzione su Riak KV. Riak (KV) è un database di valori-chiave NoSQL distribuito. Riak CS è progettato per fornire semplicità, disponibilità e distribuzione di storage cloud di qualsiasi scala e può essere utilizzato per creare architetture cloud, sia pubbliche che private, o come storage infrastrutturale per applicazioni e servizi ad alto carico. Riak CS API è compatibile con Amazon S3 e supporta la possibilità di ricevere report su varie situazioni.

Archiviazione cloud Riak. Parte 1: Configurazione di Riak KV
Questo articolo è una traduzione libera del manuale ufficiale per il sistema Riak CS versione 2.1.1

Nel sistema di storage Riak CS, tre componenti lavorano insieme tra loro, il che significa che ogni componente deve essere configurato per funzionare con gli altri componenti:

  • Riak (KV) – un sistema di database che funge da sistema finale.
  • Riak CS - Un livello di archiviazione cloud sopra Riak che fornisce funzionalità di archiviazione e API, archivia file e metadati in Riak e quindi li distribuisce agli utenti finali.
  • puntello - Gestisce le query che coinvolgono entità uniche a livello globale come bucket e utenti nell'istanza di Riak. Ad esempio, creazione di utenti, creazione o eliminazione di bucket.

Inoltre, puoi anche configurare il client S3 per l'utilizzo nella messaggistica con il sistema Riak CS.

Dovresti pianificare di avere un nodo Riak per ciascun nodo Riak CS sul 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. Supponendo che una macchina fisica abbia potenza sufficiente per soddisfare le esigenze di entrambi i nodi Riak e Riak CS, generalmente vedrai prestazioni migliori grazie alla ridotta latenza di rete.

Se il vostro sistema è composto da più nodi, la configurazione riguarda principalmente l'impostazione della comunicazione tra i componenti. Altre impostazioni, come ad esempio dove verranno archiviati i file di registro, hanno valori predefiniti e devono essere modificati solo se si desidera utilizzare valori non standard.

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

Poiché Riak CS è un'applicazione basata su Riak, è molto importante prestare attenzione alla configurazione di Riak quando si esegue Riak CS. Questo documento è sia una guida alla configurazione di Riak che un documento di riferimento che descrive importanti parametri di configurazione.

Prima della configurazione, assicurati che Riak KV e Riak CS siano installati su ogni nodo del tuo cluster. Stanchion, invece, dovrebbe essere installato solo su un nodo dell'intero cluster.

Archiviazione cloud Riak. Parte 1: Configurazione di Riak KV

Backend per Riak CS

Il backend predefinito utilizzato da Riak è Bitcask, ma il pacchetto Riak CS include un backend speciale che deve essere utilizzato dal cluster Riak che fa parte del sistema Riak CS. La versione normale ha il backend Multi standard fornito con Riak.

Gli stessi bucket Riak utilizzati all'interno di Riak CS utilizzano indici secondari, che ora richiedono un backend LevelDB. Altre parti del sistema Riak CS possono trarre vantaggio dall'utilizzo del backend Bticask. L'uso di un multi backend di esempio è incluso in Riak CS per sfruttare entrambi questi backend e ottenere la migliore combinazione di prestazioni e funzionalità. La sezione successiva descrive come configurare correttamente Riak per utilizzare questo multi-backend.

Backend è ciò che Riak utilizzerà per salvare i dati. Riak KV ha diversi backend nel suo arsenale: Bitcask, LevelDB, Memory e Multi.

Inoltre, il sistema di calcolo dello storage utilizza Riak MapReduse per aggregare i file in bucket. Ciò significa che devi dire a tutti i nodi Riak dove cercare i file Riak CS preparati prima di calcolare lo spazio di archiviazione.

Molti altri parametri devono essere modificati per configurare il nodo Riak come parte del sistema Riak CS, come l'indirizzo IP, l'indirizzo IP e la porta per la messaggistica tramite i buffer di protocollo. Se necessario è possibile modificare altre impostazioni. Le sezioni seguenti descrivono come configurare un nodo Riak per funzionare come parte del sistema Riak CS.

Configurazione del backend Riak

Per prima cosa vengono modificati 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

CONFIG.AVANZATA

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

CONFIG.APP

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

Successivamente, dobbiamo dimostrare la necessità dei moduli RiakCS per Riak e istruire Riak a utilizzare il backend configurato che fornisce Riak CS. Dobbiamo utilizzare il file advanced.config o app.config per questo e aggiungere le seguenti opzioni:

CONFIG.AVANZATA

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

CONFIG.APP

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

È molto importante notare che molti di questi valori dipenderanno dalle variazioni di directory specifiche del tuo sistema operativo, quindi segui le istruzioni di conseguenza. Ad esempio, l'opzione add_paths presuppone che Riak CS sia installato in /usr/lib/riak-cs, mentre le opzioni 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 dovrà essere copiato su un host separato.

Impostazione della creazione di fratelli

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

RIAK.CONF

buckets.default.allow_mult = true

CONFIG.AVANZATA

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

CONFIG.APP

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

Ciò consentirà a Riak di creare fratelli necessari per il funzionamento di Riak CS. Se ti connetti a Riak CS utilizzando la libreria client, non preoccuparti: non dovrai risolvere conflitti, poiché tutte le operazioni di Riak CS sono rigorosamente coerenti come definito.

Fratello è un modo per memorizzare più oggetti in una chiave in modo che l'oggetto abbia valori diversi su nodi diversi.

Nota: consenti_mult
Qualsiasi nodo Riak che supporta anche Riak CS avrà let_mult impostato sempre su true. Riak CS ripristinerà il lancio se il valore è falso.

Impostazione del nome host e dell'indirizzo IP

Ogni nodo Riak ha un nome, che può essere specificato nell'opzione nodename in riak.conf. Se stai utilizzando il file di configurazione app.config, devi creare un file chiamato vm.args nella stessa directory di app.config e specificare il nome host utilizzando il flag -name. Si consiglia di specificare i nomi dei nodi nel formato @. Pertanto, se hai tre nodi in esecuzione su un host 100.0.0.1, puoi chiamarli [email protected], [email protected]E [email protected] oppure puoi dare nomi più specifici, come [email protected], [email protected] e così via. L'esempio seguente mostra la modifica del nome host in [email protected], che verrà eseguito su localhost.

RIAK.CONF

 nodename = [email protected] 

VM.ARGS

 -name [email protected]

È necessario nominare tutti i nodi prima di avviarli e unirsi al cluster.

Prova di installazione

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:

Archiviazione cloud Riak. Parte 1: Configurazione di Riak KV

Qui devi aspettare un po '. Quindi puoi iniziare a testare il nodo in esecuzione.

SHELL

 riak ping

Se la risposta è pong, allora Riak è in esecuzione; se la risposta è Node che non risponde ai ping, allora qualcosa è andato storto.

Nota La risposta nel mio caso:

Archiviazione cloud Riak. Parte 1: Configurazione di Riak KV

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

Configurazione di Riak per utilizzare i buffer di protocollo

Le impostazioni del buffer del protocollo 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 un indirizzo IP 127.0.0.1 e una porta 8087. Sarà necessario modificarli se si prevede di eseguire Riak e Riak CS in un ambiente non locale. Sostituisci 127.0.0.1 con l'indirizzo IP dell'host Riak e la porta 8087 con uno adatto.

RIAK.CONF

 listener.protobuf.internal = 10.0.2.10:10001

CONF.AVANZATA

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

CONFIG.APP

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

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 di riak_host in Riak CS riak-cs.config e File Stanchion stanchion.conf (o riak_host rispettivamente nei file avanzati .config/app.config).

Una nota sul numero di porta
Potrebbe essere necessario un numero di porta diverso se la porta è in conflitto con le porte utilizzate da un'altra applicazione o se si utilizza un bilanciatore del carico o un server proxy.

Si raccomanda inoltre agli utenti di assicurarsi che la dimensione di Riak protobuf.backlog (o nei file advanced.config/app.config sia pb_backlog) sia uguale o maggiore della dimensione pool.request.size specificata per Riak CS in riak-cs. config (o request_pool_size nei file advanced.config/app.conf).

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

Altre impostazioni di Riak

I file riak.conf e advanced.config includono altre impostazioni che configurano la creazione dei file di registro e dove vengono salvati. Queste impostazioni hanno valori predefiniti e dovrebbero funzionare nella maggior parte dei casi. Per ulteriori informazioni, ti consigliamo di leggere la nostra documentazione sui file di configurazione.

Impostazione di un indirizzo IP per Riak

Quando imposti un indirizzo IP per Riak, devi essere sicuro che i nodi Riak abbiano un indirizzo IP univoco, sia che tu stia lavorando con un solo nodo o aggiungendo più nodi al sistema. L'indirizzo IP di Riak è contenuto in riak.conf o, se si utilizza il file app.config, nel file di configurazione vm.args, che si trova nella directory /etc/riak (o /opt/riak/etc/ su altri sistemi operativi).

Inizialmente, la riga contenente l'indirizzo IP di Riak punta al localhost in questa posizione:

RIAK.CONF

 nodename = [email protected]

VM.ARGS

 -name [email protected]

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

Impostazioni delle prestazioni e della larghezza di banda

Per motivi di prestazioni, consigliamo vivamente di aggiungere valori ai file di configurazione di Riak riak.conf o vm.args, situati nella directory /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

Disabilitare JavaScript MapReduce

Si consiglia di non utilizzare JavaScript MapReduce legacy con qualsiasi versione di Riak CS. Per motivi di prestazioni, dovresti disabilitare la macchina virtuale che esegue le operazioni JavaScript MapReduce impostando 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 

CONFIG.AVANZATA

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

CONFIG.APP

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

Successivamente dobbiamo configurare i restanti componenti del sistema Riak CS.

Manuale originale.

Fonte: habr.com

Aggiungi un commento