Riak CS (Cloud Storage) – un software ușor de utilizat pentru organizarea stocării obiectelor, care funcționează pe baza Riak KV. Riak (KV) este o bază de date NoSQL distribuită de tip „cheie-valoare”. Riak CS este proiectat pentru a oferi simplitate, disponibilitate și distribuție a stocării în cloud de orice dimensiune și poate fi utilizat pentru construirea de arhitecturi cloud — atât publice, cât și private — sau ca stocare de infrastructură pentru aplicații și servicii cu un volum mare de trafic. API-ul Riak CS este compatibil cu Amazon S3 și suportă generarea de rapoarte pentru diverse situații.

Acest articol este o traducere liberă a manualului oficial pentru sistemul Riak CS versiunea 2.1.1
În sistemul de stocare Riak CS, trei componente lucrează împreună, ceea ce înseamnă că fiecare componentă trebuie să fie configurată pentru a funcționa cu celelalte componente:
- Riak (KV) – un sistem de baze de date care acționează ca un sistem final.
- Riak CS — un strat de stocare în cloud deasupra Riak, care oferă stocare și capabilități API, stochează fișiere și metadate în Riak și le transmite apoi utilizatorilor finali.
- Stanchion — gestionează cererile implicând entități unice global, cum ar fi bucket-uri și utilizatori într-un exemplu de Riak. De exemplu, crearea de utilizatori, crearea sau ștergerea bucket-urilor.
De asemenea, puteți configura un client S3 pentru a fi utilizat în comunicarea cu sistemul Riak CS.
Trebuie să planificați prezența unui nod Riak pentru fiecare nod Riak CS din sistemul dumneavoastră. Nodurile Riak și Riak CS pot fi rulate pe mașini fizice diferite, dar în majoritatea cazurilor, este preferabil să rulați un nod Riak și un nod Riak CS pe aceeași mașină fizică. Presupunând că o mașină fizică are suficientă putere pentru a satisface nevoile ambelor noduri Riak și Riak CS, în general veți observa o performanță mai bună datorită reducerii întârzierilor de rețea.
Dacă sistemul dvs. constă din mai multe noduri, configurarea se referă în primul rând la stabilirea comunicării între componente. Alte setări, cum ar fi locația și modul în care vor fi stocate fișierele de jurnal, au valori implicite și necesită modificări doar dacă doriți să utilizați valori personalizate.
Configurarea componentelor sistemului. Configurarea Riak KV pentru CS
Deoarece Riak CS este o aplicație dezvoltată pe baza Riak, este foarte important să acordați atenție configurației dumneavoastră Riak atunci când porniți Riak CS. Acest document este simultan un ghid pentru configurarea Riak, precum și un document de referință ce descrie parametrii de configurare importanți.
Înainte de configurare, asigurați-vă că Riak KV și Riak CS sunt instalate pe fiecare nod din clusterul dvs. Stanchion, pe de altă parte, trebuie instalat doar pe un singur nod din întregul cluster.

