Riak CS (Cloud Storage) – jednoduchý na používanie softvér na organizáciu úložiska objektov, ktorý funguje na vrchu Riak KV. Riak (KV) je distribuovaná NoSQL databáza typu kľúč-hodnota. Riak CS je navrhnutý tak, aby zabezpečil jednoduchosť, dostupnosť a distribuovanosť cloudového úložiska akejkoľvek veľkosti a môže sa používať na vytváranie cloudových architektúr — ako verejných, tak súkromných — alebo ako infraštruktúrne úložisko pre vysoko zaťažené aplikácie a služby. API Riak CS je kompatibilné s Amazon S3 a podporuje generovanie správ pre rôzne situácie.

Tento článok je voľným prekladom oficiálneho manuálu pre systém Riak CS verzie 2.1.1
V systéme úložiska Riak CS tri komponenty spolupracujú, čo znamená, že každá komponenta musí byť nakonfigurovaná na spoluprácu s inými komponentami:
- Riak (KV) – systém databáz, ktorý funguje ako koncový systém.
- Riak CS — vrstva cloudového úložiska nad Riak, ktorá poskytuje úložisko a API schopnosti, uchováva súbory a metadáta v Riak a následne ich odovzdáva konečným používateľom.
- Stanchion — spravuje požiadavky týkajúce sa globálne jedinečných entít, ako sú vedrá a používatelia v inštancii Riak. Napríklad, vytváranie používateľov, vytváranie alebo odstraňovanie vedier.
Okrem toho môžete nastaviť S3 klienta na používanie pri komunikácii so systémom Riak CS.
Musíte naplánovať prítomnosť jedného uzla Riak pre každý uzol Riak CS vo vašom systéme. Uzly Riak a Riak CS môžu byť spustené na rôznych fyzických strojoch, ale v väčšine prípadov je preferovateľné spustiť jeden uzol Riak a jeden uzol Riak CS na tej istej fyzickej mašine. Predpokladajme, že jedna fyzická mašina má dostatočný výkon na uspokojenie potreby oboch uzlov Riak a Riak CS, zvyčajne uvidíte lepší výkon z dôvodu zníženia sieťových latencií.
Ak váš systém pozostáva z viacerých uzlov, konfigurácia spočíva predovšetkým v nastavení komunikácie medzi komponentami. Iné nastavenia, ako je miesto, kde budú uložené logy, majú predvolené hodnoty a potrebujú zmeny len v prípade, že chcete použiť nestandardné hodnoty.
Nastavenie komponentov systému. Nastavenie Riak KV pre CS
Keďže Riak CS je aplikácia vyvinutá nad Riakom, je veľmi dôležité venovať pozornosť vašej konfigurácii Riaku pri spustení Riak CS. Tento dokument je zároveň sprievodcom konfiguráciou Riaku a referenčným dokumentom na opis dôležitých konfiguračných parametrov.
Pred nastavením sa uistite, že Riak KV a Riak CS sú nainštalované na každom uzle v vašom klastri. Stanchion by mal byť nainštalovaný iba na jednom uzle v celom klastru.

