Riak CS (Oblačno shranjevanje) – enostavno programje za organizacijo shranjevanja objektov, ki deluje na vrhu Riak KV. Riak (KV) je distribuirana NoSQL baza podatkov tipa 'ključ-vrednost (key-value)'. Riak CS je zasnovan za zagotavljanje preprostosti, dostopnosti, razpoložljivosti oblačnega shranjevanja vseh mer, in se lahko uporablja za gradnjo oblačnih arhitektur — tako javnih kot zasebnih — ali kot infrastrukturno shranjevanje za visoko obremenjene aplikacije in storitve. API Riak CS je združljiv z Amazon S3 in podpira možnost ustvarjanja poročil o različnih situacijah.

Ta članek je prost prevod uradnega vodnika za sistem Riak CS različice 2.1.1.
V sistemu shranjevanja Riak CS trije komponenti medsebojno delujejo, kar pomeni, da je obvezna nastavitev vsake komponente, da deluje z drugimi komponentami:
- Riak (KV) – sistem baz podatkov, ki deluje kot končni sistem.
- Riak CS — plast oblačnega shranjevanja nad Riak, ki omogoča shranjevanje in API možnosti, shranjuje datoteke in metapodatke v Riak ter jih nato prenaša končnim uporabnikom.
- Stanchion — upravlja zahteve, ki vključujejo globalno edinstvene entitete, kot so košarice in uporabniki v instanci Riak. Na primer, ustvarjanje uporabnikov, ustvarjanje ali brisanje košaric.
Dodatno lahko prav tako nastavite S3 odjemalca za uporabo pri izmenjavi sporočil s sistemom Riak CS.
Morate načrtovati prisotnost enega vozlišča Riak za vsako vozlišče Riak CS v vašem sistemu. Vozlišča Riak in Riak CS se lahko izvajajo na različnih fizičnih strojih, vendar je v večini primerov bolje izvajati eno vozlišče Riak in eno vozlišče Riak CS na istem fizičnem stroju. Pod pogojem, da ima en fizični stroj dovolj zmogljivosti, da zadostuje potrebam obeh vozlišč Riak in Riak CS, boste običajno opazili boljšo zmogljivost zaradi zmanjšanja mrežnih zamud.
Če vaš sistem vsebuje več vozlišč, konfiguracija predvsem predstavlja nastavitev komunikacije med komponentami. Druge nastavitve, kot so in kjer bodo shranjeni logi, imajo privzete vrednosti in jih je treba spremeniti le, če želite uporabiti nestandardne vrednosti.
Nastavitev sistemskih komponent. Nastavitev Riak KV za CS
Ker je Riak CS aplikacija, razvita na vrhu Riaka, je zelo pomembno, da pozorno obravnavate svojo konfiguracijo Riaka, ko se zažene Riak CS. Ta dokument je hkrati vodnik za konfiguracijo Riaka in referenčni dokument za opis pomembnih konfiguracijskih parametrov.
Pred nastavitev se prepričajte, da sta Riak KV in Riak CS nameščena na vsakem vozlišču v vašem gruči. Stanchion pa mora biti nameščen le na enem vozlišču v celotni gruči.