Back-end-uri pentru Riak CS
În mod implicit, back-end-ul utilizat de Riak este Bitcask, dar pachetul Riak CS include un back-end special care trebuie utilizat de clusterul Riak ce face parte din sistemul Riak CS. Versiunea standard conține back-end-ul Multi standard care vine cu Riak.
Aceleași bucket-uri Riak utilizate în Riak CS folosesc indecși secundari, care acum necesită back-end-ul LevelDB. Alte părți ale sistemului Riak CS pot beneficia în urma utilizării back-end-ului Bticask. Utilizarea back-end-ului Multi de model este inclusă în Riak CS pentru a profita de avantajele ambelor back-end-uri pentru a obține cea mai bună combinație de performanță și funcționalitate. În următoarea secțiune se descrie cum să configurați corect Riak pentru a utiliza acest Multi-back-end.
Back-end — este ceea ce Riak va folosi pentru a salva datele. În arsenalul Riak KV există mai multe back-end-uri: Bitcask, LevelDB, Memory și Multi.
În plus, sistemul de calcul al stocării datelor utilizează Riak MapReduce pentru a aduna fișiere în bucket-uri. Acest lucru înseamnă că trebuie să informați toate nodurile Riak unde să caute fișierele pregătite Riak CS înainte de calculul stocării.
Mai multe alte parametri trebuie modificați pentru a configura nodul Riak ca parte a sistemului Riak CS, cum ar fi adresa IP și portul pentru schimbul de mesaje prin Protocol Buffers. Celelalte setări pot fi modificate în funcție de necesitate. Următoarele secțiuni descriu cum să configurați nodul Riak pentru a funcționa ca parte a sistemului Riak CS.
Configurarea backend-ului Riak
În primul rând, se editează fișierele de configurare riak.conf sau advanced.config/app.config. Aceste fișiere pot fi localizate în /etc/riak sau în /opt/riak/etc. În mod implicit, Riak utilizează backend-ul Bitcask. Primul lucru pe care trebuie să-l facem este să modificăm fișierul de configurare prin eliminarea următoarei linii:
RIAK.CONF
## Delete this line:
storage_backend = bitcaskADVANCED.CONFIG
{riak_kv,
[ %% Ștergeți această linie:
{storage_backend, riak_kv_bitcask_backend},
]}APP.CONFIG
{riak_kv,
[ %% Ștergeți această linie:
{storage_backend, riak_kv_bitcask_backend},
]}Apoi, trebuie să indicăm necesitatea modulelor RiakCS pentru Riak și să specificăm Riak să folosească backend-ul configurat care asigură Riak CS. Trebuie să folosim fișierul advanced.config sau app.config și să introducem următoarele opțiuni:
ADVANCED.CONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Alte configurații
{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"}
]}
]},
%% Alte configurații
]}
APP.CONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Alte configurații
{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"}
]}
]},
%% Alte configurații
]}Este foarte important de menționat că multe dintre aceste valori vor depinde de variațiile directorilor specifici pentru sistemul dumneavoastră de operare, așa că urmați instrucțiunile conform acestora. De exemplu, parametrul add_paths presupune că Riak CS este instalat în /usr/lib/riak-cs, în timp ce parametrii data_root presupun că Riak este instalat în /var/lib. (Notă: În cazul meu, a fost add_paths - /usr/lib64/riak-cs/).
Această configurație presupune că Riak CS este instalat pe aceeași mașină ca și Riak. Dacă nu, pachetul trebuie copiat pe un gazdă separată.
Configurația creării sublingilor
Acum, trebuie să configurăm parametrul allow_mult la valoarea true. Putem adăuga o linie în fișierul de configurare riak.conf, sau în secțiunea riak_core din advanced.config sau app.config.
RIAK.CONF
buckets.default.allow_mult = trueADVANCED.CONFIG
{riak_core, [
%% Alte configurații
{default_bucket_props, [{allow_mult, true}]},
%% Alte configurații
]}APP.CONFIG
{riak_core, [
%% Alte configurații
{default_bucket_props, [{allow_mult, true}]},
%% Alte configurații
]}Aceasta va permite Riak să creeze sub-obiecte necesare pentru funcționarea Riak CS. Dacă te conectezi la Riak CS folosind o bibliotecă client, nu-ți face griji: nu va trebui să rezolvi conflicte, deoarece toate operațiunile Riak CS sunt strict coordonate conform definiției lor.
Sub-obiect este o metodă de stocare a mai multor obiecte sub o singură cheie, astfel încât obiectul să aibă valori diferite pe noduri diferite.
Notă: allow_mult
Orice nod Riak care suportă de asemenea Riak CS va avea tot timpul valoarea true pentru parametrul allow_mult. Riak CS va opri lansarea dacă valoarea este false.
Configurarea numelui nodului și a adresei IP
Fiecare nod Riak are un nume care poate fi specificat în riak.conf în opțiunea nodename. Dacă folosești fișierul de configurație app.config, va trebui să creezi un fișier numit vm.args în aceeași directorie în care este localizat app.config și să specifici numele nodului folosind flagul -name. Îți recomandăm să denumești nodurile în formatul @. Așadar, dacă ai trei noduri lansate pe un singur host 100.0.0.1, le poți numi riak1@100.0.0.1, riak2@100.0.0.1 și riak3@100.0.0.1 sau le poți da nume mai specifice, cum ar fi test_cluster1@100.0.0.1, user_data3@100.0.0.1 și așa mai departe. Exemplul de mai jos demonstrează schimbarea numelui nodului în riak1@127.0.0.1, care va funcționa pe hostul local.
RIAK.CONF
nodename = riak1@127.0.0.1 VM.ARGS
-name riak1@127.0.0.1Trebuie să setezi numele tuturor nodurilor înainte de a le lansa și a le include în cluster.
Test de configurare
Acum, când toate setările necesare pentru nod au fost realizate, putem încerca să lansăm Riak:
SHELL
riak start Notă: Răspunsul în cazul meu a fost:

Aici trebuie să aștepți puțin. Apoi poți începe testul nodului lansat.
SHELL
riak pingDacă răspunsul este pong, înseamnă că Riak a fost lansat: dacă răspunsul este Node not responding to pings, înseamnă că ceva nu a mers bine.
Notă: Răspunsul în cazul meu a fost:

Dacă nodul s-a lansat incorect, verifică jurnalul erlang.log.1 în directorul /log al nodului, dacă poți identifica problema. Una dintre cele mai frecvente erori este invalid_storage_backend, care indică că calea către biblioteca Riak CS din advanced.config sau din app.config este incorectă (sau că Riak CS nu este instalat pe server). În ciuda acestei erori, asigură-te că nu ai schimbat de la riak_cs_kv_multi_backend la riak_kv_multi_backend.
Configurarea Riak pentru a utiliza protocoale de buferare (protocol buffers)
Setările bufferelor protocolului Riak se află în fișierul riak.conf sau în secțiunea riak_api din fișierele advanced.config sau app.config, care sunt plasate în directorul /etc/riak/. În mod implicit, gazda are adresa IP 127.0.0.1 și portul 8087. Trebuie să le schimbați dacă intenționați să rulați Riak și Riak CS în afara mediului local. Înlocuiți adresa IP 127.0.0.1 a nodului Riak și portul 8087 cu cele potrivite.
RIAK.CONF
listener.protobuf.internal = 10.0.2.10:10001ADVANCED.CONF
{riak_api, [
%% Alte configurații
{pb, ["10.0.2.10", 10001]},
%% Alte configurații
]}APP.CONFIG
riak_api, [
%% Alte configurații
{pb, ["10.0.2.10", 10001]},
%% Alte configurații
]}Notă:Valoarea parametrului listener.protobuf.internal din fișierul riak.conf (sau valoarea parametrului pb din fișierul advanced.conf / app.config) trebuie să corespundă valorilor pentru riak_host din fișierul Riak CS riak-cs.config și Stanchion stanchion.conf (sau riak_host respectiv în fișierele advanced.config / app.config).
Notă despre numărul portului
Ar putea fi necesar un alt număr de port dacă portul intră în conflict cu porturile utilizate de o altă aplicație sau dacă folosiți un echilibrator de încărcare sau un server proxy.
De asemenea, se recomandă ca utilizatorii să se asigure că dimensiunea Riak protobuf.backlog (sau în fișierele advanced.config / app.config, acesta este pb_backlog) este egală sau mai mare decât dimensiunea pool.request.size, specificată pentru Riak CS în riak-cs.config (sau request_pool_size în fișierele advanced.config / app.conf).
Dacă valoarea pool.request.size în Riak CS a fost modificată, atunci valoarea protobuf.backlog din Riak trebuie de asemenea actualizată.
Alte setări Riak
Fișierele riak.conf și advanced.config includ alte setări care configurează crearea fișierelor jurnal și căile lor de salvare. Aceste setări au valori implicite și ar trebui să funcționeze în cele mai multe cazuri. Pentru mai multe informații, vă recomandăm să citiți documentația noastră despre fișierele de configurare.
Configurarea adresei IP pentru Riak
Atunci când configurați adrese IP pentru Riak, trebuie să vă asigurați că nodurile Riak au o adresă IP unică, fie că lucrați doar cu un singur nod sau adăugați noduri suplimentare în sistem. Adresa IP Riak se găsește în fișierul riak.conf sau - dacă folosiți fișierul app.config - în fișierul de configurare vm.args, care se află tot acolo în directorul /etc/riak/ (sau în /opt/riak/etc/ în alte sisteme de operare).
Inițial, linia care conține adresa IP Riak indică gazda locală în acest loc:
RIAK.CONF
nodename = riak@127.0.0.1VM.ARGS
-name riak@127.0.0.1Înlocuiți 127.0.0.1 cu adresa IP preferată sau numele gazdei nodului Riak.
Setările de performanță și lățimea de bandă
Din cauza problemelor de performanță, vă recomandăm cu tărie să adăugați valori în fișierele de configurare Riak riak.conf sau vm.args, aflate în directoarele /etc/riak/ sau /opt/riak/etc.
RIAK.CONF
erlang.max_ports = 65536VM.ARGS
## This setting should already be present for recent Riak installs.
-env ERL_MAX_PORTS 65536Dezactivarea JavaScript MapReduce
Se recomandă să nu folosiți JavaScript MapReduce învechit împreună cu vreo versiune Riak CS. Din cauza problemelor de performanță, trebuie să dezactivați mașina virtuală care execută operațiuni JavaScript MapReduce prin configurarea în fișierul de configurare riak.conf sau în secțiunea riak_kv din advanced.conf sau app.config:
RIAK.CONF
javascript.map_pool_size = 0
javascript.reduce_pool_size = 0
javascript.hook_pool_size = 0 ADVANCED.CONFIG
{riak_kv, [
%% Alte configurații
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Alte configurații
]}APP.CONFIG
{riak_kv, [
%% Alte configurații
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Alte configurații
]}Apoi, trebuie să configurăm componentele rămase ale sistemului Riak CS.
Sursa: habr.com
