Riak CS (Cloud Storage) – en brugervenlig software til organisering af objektlagring, der kører oven på Riak KV. Riak (KV) er en distribueret NoSQL-databaser af typen "nøgle-værdi". Riak CS er designet til at sikre enkelhed, tilgængelighed og distribution af cloud-lagring i enhver skala og kan anvendes til at opbygge cloud-arkitekturer — både offentlige og private — eller som infrastrukturlagring til højt belastede applikationer og tjenester. Riak CS API er kompatibel med Amazon S3 og understøtter muligheden for rapportering om forskellige situationer.

Denne artikel er en fri oversættelse af den officielle vejledning til Riak CS systemet version 2.1.1.
I Riak CS lagringssystemet arbejder tre komponenter sammen, hvilket betyder, at hver komponent skal konfigureres til at arbejde med de andre komponenter:
- Riak (KV) – en databasesystem, der fungerer som en slutpunktssystem.
- Riak CS – et cloud-lagerværk oven på Riak, der tilbyder lagring og API-muligheder, gemmer filer og metadata i Riak og leverer dem derefter til slutbrugerne.
- Stanchion – styrer forespørgsler, der involverer globalt unikke enheder som buckets og brugere i Riak-forekomsten. For eksempel oprettelse af brugere, oprettelse eller sletning af buckets.
Derudover kan du også konfigurere en S3-klient til brug i kommunikationen med Riak CS-systemet.
Du skal planlægge tilstedeværelsen af én Riak-node for hver Riak CS-node i dit system. Riak og Riak CS-noder kan køre på forskellige fysiske maskiner, men i de fleste tilfælde er det at foretrække at køre én Riak-node og én Riak CS-node på samme fysiske maskine. Forudsat at én fysisk maskine har tilstrækkelig kapacitet til at opfylde behovene for begge noder Riak og Riak CS, vil du typisk opleve bedre ydeevne på grund af reducerede netværksforsinkelser.
Hvis dit system består af flere noder, er konfigurationen først og fremmest en opsætning af kommunikationen mellem komponenterne. Andre indstillinger, såsom hvor logfilerne vil blive gemt, har standardværdier og har kun brug for ændringer, hvis du ønsker at bruge ikke-standard værdier.
Konfiguration af systemkomponenter. Konfiguration af Riak KV til CS
Da Riak CS er en applikation bygget oven på Riak, er det meget vigtigt at være opmærksom på din Riak-konfiguration, når Riak CS køres. Dette dokument fungerer både som en guide til konfiguration af Riak og som en reference, der beskriver vigtige konfigurationsparametre.
Før konfigurationen, sikre dig at Riak KV og Riak CS er installeret på hver node i dit cluster. Stanchion, derimod, skal kun være installeret på én node i hele clustret.