Backend za Riak CS
Privzeto backend, ki ga uporablja Riak, je Bitcask, vendar paket Riak CS vključuje poseben backend, ki mora biti uporabljen v Riak gruči, ki je del sistema Riak CS. V običajni različici je standardni Multi backend, ki prihaja z Riakom.
Enaki Riak vedri, ki jih uporablja Riak CS, uporabljajo sekundarne indekse, ki zdaj zahtevajo backend LevelDB. Druge komponente sistema Riak CS lahko izkoristijo backend Bitcask. Uporaba vzorčnega Multi backend je vključena v Riak CS, da izkoristi prednosti obeh backendov za dosego najboljše kombinacije zmogljivosti in funkcionalnosti. V naslednjem razdelku je opisano, kako pravilno nastaviti Riak za uporabo tega Multi backenda.
Backend je tisto, kar bo Riak uporabil za shranjevanje podatkov. V arzenalu Riak KV je na voljo več backendov: Bitcask, LevelDB, Memory in Multi.
Dodatno sistem izračuna shranjevanja uporablja Riak MapReduce za seštevanje datotek v vedra. To pomeni, da morate obvestiti vsa vozlišča Riak, kje iskati pripravljene datoteke Riak CS pred izračunom shranjevanja.
Nekaj drugih parametrov je treba spremeniti, da se vozlišče Riak nastavi kot del sistema Riak CS, kot so IP naslov in IP naslov ter vrata za izmenjavo sporočil preko Protocol Buffers. Ostale nastavitve lahko spremenite po potrebi. Naslednji razdelki opisujejo, kako nastaviti vozlišče Riak, da deluje kot del sistema Riak CS.
Nastavitev Riak backend
Najpre, potrebno je urediti konfiguracione datoteke riak.conf ili advanced.config/app.config. Ove datoteke se mogu nalaziti u direktorijumima /etc/riak ili /opt/riak/etc. Po defaultu, Riak koristi Bitcask backend. Prva stvar koju treba uraditi je izmeniti konfiguracionu datoteku uklanjanjem sledeće linije:
RIAK.CONF
## Delete this line:
storage_backend = bitcaskADVANCED.CONFIG
{riak_kv,
[ %% Uklonite ovu liniju:
{storage_backend, riak_kv_bitcask_backend},
]}APP.CONFIG
{riak_kv,
[ %% Uklonite ovu liniju:
{storage_backend, riak_kv_bitcask_backend},
]}Dalje, potrebno je istaknuti potrebu za RiakCS modulima za Riak i naložiti Riaku da koristi podešeni backend koji obezbeđuje Riak CS. Za to je potrebno koristiti advanced.config ili app.config datoteku i dodati sledeće opcije:
ADVANCED.CONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Ostale konfiguracije
{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"}
]}
]},
%% Ostale konfiguracije
]}
APP.CONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Ostale konfiguracije
{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"}
]}
]},
%% Ostale konfiguracije
]}Veoma je važno napomenuti da će mnogo od ovih vrednosti zavisiti od varijacija direktorija specifičnih za vaš operativni sistem, stoga pratite uputstva u skladu s njima. Na primer, parametar add_paths pretpostavlja da je Riak CS instaliran u /usr/lib/riak-cs, dok parametri data_root pretpostavljaju da je Riak instaliran u /var/lib. (Napomena: U mom slučaju to je bilo add_paths - /usr/lib64/riak-cs/).
Ova konfiguracija pretpostavlja da je Riak CS instaliran na istoj mašini kao i Riak. Ako nije, paket mora biti prebačen na odvojeni host.
Podešavanje omogućavanja saiblinga
Sada, potrebno je postaviti parametar allow_mult na true. Možemo dodati red u konfiguracionu datoteku riak.conf, ili u odeljak riak_core u advanced.config ili app.config.
RIAK.CONF
buckets.default.allow_mult = trueADVANCED.CONFIG
{riak_core, [
%% Ostale konfiguracije
{default_bucket_props, [{allow_mult, true}]},
%% Ostale konfiguracije
]}APP.CONFIG
{riak_core, [
%% Ostale konfiguracije
{default_bucket_props, [{allow_mult, true}]},
%% Ostale konfiguracije
]}Ovo će omogućiti Riaku da stvara saiblinge, što je neophodno za funkcionisanje Riak CS. Ako se povezujete na Riak CS putem klijentske biblioteke, ne brinite: nećete morati da rešavate konflikte, jer su sve Riak CS operacije strogo usklađene sa svojim definicijama.
Saibling je način skladištenja više objekata pod jednim ključem kako bi objekat imao različite vrednosti na različitim čvorovima.
Napomena: allow_mult
Vsak Riak vozlišče, ki prav tako podpira Riak CS, bo vedno imelo vrednost true za parameter allow_mult. Riak CS se bo ustavil ob zagonu, če bo vrednost false.
Nastavitev imena vozlišča in IP naslova
Vsako vozlišče Riak ima ime, ki ga je mogoče nastaviti v riak.conf v možnosti nodename. Če uporabljate konfiguracijsko datoteko app.config, morate ustvariti datoteko z imenom vm.args v isti imenik, kjer je locirana app.config, in določiti ime vozlišča z zastavico -name. Priporočamo, da imenom vozlišč dodelite format @. Tako, če imate tri zagnana vozlišča na istem gostitelju 100.0.0.1, jih lahko imenujete riak1@100.0.0.1, riak2@100.0.0.1 in riak3@100.0.0.1 ali pa jim lahko daste bolj specifična imena, kot so test_cluster1@100.0.0.1, user_data3@100.0.0.1 itd. Spodnji primer prikazuje spremembo imena vozlišča v riak1@127.0.0.1, ki bo delovalo na lokalnem gostitelju.
RIAK.CONF
nodename = riak1@127.0.0.1 VM.ARGS
-name riak1@127.0.0.1Vsa vozlišča morate poimenovati pred zagonom in vključitvijo v grozd.
Test nastavitve
Zdaj, ko so vse potrebne nastavitve vozlišča opravljene, lahko poskusimo zagnati Riak:
SHELL
riak start Opomba. Odgovor v mojem primeru:

Tukaj je treba malo počakati. Nato lahko začnete testirati zagnano vozlišče.
SHELL
riak pingČe je odgovor pong, potem je Riak zagnan: če pa je odgovor Node not responding to pings, to pomeni, da je prišlo do težave.
Opomba. Odgovor v mojem primeru:

Če je vozlišče nepravilno zagnano, preverite dnevnik erlang.log.1 v imeniku /log vozlišča, če je mogoče ugotoviti težavo. Ena izmed najpogostejših napak je invalid_storage_backend, ki nakazuje, da je pot do knjižnice Riak CS v advanced.config ali app.config napačna (ali Riak CS ni nameščen na strežniku). Kljub tej napaki se prepričajte, da niste spremenili z riak_cs_kv_multi_backend na riak_kv_multi_backend.
Nastavitev Riak za uporabo protokolskih predpomnilnikov (protocol buffers)
Nastavitve protokolskih predpomnilnikov Riak so v riak.conf ali v razdelku riak_api v advanced.config ali app.config datotekah, ki se nahajajo v imeniku /etc/riak/. Privzeto ima gostitelj IP naslov 127.0.0.1 in vrata 8087. Morate jih spremeniti, če nameravate zagnati Riak in Riak CS ne v lokalnem okolju. Zamenjajte IP naslov 127.0.0.1 vozlišča Riak in vrata 8087 z ustreznim.
RIAK.CONF
listener.protobuf.internal = 10.0.2.10:10001ADVANCED.CONF
{riak_api, [
%% Druge nastavitve
{pb, ["10.0.2.10", 10001]},
%% Druge nastavitve
]}APP.CONFIG
riak_api, [
%% Druge nastavitve
{pb, ["10.0.2.10", 10001]},
%% Druge nastavitve
]}Opomba:Vrednost parametra listener.protobuf.internal v datoteki riak.conf (ali vrednost parametra pb v datoteki advanced.conf / app.config) mora ustrezati vrednostim za riak_host v datoteki Riak CS riak-cs.config in Stanchion stanchion.conf (ali riak_host ustrezno v advanced.config/app.config).
Opomba o številki vrat
Lahko je potrebna drugačna številka vrat, če vrata povzročajo konflikt z vrati, ki jih uporablja druga aplikacija, ali če uporabljate uravnoteževalnik obremenitve ali proxie.
Priporočljivo je, da se uporabniki prepričajo, da je velikost Riak protobuf.backlog (ali v datotekah advanced.config/app.config pb_backlog) enaka ali večja od velikosti pool.request.size, navedene za Riak CS v datoteki riak-cs.config (ali request_pool_size v advanced.config/app.conf).
Če je bila vrednost pool.request.size v Riak CS spremenjena, mora biti vrednost protobuf.backlog v Riaku prav tako posodobljena.
Druge nastavitve Riaka
Datoteki riak.conf in advanced.config vključujeta druge nastavitve, ki konfigurirajo ustvarjanje dnevniških datotek in poti njihovega shranjevanja. Te nastavitve imajo privzete vrednosti in bi morale delovati v večini primerov. Za več informacij priporočamo, da preberete našo dokumentacijo o konfiguracijskih datotekah.
Nastavitev IP-naslova za Riak
Ob nastavitvi IP-naslove za Riak se morate prepričati, da imajo Riak vozlišča edinstven IP-naslov, ne glede na to, ali delate samo z enim vozliščem ali dodajate dodatna vozlišča v sistem. IP-naslov Riaka je vsebovan v riak.conf ali — če uporabljate datoteko app.config — v konfiguracijski datoteki vm.args, ki se nahaja v /etc/riak (ali v /opt/riak/etc v drugih operacijskih sistemih).
Sprva niz, ki vsebuje IP-naslov Riaka, kaže na lokalni gostitelj na tem mestu:
RIAK.CONF
nodename = riak@127.0.0.1VM.ARGS
-name riak@127.0.0.1Zamenjajte 127.0.0.1 z izbranim IP-naslovom ali imenom gostitelja Riak vozlišča.
Nastavitve zmogljivosti in prepustnosti
Zaradi razlogov zmogljivosti močno priporočamo dodajanje vrednosti v konfiguracijske datoteke Riak riak.conf ali vm.args, ki se nahajajo v /etc/riak/ ali /opt/riak/etc.
RIAK.CONF
erlang.max_ports = 65536VM.ARGS
## This setting should already be present for recent Riak installs.
-env ERL_MAX_PORTS 65536Onemogočanje JavaScript MapReduce
Priporočljivo je, da ne uporabljate zastarele JavaScript MapReduce v povezavi z katerokoli različico Riak CS. Zaradi razlogov zmogljivosti morate onemogočiti virtualni stroj, ki izvaja operacije JavaScript MapReduce, s konfiguracijo v datoteki riak.conf ali v razdelku riak_kv advanced.conf ali app.config:
RIAK.CONF
javascript.map_pool_size = 0
javascript.reduce_pool_size = 0
javascript.hook_pool_size = 0 ADVANCED.CONFIG
{riak_kv, [
%% Другие конфигурации
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Другие конфигурации
]}APP.CONFIG
{riak_kv, [
%% Другие конфигурации
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Другие конфигурации
]}Далее настройте оставшиеся компоненты системы Riak CS.
Izvor: habr.com