Backendy pre Riak CS
Predvolene používaný backend Riakom je Bitcask, ale balík Riak CS obsahuje špeciálny backend, ktorý by mal byť používaný Riak klastra, ktorý je súčasťou systému Riak CS. V bežnej verzii je štandardný Multi backend, ktorý prichádza s Riakom.
Tieto isté Riak buckety, používané vo vnútri Riak CS, používajú sekundárne indexy, ktoré teraz vyžadujú backend LevelDB. Iné časti systému Riak CS môžu ťažiť z využitia back-endu Bitcask. Použitie referenčného Multi backendu je zahrnuté v Riak CS, aby sa využívali výhody oboch týchto backendov, pričom sa dosiahne najlepšia kombinácia výkonu a funkčnosti. V nasledujúcej sekcii sa popisuje, ako správne nastaviť Riak na využitie tohto Multi-backendu.
Backend — je to, čo Riak použije na ukladanie údajov. Riak KV má v portfóliu niekoľko backendov: Bitcask, LevelDB, Memory a Multi.
Okrem toho, systém výpočtu úložiska používa Riak MapReduce na sumarizáciu súborov v bucketoch. To znamená, že musíte všetkým uzlom Riak oznámiť, kde hľadať pripravené súbory Riak CS pred výpočtom ukladania.
Niekoľko ďalších parametrov musí byť zmenených na nastavenie uzla Riak ako súčasti systému Riak CS, ako je IP adresa a IP adresa a port pre komunikáciu prostredníctvom Protocol Buffers. Ostatné nastavenia je možné zmeniť, ak je to potrebné. Nasledujúce sekcie popisujú, ako nastaviť uzol Riak na prácu ako súčasť systému Riak CS.
Nastavenie Riak backendu
Po prvé, je potrebné upraviť konfiguračné súbory riak.conf alebo advanced.config/app.config. Tieto súbory môžu byť umiestnené v /etc/riak alebo v /opt/riak/etc adresároch. Predvolene Riak používa Bitcask backend. Prvá vec, ktorú musíme urobiť, je zmeniť konfiguračný súbor odstránením nasledujúceho riadku:
RIAK.CONF
## Delete this line:
storage_backend = bitcaskADVANCED.CONFIG
{riak_kv,
[ %% Odstrániť tento riadok:
{storage_backend, riak_kv_bitcask_backend},
]}APP.CONFIG
{riak_kv,
[ %% Odstrániť tento riadok:
{storage_backend, riak_kv_bitcask_backend},
]}Ďalej je potrebné uviesť požiadavku na moduly RiakCS pre Riak a nastaviť Riak na používanie konfigurovaného backendu zabezpečujúceho Riak CS. Na tento účel musíme použiť súbor advanced.config alebo app.config a pridať nasledujúce možnosti:
ADVANCED.CONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Ďalšie konfigurácie
{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"}
]}
]},
%% Ďalšie konfigurácie
]}
APP.CONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Ďalšie konfigurácie
{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"}
]}
]},
%% Ďalšie konfigurácie
]}Je veľmi dôležité poznamenať, že mnohé z týchto hodnôt budú závislé od variácií adresárov špecifických pre váš operačný systém, preto vykonávajte pokyny v súlade s nimi. Napríklad parameter add_paths predpokladá, že Riak CS je nainštalovaný v /usr/lib/riak-cs, zatiaľ čo parametre data_root predpokladajú, že Riak je nainštalovaný v /var/lib. (Pozn. V mojom prípade to bolo add_paths — /usr/lib64/riak-cs/).
Táto konfigurácia predpokladá, že Riak CS je nainštalovaný na rovnakej mašine ako Riak. Ak nie, balík potrebuje byť skopírovaný na samostatný host.
Nastavenie vytvárania subobjektov
Teraz musíme nastaviť parameter allow_mult na hodnotu true. Môžeme pridať riadok do konfiguračného súboru riak.conf, alebo do sekcie riak_core v advanced.config alebo app.config.
RIAK.CONF
buckets.default.allow_mult = trueADVANCED.CONFIG
{riak_core, [
%% Ďalšie konfigurácie
{default_bucket_props, [{allow_mult, true}]},
%% Ďalšie konfigurácie
]}APP.CONFIG
{riak_core, [
%% Ďalšie konfigurácie
{default_bucket_props, [{allow_mult, true}]},
%% Ďalšie konfigurácie
]}To umožní Riaku vytvárať subobjekty, ktoré sú potrebné na fungovanie Riak CS. Ak sa pripájate k Riak CS pomocou klientskej knižnice, nebojte sa: nebudete musieť riešiť konflikty, keďže všetky operácie Riak CS sú striktne synchronizované podľa svojej definície.
Subobjekt — je spôsob, ako ukladať viacero objektov pod jedným kľúčom, aby objekt mal rôzne hodnoty na rôznych uzloch.
Poznámka: allow_mult
Každý uzol Riak, ktorý tiež podporuje Riak CS, bude mať parameter allow_mult nastavený na true. Riak CS sa reštartuje, ak bude hodnota false.
Nastavenie názvu uzla a IP adresy
Každý uzol Riak má názov, ktorý môže byť nastavený v súbore riak.conf v možnosti nodename. Ak používate konfiguračný súbor app.config, je potrebné vytvoriť súbor s názvom vm.args v tej istej zložke, kde sa nachádza app.config, a uviesť názov uzla pomocou prepínača -name. Odporúčame dávať uzlom názvy vo formáte @. Takže ak máte tri spustené uzly na jednom hostiteľovi 100.0.0.1, môžete ich nazvať riak1@100.0.0.1, riak2@100.0.0.1 a riak3@100.0.0.1, alebo im môžete dať špecifickejšie názvy, ako test_cluster1@100.0.0.1, user_data3@100.0.0.1 a podobne. Nižšie uvedený príklad demonštruje zmenu názvu uzla na riak1@127.0.0.1, ktorý bude fungovať na lokálnom hostiteľovi.
RIAK.CONF
nodename = riak1@127.0.0.1 VM.ARGS
-name riak1@127.0.0.1Musíte nastaviť názvy pre všetky uzly pred spustením a ich zapojením do klastra.
Test nastavenia
Teraz, keď sú všetky potrebné nastavenia uzla hotové, môžeme sa pokúsiť spustiť Riak:
SHELL
riak start Poznámka. Odpoveď v mojom prípade:

Tu je potrebné chvíľu počkať. Potom môžete začať testovať spustený uzol.
SHELL
riak pingAk odpoveď bude pong, znamená to, že Riak je spustený: ak odpoveď bude Node not responding to pings, niečo sa pokazilo.
Poznámka. Odpoveď v mojom prípade:

Ak uzol neštartoval správne, pozrite sa do denníka erlang.log.1 v adresári /log uzla, ak je možné problém identifikovať. Jednou z najbežnejších chýb je invalid_storage_backend, čo naznačuje, že cesta k knižnici Riak CS v advanced.config alebo app.config je nesprávna (alebo Riak CS nie je nainštalovaný na serveri). Napriek tejto chybe sa uistite, že ste nezmenili z riak_cs_kv_multi_backend na riak_kv_multi_backend.
Nastavenie Riak na používanie protokolových bufferov
Nastavenia protokolových bufferov Riak sa nachádzajú v riak.conf alebo v sekcii riak_api v súboroch advanced.config alebo app.config, ktoré sa nachádzajú v adresári /etc/riak/. Predvolene hostiteľ má IP adresu 127.0.0.1 a port 8087. Musíte ich zmeniť, ak plánujete spustiť Riak a Riak CS nie v lokálnom prostredí. Zmeňte IP adresu uzla Riak a port 8087 na vhodné.
RIAK.CONF
listener.protobuf.internal = 10.0.2.10:10001ADVANCED.CONF
{riak_api, [
%% Iné konfigurácie
{pb, ["10.0.2.10", 10001]},
%% Iné konfigurácie
]}APP.CONFIG
riak_api, [
%% Iné konfigurácie
{pb, ["10.0.2.10", 10001]},
%% Iné konfigurácie
]}Poznámka:Hodnota parametra listener.protobuf.internal v súbore riak.conf (alebo hodnota parametra pb v súbore advanced.conf / app.config) by mala zodpovedať hodnotám pre riak_host v súbore Riak CS riak-cs.config a Stanchion stanchion.conf (alebo riak_host príslušne v advanced.config/app.config).
Poznámka o čísle portu
Môže byť potrebné zvoliť iné číslo portu, ak dojde ku konfliktu s portami používanými inou aplikáciou alebo ak používate vyvažovač zaťaženia alebo proxy server.
Taktiež sa odporúča, aby si používatelia overili, že veľkosť Riak protobuf.backlog (alebo v súboroch advanced.config/app.config toto pb_backlog) je rovná alebo väčšia ako veľkosť pool.request.size, uvedená pre Riak CS v súbore riak-cs.config (alebo request_pool_size v advanced.config/app.conf).
Ak bola zmenená hodnota pool.request.size v Riak CS, mala by sa aktualizovať aj hodnota protobuf.backlog v Riak.
Ďalšie nastavenia Riak
Súbory riak.conf a advanced.config obsahujú ďalšie nastavenia, ktoré konfigurujú vytváranie protokolov a cesty ich uloženia. Tieto nastavenia majú predvolené hodnoty a mali by fungovať vo väčšine prípadov. Pre viac informácií odporúčame prečítať našu dokumentáciu o konfiguračných súboroch.
Nastavenie IP adresy pre Riak
Pri nastavovaní IP adresy pre Riak by ste mali zabezpečiť, že uzly Riak majú jedinečnú IP adresu, či už pracujete len s jedným uzlom alebo pridávate ďalšie uzly do systému. IP adresa Riak je obsiahnutá v súbore riak.conf alebo — ak používate súbor app.config — v konfiguračnom súbore vm.args, ktorý sa nachádza v adresári /etc/riak (alebo v /opt/riak/etc v iných operačných systémoch).
Pôvodne riadok obsahujúci IP adresu Riak odkazuje na lokálny host v tomto mieste:
RIAK.CONF
nodename = riak@127.0.0.1VM.ARGS
-name riak@127.0.0.1Nahraďte 127.0.0.1 preferovanou IP adresou alebo menom hostiteľa uzla Riak.
Nastavenia výkonu a priepustnosti
Z dôvodov výkonu dôrazne odporúčame pridať hodnoty do konfiguračných súborov Riak riak.conf alebo vm.args, ktoré sa nachádzajú v adresári /etc/riak/ alebo /opt/riak/etc.
RIAK.CONF
erlang.max_ports = 65536VM.ARGS
## This setting should already be present for recent Riak installs.
-env ERL_MAX_PORTS 65536Zakázanie JavaScript MapReduce
Odporúča sa nepoužívať zastaraný JavaScript MapReduce v spojení s akoukoľvek verziou Riak CS. Z dôvodov výkonu by ste mali zakázať virtuálnu mašinu, ktorá vykonáva operácie JavaScript MapReduce úpravou v konfiguračnom súbore riak.conf, alebo v sekcii riak_kv advanced.conf alebo app.config:
RIAK.CONF
javascript.map_pool_size = 0
javascript.reduce_pool_size = 0
javascript.hook_pool_size = 0 ADVANCED.CONFIG
{riak_kv, [
%% Other configs
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Other configs
]}APP.CONFIG
{riak_kv, [
%% Other configs
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Other configs
]}Ďalej je potrebné nastaviť ostatné komponenty systému Riak CS.
Zdroj: habr.com