Backends til Riak CS
Som standard er backend'en, der bruges af Riak, Bitcask, men Riak CS-pakken inkluderer en speciel backend, der skal bruges af Riak-klusteret, som er en del af Riak CS-systemet. I den almindelige version er der en standard Multi-backend, der leveres med Riak.
De samme Riak-buckets, der bruges inden i Riak CS, bruger sekundære indekser, som nu kræver LevelDB-backend. Andre dele af Riak CS-systemet kan drage fordel af at bruge Bitcask-backend. Brug af den eksemplariske Multi-backend er inkluderet i Riak CS for at udnytte fordelene ved begge disse backends for at opnå det bedste mix af ydeevne og funktionalitet. I det følgende afsnit beskrives, hvordan man korrekt konfigurerer Riak til at bruge denne Multi-backend.
Backend — er hvad Riak vil bruge til at gemme data. I Riak KV's arsenal findes der flere backends: Bitcask, LevelDB, Memory og Multi.
Derudover bruger datalagringssystemet Riak MapReduce til at opsummere filer i buckets. Det betyder, at du skal informere alle Riak-noder om, hvor de skal finde de forberedte filer fra Riak CS, før opbevaringen beregnes.
Flere andre parametre skal ændres for at konfigurere Riak-noden som en del af Riak CS-systemet, såsom IP-adresse og IP-adresse og port til kommunikation via Protocol Buffers. De andre indstillinger kan ændres, hvis det er nødvendigt. De følgende sektioner beskriver, hvordan man konfigurerer Riak-noden til at fungere som en del af Riak CS-systemet.
Konfiguration af Riak backend
For det første redigeres riak.conf eller advanced.config/app.config konfigurationsfilerne. Disse filer kan være placeret i /etc/riak eller i /opt/riak/etc mapperne. Som standard bruger Riak Bitcask backend. Det første, vi skal gøre, er at ændre konfigurationsfilen ved at fjerne følgende linje:
RIAK.CONF
## Delete this line:
storage_backend = bitcaskADVANCED.CONFIG
{riak_kv,
[ %% Slet denne linje:
{storage_backend, riak_kv_bitcask_backend},
]}APP.CONFIG
{riak_kv,
[ %% Slet denne linje:
{storage_backend, riak_kv_bitcask_backend},
]}Herefter skal vi angive nødvendigheden af RiakCS-moduler til Riak og instruere Riak til at bruge den konfigurerede backend, der understøtter Riak CS. Vi skal bruge advanced.config eller app.config filen til dette og tilføje følgende indstillinger:
ADVANCED.CONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Andre konfigurationer
{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"}
]}
]},
%% Andre konfigurationer
]}
APP.CONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Andre konfigurationer
{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"}
]}
]},
%% Andre konfigurationer
]}Det er vigtigt at bemærke, at mange af disse værdier vil afhænge af variationsmapper, der er specifikke for dit operativsystem, så følg instruktionerne i overensstemmelse hermed. For eksempel forudsætter parameteren add_paths, at Riak CS er installeret i /usr/lib/riak-cs, mens data_root parametre forudsætter, at Riak er installeret i /var/lib. (Note: I mit tilfælde var det add_paths — /usr/lib64/riak-cs/).
Denne konfiguration forudsætter, at Riak CS er installeret på samme maskine som Riak. Hvis ikke, skal pakken kopieres til en separat vært.
Konfiguration af oprettelsen af siding
Nu skal vi indstille parameteren allow_mult til true. Vi kan tilføje linjen i konfigurationsfilen riak.conf, eller sektionen riak_core i advanced.config eller app.config.
RIAK.CONF
buckets.default.allow_mult = trueADVANCED.CONFIG
{riak_core, [
%% Andre konfigurationer
{default_bucket_props, [{allow_mult, true}]},
%% Andre konfigurationer
]}APP.CONFIG
{riak_core, [
%% Andre konfigurationer
{default_bucket_props, [{allow_mult, true}]},
%% Andre konfigurationer
]}Dette vil give Riak mulighed for at skabe siding, hvilket er nødvendigt for at Riak CS fungerer. Hvis du tilslutter til Riak CS ved hjælp af et klientbibliotek, skal du ikke bekymre dig: du behøver ikke at afklare konflikter, da alle Riak CS-operationer er strengt synkroniserede i henhold til deres definition.
Siding — er en måde at opbevare flere objekter under én nøgle, så objektet har forskellige værdier på forskellige noder.
Bemærk: allow_mult
Enhver Riak-nod, der også understøtter Riak CS, vil altid have parameteren allow_mult indstillet til true. Riak CS vil nulstille opstarten, hvis værdien er false.
Indstilling af nodenavn og IP-adresse
Hver Riak-node har et navn, der kan angives i riak.conf under nodename-parameteren. Hvis du bruger konfigurationsfilen app.config, skal du oprette en fil med navnet vm.args i den samme mappe som app.config, og angive nodenavnet ved hjælp af flaget -name. Det anbefales at navngive noderne i formatet @. Så hvis du har tre kørende noder på samme vært 100.0.0.1, kan du navngive dem riak1@100.0.0.1, riak2@100.0.0.1 og riak3@100.0.0.1, eller du kan give dem mere specifikke navne som test_cluster1@100.0.0.1, user_data3@100.0.0.1 osv. Eksemplet nedenfor viser, hvordan man ændrer nodenavnet til riak1@127.0.0.1, som vil fungere på den lokale vært.
RIAK.CONF
nodename = riak1@127.0.0.1 VM.ARGS
-name riak1@127.0.0.1Du skal angive navne til alle noder, før de startes og tilføjes til klyngen.
Test konfiguration
Nu hvor alle nødvendige nodeindstillinger er udført, kan vi forsøge at starte Riak:
SHELL
riak start Bemærk. Svaret i mit tilfælde:

Her skal du vente lidt. Derefter kan du begynde at teste den kørte node.
SHELL
riak pingHvis svaret er pong, så kører Riak: hvis svaret er Node not responding to pings, så er der opstået et problem.
Bemærk. Svaret i mit tilfælde:

Hvis noden ikke startede korrekt, så tjek erlang.log.1 i /log-mappen på noden for at se, om problemet kan identificeres. En af de mest almindelige fejl er invalid_storage_backend, hvilket indikerer, at stien til Riak CS-biblioteket i advanced.config eller app.config er forkert (eller at Riak CS ikke er installeret på serveren). På trods af denne fejl skal du sikre dig, at du ikke har ændret fra riak_cs_kv_multi_backend til riak_kv_multi_backend.
Konfigurer Riak til at bruge protocol buffers
Indstillinger for Riaks protocol buffers findes i riak.conf eller under riak_api-sektionen i advanced.config eller app.config-filerne, som er placeret i /etc/riak/-mappen. Som standard har vært IP-adressen 127.0.0.1 og port 8087. Du skal ændre dem, hvis du planlægger at køre Riak og Riak CS uden for et lokalt miljø. Erstat 127.0.0.1 med den relevante IP-adresse for Riak-noden og port 8087 med den passende.
RIAK.CONF
listener.protobuf.internal = 10.0.2.10:10001ADVANCED.CONF
{riak_api, [
%% Andre konfigurationer
{pb, ["10.0.2.10", 10001]},
%% Andre konfigurationer
]}APP.CONFIG
riak_api, [
%% Andre konfigurationer
{pb, ["10.0.2.10", 10001]},
%% Andre konfigurationer
]}Bemærk:Værdien af parameteren listener.protobuf.internal i riak.conf (eller værdien af parameteren pb i advanced.conf / app.config) skal svare til værdierne for riak_host i Riak CS riak-cs.config og Stanchion stanchion.conf (eller riak_host i advanced.config/app.config filerne).
Bemærkning om portnummeret
Et andet portnummer kan være nødvendigt, hvis porten konfligerer med porte, der bruges af et andet program, eller hvis du bruger en belastningsfordeler eller proxyserver.
Det anbefales også, at brugerne sikrer sig, at størrelsen på Riak protobuf.backlog (eller i advanced.config/app.config filerne er dette pb_backlog) er lig med eller større end størrelsen på pool.request.size angivet for Riak CS i riak-cs.config (eller request_pool_size i advanced.config/app.config filerne).
Hvis værdien af pool.request.size i Riak CS er ændret, skal værdien af protobuf.backlog også i Riak opdateres.
Andre Riak-indstillinger
Filene riak.conf og advanced.config inkluderer andre indstillinger, der konfigurerer oprettelsen af logfiler og stierne til deres gemmested. Disse indstillinger har standardværdier og bør fungere i de fleste tilfælde. For mere information anbefaler vi, at du læser vores dokumentation om konfigurationsfiler.
Opsætning af IP-adresse til Riak
Ved opsætning IP-adresser for Riak skal du sørge for, at Riak-noderne har unikke IP-adresser, hvad enten du arbejder med én node eller tilføjer yderligere noder til systemet. Riak IP-adressen findes i riak.conf eller - hvis du bruger app.config filen - i vm.args konfigurationsfilen, der ligger i /etc/riak mappen (eller i /opt/riak/etc/ i andre operativsystemer).
Indledningsvis angiver strengen, der indeholder Riak IP-adressen, den lokale vært her:
RIAK.CONF
nodename = riak@127.0.0.1VM.ARGS
-name riak@127.0.0.1Erstat 127.0.0.1 med den foretrukne IP-adresse eller værtsnavnet på Riak-noden.
Ydelses- og båndbreddeindstillinger
Af hensyn til ydeevnen anbefaler vi kraftigt at tilføje værdier til Riak konfigurationsfilerne riak.conf eller vm.args, som ligger i /etc/riak/ eller /opt/riak/etc mapperne.
RIAK.CONF
erlang.max_ports = 65536VM.ARGS
## This setting should already be present for recent Riak installs.
-env ERL_MAX_PORTS 65536Deaktivering af JavaScript MapReduce
Det anbefales ikke at bruge den forældede JavaScript MapReduce i forbindelse med nogen version af Riak CS. Af ydeevnehensyn skal du deaktivere den virtuelle maskine, der udfører JavaScript MapReduce-operationer ved at konfigurere dette i riak.conf konfigurationsfilen, eller i riak_kv sektionen af advanced.conf eller app.config:
RIAK.CONF
javascript.map_pool_size = 0
javascript.reduce_pool_size = 0
javascript.hook_pool_size = 0 ADVANCED.CONFIG
{riak_kv, [
%% Andre konfigurationer
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Andre konfigurationer
]}APP.CONFIG
{riak_kv, [
%% Andre konfigurationer
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Andre konfigurationer
]}Dernæst skal vi konfigurere de resterende komponenter i Riak CS-systemet.
Kilde: habr.com
