Riak CS (Cloud Storage) – brukervennlig programvare for organisering av objektlagring, kjører på toppen av Riak KV. Riak (KV) er en distribuert NoSQL nøkkelverdi-database. Riak CS er designet for å gi enkelhet, tilgjengelighet, distribusjon av skylagring av enhver skala, og kan brukes til å bygge skyarkitekturer – både offentlige og private – eller som infrastrukturlagring for høyt belastede applikasjoner og tjenester. Riak CS API er kompatibel med Amazon S3 og støtter muligheten til å motta rapporter om ulike situasjoner.
Denne artikkelen er en gratis oversettelse av den offisielle manualen for Riak CS-systemet versjon 2.1.1
I Riak CS lagringssystemet fungerer tre komponenter sammen med hverandre, noe som betyr at hver komponent må konfigureres til å fungere med de andre komponentene:
- Riak (KV) – et databasesystem som fungerer som et sluttsystem.
- Riak CS – Et skylagringslag på toppen av Riak som gir lagrings- og API-funksjoner, lagrer filer og metadata i Riak, og deretter distribuerer dem til sluttbrukere.
- Stanchion - Håndterer spørringer som involverer globalt unike enheter som bøtter og brukere i Riak-forekomsten. For eksempel opprette brukere, opprette eller slette buckets.
I tillegg kan du også konfigurere S3-klienten for bruk i meldinger med Riak CS-systemet.
Du bør planlegge å ha en Riak-node for hver Riak CS-node på systemet ditt. Riak- og Riak CS-noder kan kjøres på forskjellige fysiske maskiner, men i de fleste tilfeller er det å foretrekke å kjøre én Riak-node og én Riak CS-node på samme fysiske maskin. Forutsatt at én fysisk maskin har nok strøm til å tilfredsstille behovene til både Riak og Riak CS-noder, vil du generelt se bedre ytelse på grunn av redusert nettverksforsinkelse.
Hvis systemet ditt består av flere noder, handler konfigurasjon først og fremst om å sette opp kommunikasjon mellom komponenter. Andre innstillinger, for eksempel hvor loggfilene skal lagres, har standardverdier og må bare endres hvis du vil bruke ikke-standardverdier.
Sette opp systemkomponenter. Sette opp Riak KV for CS
Siden Riak CS er en applikasjon bygget på toppen av Riak, er det svært viktig å være oppmerksom på din Riak-konfigurasjon når du kjører Riak CS. Dette dokumentet er både en Riak-konfigurasjonsveiledning og et referansedokument som beskriver viktige konfigurasjonsparametere.
Før oppsett, sørg for at Riak KV og Riak CS er installert på hver node i klyngen din. Stanchion, derimot, skal kun installeres på én node i hele klyngen.
Backends for Riak CS
Standard backend brukt av Riak er Bitcask, men Riak CS-pakken inkluderer en spesiell backend som må brukes av Riak-klyngen som er en del av Riak CS-systemet. Den vanlige versjonen har standard Multi-backend som følger med Riak.
De samme Riak-bøttene som brukes inne i Riak CS bruker sekundære indekser, som nå krever en LevelDB-backend. Andre deler av Riak CS-systemet kan dra nytte av å bruke Bticask-backend. Bruken av en prøve Multi-backend er inkludert i Riak CS for å dra nytte av begge disse backends for å oppnå den beste kombinasjonen av ytelse og funksjonalitet. Den neste delen beskriver hvordan du konfigurerer Riak riktig til å bruke denne Multi-backend.
Baksiden er det Riak vil bruke for å lagre data. Riak KV har flere backends i sitt arsenal: Bitcask, LevelDB, Memory og Multi.
I tillegg bruker lagringsberegningssystemet Riak MapReduse til å samle filer i bøtter. Dette betyr at du må fortelle alle Riak-noder hvor de skal lete etter forberedte Riak CS-filer før datalagring.
Flere andre parametere må endres for å konfigurere Riak-noden som en del av Riak CS-systemet, for eksempel IP-adressen og IP-adressen og porten for meldinger gjennom Protocol Buffers. Andre innstillinger kan endres om nødvendig. De følgende avsnittene beskriver hvordan du konfigurerer en Riak-node til å fungere som en del av Riak CS-systemet.
Setter opp Riak backend
Først redigeres konfigurasjonsfilene riak.conf eller advanced.config/app.config. Disse filene kan være plassert i /etc/riak eller /opt/riak/etc kataloger. Som standard bruker Riak Bitcask-backend. Det første vi må gjøre er å endre konfigurasjonsfilen ved å fjerne følgende linje:
RIAK.CONF
## Delete this line:
storage_backend = bitcask
AVANSERT.KONFIG
{riak_kv,
[ %% Delete this line:
{storage_backend, riak_kv_bitcask_backend},
]}
APP.CONFIG
{riak_kv,
[ %% Delete this line:
{storage_backend, riak_kv_bitcask_backend},
]}
Deretter må vi demonstrere behovet for RiakCS-moduler for Riak og instruere Riak om å bruke den konfigurerte backend som gir Riak CS. Vi må bruke filen advanced.config eller app.config for dette og legge til følgende alternativer:
AVANSERT.KONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Other configs
{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"}
]}
]},
%% Other configs
]}
APP.CONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Other configs
{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"}
]}
]},
%% Other configs
]}
Det er veldig viktig å merke seg at mange av disse verdiene vil avhenge av katalogvariasjoner som er spesifikke for operativsystemet ditt, så følg instruksjonene deretter. For eksempel antar alternativet add_paths at Riak CS er installert i /usr/lib/riak-cs, mens data_root-alternativene antar at Riak er installert i /var/lib. (Merk: I mitt tilfelle var det add_paths - /usr/lib64/riak-cs/).
Denne konfigurasjonen forutsetter at Riak CS er installert på samme maskin som Riak. Hvis ikke, må pakken kopieres til en egen vert.
Sette opp søskenskaping
Nå må vi sette allow_mult-parameteren til true. Vi kan legge til en linje i riak.conf-konfigurasjonsfilen, eller en riak_core-seksjon i advanced.config eller app.config.
RIAK.CONF
buckets.default.allow_mult = true
AVANSERT.KONFIG
{riak_core, [
%% Other configs
{default_bucket_props, [{allow_mult, true}]},
%% Other configs
]}
APP.CONFIG
{riak_core, [
%% Other configs
{default_bucket_props, [{allow_mult, true}]},
%% Other configs
]}
Dette vil tillate Riak å lage søsken som er nødvendig for at Riak CS skal fungere. Hvis du kobler til Riak CS ved hjelp av klientbiblioteket, ikke bekymre deg: du trenger ikke å løse konflikter, siden alle Riak CS-operasjoner er strengt konsistente som definert.
Søsken er en måte å lagre flere objekter i én nøkkel slik at objektet har forskjellige verdier på forskjellige noder.
Merk: allow_mult
Enhver Riak-node som også støtter Riak CS vil ha allow_mult satt til sann til enhver tid. Riak CS vil tilbakestille lanseringen hvis verdien er falsk.
Stille inn vertsnavn og IP-adresse
Hver Riak-node har et navn, som kan spesifiseres i nodenavn-alternativet i riak.conf. Hvis du bruker konfigurasjonsfilen app.config, må du opprette en fil kalt vm.args i samme katalog som app.config og spesifisere vertsnavnet ved å bruke flagget -name. Vi anbefaler å spesifisere nodenavn i @-formatet. Og så hvis du har tre noder som kjører på én vert 100.0.0.1, kan du ringe dem [e-postbeskyttet], [e-postbeskyttet]Og [e-postbeskyttet] eller du kan gi mer spesifikke navn, som f.eks [e-postbeskyttet], [e-postbeskyttet] og så videre. Eksemplet nedenfor viser hvordan du endrer vertsnavnet til [e-postbeskyttet], som vil kjøre på localhost.
RIAK.CONF
nodename = [email protected]
VM.ARGS
-name [email protected]
Du må navngi alle noder før du starter dem opp og blir med i klyngen.
Oppsettstest
Nå som alle nødvendige nodeinnstillinger er fullført, kan vi prøve å starte Riak:
SHELL
riak start
Merk Svaret i mitt tilfelle:
Her må du vente litt. Deretter kan du begynne å teste den løpende noden.
SHELL
riak ping
Hvis svaret er pong, kjører Riak; hvis svaret er Node som ikke svarer på ping, så gikk noe galt.
Merk Svaret i mitt tilfelle:
Hvis noden ikke startet riktig, se på erlang.log.1-loggen i /log-katalogen til noden hvis problemet kan identifiseres. En av de vanligste feilene er invalid_storage_backend. Noe som indikerer at banen til Riak CS-biblioteket i advanced.config eller i app.config er feil (eller Riak CS er ikke installert på serveren). Til tross for denne feilen, sørg for at du ikke har endret fra riak_cs_kv_multi_backend til riak_kv_multi_backend.
Konfigurere Riak til å bruke protokollbuffere
Riak-protokollbufferinnstillingene er plassert i riak.conf eller i riak_api-delen i filene advanced.config eller app.config, som ligger i /etc/riak/-katalogen. Som standard har verten en IP-adresse på 127.0.0.1 og port 8087. Du må endre disse hvis du planlegger å kjøre Riak og Riak CS i et ikke-lokalt miljø. Erstatt 127.0.0.1 med Riak-vertens IP-adresse og port 8087 med en passende.
RIAK.CONF
listener.protobuf.internal = 10.0.2.10:10001
AVANSERT.KONF
{riak_api, [
%% Other configs
{pb, ["10.0.2.10", 10001]},
%% Other configs
]}
APP.CONFIG
riak_api, [
%% Other configs
{pb, ["10.0.2.10", 10001]},
%% Other configs
]}
Merk:Verdien til listener.protobuf.internal-parameteren i riak.conf (eller verdien av pb-parameteren i advanced.conf/app.config)-filen må samsvare med verdiene for riak_host i Riak CS riak-cs.config og Stanchion stanchion.conf (eller riak_host henholdsvis i avanserte .config/app.config)-filer.
En merknad om portnummeret
Et annet portnummer kan være nødvendig hvis porten er i konflikt med porter som brukes av et annet program, eller hvis du bruker en lastbalanser eller proxy-server.
Det anbefales også at brukere sørger for at Riak protobuf.backlog-størrelsen (eller i advanced.config/app.config-filer er dette pb_backlog) er lik eller større enn pool.request.size spesifisert for Riak CS i riak-cs. config (eller request_pool_size i advanced.config/ app.conf-filer).
Dersom verdien av pool.request.size i Riak CS er endret, så må verdien av protobuf.backlog også oppdateres i Riak.
Andre Riak-innstillinger
Filene riak.conf og advanced.config inkluderer andre innstillinger som konfigurerer opprettelsen av loggfiler og hvor de lagres. Disse innstillingene har standardverdier og bør fungere i de fleste tilfeller. For mer informasjon anbefaler vi å lese vår dokumentasjon om konfigurasjonsfiler.
Sette opp en IP-adresse for Riak
Når du setter opp en IP-adresse for Riak, må du være sikker på at Riak-nodene har en unik IP-adresse, enten du jobber med kun én node eller legger til flere noder i systemet. Riak IP-adressen finnes i riak.conf eller - hvis du bruker app.config-filen - i vm.args-konfigurasjonsfilen, som ligger der i /etc/riak-katalogen (eller /opt/riak/etc/ på andre operativsystemer).
Til å begynne med peker linjen som inneholder Riak IP-adressen til den lokale verten på dette stedet:
RIAK.CONF
nodename = [email protected]
VM.ARGS
-name [email protected]
Erstatt 127.0.0.1 med din foretrukne IP-adresse eller vertsnavn til Riak-noden.
Innstillinger for ytelse og båndbredde
Av ytelsesgrunner anbefaler vi på det sterkeste å legge til verdier til Riak-konfigurasjonsfilene riak.conf eller vm.args, som ligger i katalogen /etc/riak/ eller /opt/riak/etc.
RIAK.CONF
erlang.max_ports = 65536
VM.ARGS
## This setting should already be present for recent Riak installs.
-env ERL_MAX_PORTS 65536
Deaktiverer JavaScript MapReduce
Det anbefales å ikke bruke eldre JavaScript MapReduce med noen versjoner av Riak CS. Av ytelsesgrunner bør du deaktivere den virtuelle maskinen som utfører JavaScript MapReduce-operasjoner ved å angi i riak.conf-konfigurasjonsfilen, eller i riak_kv-delen av advanced.conf eller app.config:
RIAK.CONF
javascript.map_pool_size = 0
javascript.reduce_pool_size = 0
javascript.hook_pool_size = 0
AVANSERT.KONFIG
{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
]}
Deretter må vi konfigurere de resterende komponentene i Riak CS-systemet.
Kilde: www.habr.com