Riak CS (Cloud Storage) – gebruiksvriendelijke software voor het organiseren van objectopslag, gebaseerd op Riak KV. Riak (KV) is een gedistribueerde NoSQL-database van het type ‘key-value’. Riak CS is ontworpen om eenvoudigheid, beschikbaarheid en gedistribueerde cloudopslag op elke schaal te bieden, en kan worden gebruikt voor het bouwen van cloudarchitecturen - zowel publiek als privé - of als infrastructuuropslag voor zwaar belaste applicaties en services. De Riak CS API is compatibel met Amazon S3 en ondersteunt rapportages voor verschillende situaties.

Dit artikel is een vrije vertaling van de officiële handleiding voor het Riak CS-systeem versie 2.1.1.
In het opslag systeem Riak CS werken drie componenten samen, wat betekent dat elke component moet worden ingesteld om met de andere componenten te functioneren:
- Riak (KV) – een databasesysteem dat als eindpunt fungeert.
- Riak CS — een cloudopslaglaag bovenop Riak, die opslag en API-mogelijkheden biedt, bestanden en metadata opslaat in Riak, en deze vervolgens aan eindgebruikers doorgeeft.
- Stanchion — beheert verzoeken die wereldwijde unieke entiteiten omvatten, zoals buckets en gebruikers in een Riak-instantie. Bijvoorbeeld: gebruikers aanmaken, buckets aanmaken of verwijderen.
Daarnaast kunt u ook een S3-client configureren voor gebruik in communicatie met het Riak CS-systeem.
U moet ervoor zorgen dat er één Riak-knooppunt is voor elk Riak CS-knooppunt in uw systeem. Riak- en Riak CS-knooppunten kunnen op verschillende fysieke machines draaien, maar in de meeste gevallen is het beter om één Riak-knooppunt en één Riak CS-knooppunt op dezelfde fysieke machine te draaien. Dit ervan uitgaande dat één fysieke machine voldoende capaciteit heeft om aan de behoeften van beide Riak- en Riak CS-knooppunten te voldoen, zult u doorgaans een betere prestaties zien door verminderde netwerklatentie.
Als uw systeem uit meerdere knooppunten bestaat, bestaat de configuratie vooral uit de instelling van de communicatie tussen de componenten. Andere instellingen, zoals waar de logbestanden worden opgeslagen, hebben standaardwaarden en moeten alleen worden aangepast als u aangepaste waarden wilt gebruiken.
Configuratie van systeemcomponenten. Configuratie van Riak KV voor CS
Aangezien Riak CS een applicatie is die bovenop Riak is ontwikkeld, is het belangrijk om aandacht te besteden aan uw Riak-configuratie wanneer Riak CS wordt gestart. Dit document fungeert zowel als een handleiding voor het configureren van Riak als een referentiedocument voor het beschrijven van belangrijke configuratieparameters.
Zorg ervoor dat Riak KV en Riak CS op elke knoop in uw cluster zijn geïnstalleerd voordat u met de configuratie begint. Stanchion moet daarentegen slechts op één knoop in het cluster worden geïnstalleerd.

