Riak Cloud Storage. Del 1: Sette opp Riak KV

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.

Riak Cloud Storage. Del 1: Sette opp Riak KV
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.

Riak Cloud Storage. Del 1: Sette opp Riak KV

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:

Riak Cloud Storage. Del 1: Sette opp Riak KV

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:

Riak Cloud Storage. Del 1: Sette opp Riak KV

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.

Original manual.

Kilde: www.habr.com

Legg til en kommentar