Backends voor Riak CS
Standaard is de backend die door Riak wordt gebruikt Bitcask, maar het Riak CS-pakket omvat een speciale backend die door de Riak-cluster moet worden gebruikt, die deel uitmaakt van het Riak CS-systeem. In de reguliere versie is er een standaard multi-backend dat met Riak wordt meegeleverd.
Dezelfde Riak-buckets die binnen Riak CS worden gebruikt, gebruiken secundaire indexen, die nu het LevelDB-backend vereisen. Andere delen van het Riak CS-systeem kunnen profiteren van het gebruik van het Bitcask-backend. Het gebruik van het voorbeeld-multi-backend is inbegrepen in Riak CS om de voordelen van beide backends te benutten voor een optimale combinatie van prestaties en functionaliteit. In de volgende sectie wordt beschreven hoe Riak correct kan worden geconfigureerd om dit multi-backend te gebruiken.
Backend is wat Riak zal gebruiken om gegevens op te slaan. Riak KV heeft verschillende backends in zijn arsenaal: Bitcask, LevelDB, Memory en Multi.
Bovendien gebruikt het systeem voor opslagberekeningen Riak MapReduce om bestanden in buckets te sommen. Dit betekent dat u alle Riak-knooppunten moet informeren waar ze de voorbereide Riak CS-bestanden kunnen vinden voordat u de opslagberekeningen uitvoert.
Verschillende andere instellingen moeten worden gewijzigd om de Riak-knoop in te stellen als onderdeel van het Riak CS-systeem, zoals het IP-adres en het IP-adres en poort voor communicatie via Protocol Buffers. De overige instellingen kunnen indien nodig worden aangepast. De volgende secties beschrijven hoe u de Riak-knoop kunt configureren om als onderdeel van het Riak CS-systeem te functioneren.
Configuratie van Riak backend
Ten eerste moeten de configuratiebestanden riak.conf of advanced.config/app.config worden bewerkt. Deze bestanden kunnen zich bevinden in de directories /etc/riak of /opt/riak/etc. Standaard gebruikt Riak de Bitcask backend. Het eerste wat we moeten doen, is het configuratiebestand aanpassen door de volgende regel te verwijderen:
RIAK.CONF
## Delete this line:
storage_backend = bitcaskADVANCED.CONFIG
{riak_kv,
[ %% Verwijder deze regel:
{storage_backend, riak_kv_bitcask_backend},
]}APP.CONFIG
{riak_kv,
[ %% Verwijder deze regel:
{storage_backend, riak_kv_bitcask_backend},
]}Daarna moeten we de benodigde RiakCS-modules voor Riak aanwijzen en Riak instrueren om de geconfigureerde backend voor Riak CS te gebruiken. We moeten hiervoor het bestend advanced.config of app.config gebruiken en de volgende opties toevoegen:
ADVANCED.CONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Andere configuraties
{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"}
]}
]},
%% Andere configuraties
]}
APP.CONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Andere configuraties
{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"}
]}
]},
%% Andere configuraties
]}Het is belangrijk op te merken dat veel van deze waarden afhankelijk zijn van de variaties in de directories specifiek voor uw besturingssysteem, dus volg de instructies dienovereenkomstig. Bijvoorbeeld, de parameter add_paths gaat ervan uit dat Riak CS is geïnstalleerd in /usr/lib/riak-cs, terwijl de parameters data_root veronderstellen dat Riak is geïnstalleerd in /var/lib. (Opmerking: in mijn geval was dit add_paths — /usr/lib64/riak-cs/).
Deze configuratie gaat ervan uit dat Riak CS op dezelfde machine is geïnstalleerd als Riak. Als dat niet het geval is, moet het pakket naar een aparte host worden gekopieerd.
Configuratie van de instelling voor site-verbindingen
Nu moeten we de parameter allow_mult op true instellen. We kunnen deze regel toevoegen in het configuratiebestand riak.conf, of in de sectie riak_core in advanced.config of app.config.
RIAK.CONF
buckets.default.allow_mult = trueADVANCED.CONFIG
{riak_core, [
%% Andere configuraties
{default_bucket_props, [{allow_mult, true}]},
%% Andere configuraties
]}APP.CONFIG
{riak_core, [
%% Andere configuraties
{default_bucket_props, [{allow_mult, true}]},
%% Andere configuraties
]}Dit stelt Riak in staat om site-verbindingen te maken, die nodig zijn voor de werking van Riak CS. Als u verbinding maakt met Riak CS via een clientbibliotheek, maak u geen zorgen: u hoeft geen conflicten op te lossen, aangezien alle Riak CS-operaties strikt zijn afgestemd op hun definitie.
Site-verbinding — is een manier om meerdere objecten onder één sleutel op te slaan, zodat het object verschillende waarden op verschillende knooppunten heeft.
Opmerking: allow_mult
Elke Riak-knooppunt dat ook Riak CS ondersteunt, zal altijd de waarde true hebben voor de parameter allow_mult. Riak CS zal de lancering stoppen als de waarde false is.
Instellen van de knooppuntnaam en IP-adres
Elke Riak-knooppunt heeft een naam die kan worden opgegeven in riak.conf in de optie nodename. Als je het configuratiebestand app.config gebruikt, moet je een bestand met de naam vm.args aanmaken in dezelfde directory als app.config en de knooppuntnaam opgeven met de vlag -name. We raden aan de knooppunten te benoemen in het formaat @. Als je bijvoorbeeld drie knooppunten op één host 100.0.0.1 hebt draaien, kun je ze riak1@100.0.0.1, riak2@100.0.0.1 en riak3@100.0.0.1 noemen of je kunt meer specifieke namen geven, zoals test_cluster1@100.0.0.1, user_data3@100.0.0.1, enzovoort. Het onderstaande voorbeeld toont het wijzigen van de knooppuntnaam naar riak1@127.0.0.1, dat zal werken op de lokale host.
RIAK.CONF
nodename = riak1@127.0.0.1 VM.ARGS
-name riak1@127.0.0.1Je moet namen aan alle knooppunten toekennen voordat je ze start en aan de cluster toevoegt.
Test configuratie
Nu, wanneer alle noodzakelijke knooppuntinstellingen zijn voltooid, kunnen we proberen Riak te starten:
SHELL
riak start Opmerking: het antwoord in mijn geval is:

Hier moet je even wachten. Dan kun je beginnen met de test van het draaiende knooppunt.
SHELL
riak pingAls het antwoord pong is, werkt Riak: als het antwoord Node not responding to pings is, is er iets mis gegaan.
Opmerking: het antwoord in mijn geval is:

Als het knooppunt niet correct is opgestart, kijk dan in het logbestand erlang.log.1 in de directory /log van het knooppunt, als je het probleem kunt identificeren. Een van de meest voorkomende fouten is invalid_storage_backend. Dit geeft aan dat het pad naar de Riak CS-bibliotheek in advanced.config of app.config onjuist is (of Riak CS is niet op de server geïnstalleerd). Ondanks deze fout, zorg ervoor dat je niet hebt veranderd van riak_cs_kv_multi_backend naar riak_kv_multi_backend.
Riak instellen voor het gebruik van protocolbuffers
De instellingen voor Riak-protocolbuffers bevinden zich in riak.conf of in het riak_api-gedeelte van advanced.config of app.config bestanden, die zijn opgeslagen in de /etc/riak/ directory. Standaard heeft de host het IP-adres 127.0.0.1 en poort 8087. Je moet deze wijzigen als je van plan bent om Riak en Riak CS niet in een lokale omgeving uit te voeren. Vervang het IP-adres 127.0.0.1 van het Riak-knooppunt en poort 8087 door geschikte.
RIAK.CONF
listener.protobuf.internal = 10.0.2.10:10001ADVANCED.CONF
{riak_api, [
%% Andere configuraties
{pb, ["10.0.2.10", 10001]},
%% Andere configuraties
]}APP.CONFIG
riak_api, [
%% Andere configuraties
{pb, ["10.0.2.10", 10001]},
%% Andere configuraties
]}Opmerking:De waarde van de parameter listener.protobuf.internal in het riak.conf (of de waarde van de parameter pb in de advanced.conf / app.config) moet overeenkomen met de waarden voor riak_host in het Riak CS riak-cs.config en Stanchion stanchion.conf (of riak_host in de advanced.config/app.config bestanden).
Opmerking over het poortnummer
Een ander poortnummer kan nodig zijn als de poort in conflict komt met poorten die door een andere applicatie worden gebruikt of als je een load balancer of proxyserver gebruikt.
Het is ook aan te raden dat gebruikers ervoor zorgen dat de grootte van Riak protobuf.backlog (of in de advanced.config/app.config bestanden pb_backlog) gelijk is aan of groter is dan de grootte van pool.request.size, zoals opgegeven voor Riak CS in riak-cs.config (of request_pool_size in advanced.config/app.conf bestanden).
Als de waarde van pool.request.size in Riak CS is gewijzigd, moet ook de waarde van protobuf.backlog in Riak worden bijgewerkt.
Andere Riak-instellingen
De bestanden riak.conf en advanced.config bevatten andere instellingen die de aanmaak van logbestanden en de paden ervoor configureren. Deze instellingen hebben standaardwaarden en zouden in de meeste gevallen moeten werken. Voor meer informatie raden we aan onze documentatie over configuratiebestanden te lezen.
IP-adres configureren voor Riak
Bij het configureren IP-adressen voor Riak moet je ervoor zorgen dat de Riak-nodes een uniek IP-adres hebben, of je nu met één node werkt of extra nodes aan het systeem toevoegt. Het IP-adres van Riak staat in riak.conf of, als je het app.config-bestand gebruikt, in het vm.args-configuratiebestand, dat zich ook bevindt in de /etc/riak directory (of in /opt/riak/etc/ in andere besturingssystemen).
Aanvankelijk geeft de regel met het IP-adres van Riak aan de lokale host aan:
RIAK.CONF
nodename = riak@127.0.0.1VM.ARGS
-name riak@127.0.0.1Vervang 127.0.0.1 door het gewenste IP-adres of de hostnaam van de Riak-node.
Prestatie- en doorvoerinstellingen
Vanwege prestatieoverwegingen raden we ten zeerste aan om waarden toe te voegen aan de configuratiebestanden van Riak riak.conf of vm.args, die zich in de /etc/riak/ of /opt/riak/etc directory bevinden.
RIAK.CONF
erlang.max_ports = 65536VM.ARGS
## This setting should already be present for recent Riak installs.
-env ERL_MAX_PORTS 65536JavaScript MapReduce uitschakelen
Het wordt aanbevolen om de verouderde JavaScript MapReduce niet te gebruiken met een versie van Riak CS. Om prestieredenen moet je de virtuele machine die JavaScript MapReduce-bewerkingen uitvoert uitschakelen door het te configureren in het riak.conf configuratiebestand, of in het riak_kv gedeelte van advanced.conf of app.config:
RIAK.CONF
javascript.map_pool_size = 0
javascript.reduce_pool_size = 0
javascript.hook_pool_size = 0 ADVANCED.CONFIG
{riak_kv, [
%% Andere configuraties
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Andere configuraties
]}APP.CONFIG
{riak_kv, [
%% Andere configuraties
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Andere configuraties
]}Vervolgens moeten we de overige componenten van het Riak CS-systeem configureren.
Bron: habr.com
