Riak Cloud Storage. Parto 1: Instalado de Riak KV

Riak CS (Nuba Stokado) – facile uzebla programaro por organizi objektostokadon, funkcianta sur Riak KV. Riak (KV) estas distribuita NoSQL-ŝlosilvalora datumbazo. Riak CS estas desegnita por disponigi simplecon, haveblecon, distribuadon de nuba stokado de ajna skalo, kaj povas esti uzata por konstrui nubajn arkitekturojn - kaj publikajn kaj privatajn - aŭ kiel infrastrukturan stokadon por tre ŝarĝitaj aplikoj kaj servoj. Riak CS API estas kongrua kun Amazon S3 kaj subtenas la kapablon ricevi raportojn pri diversaj situacioj.

Riak Cloud Storage. Parto 1: Instalado de Riak KV
Ĉi tiu artikolo estas libera traduko de la oficiala manlibro por la Riak CS-sistemo versio 2.1.1

En la stokadsistemo Riak CS, tri komponentoj funkcias kune kun unu la alian, kio signifas, ke ĉiu komponento devas esti agordita por labori kun la aliaj komponentoj:

  • Riak (KV) – datumbaza sistemo, kiu funkcias kiel finsistemo.
  • Riak CS - Nuba stokado tavolo sur Riak, kiu provizas stokadon kaj API-kapablojn, stokas dosierojn kaj metadatenojn en Riak, kaj poste distribuas ilin al finaj uzantoj.
  • Stanĉo - Administras demandojn implikantajn tutmonde unikajn entojn kiel sitelojn kaj uzantojn en la Riak-instanco. Ekzemple, kreante uzantojn, kreante aŭ forigante sitelojn.

Aldone, vi ankaŭ povas agordi la S3-klienton por uzo en mesaĝado kun la Riak CS-sistemo.

Vi devus plani havi unu Riak-nodon por ĉiu Riak CS-nodo en via sistemo. Riak kaj Riak CS-nodoj povas esti rulitaj sur malsamaj fizikaj maŝinoj, sed en la plej multaj kazoj estas preferinde ruli unu Riak-nodon kaj unu Riak CS-nodon sur la sama fizika maŝino. Supozante ke unu fizika maŝino havas sufiĉan potencon por kontentigi la bezonojn de ambaŭ Riak kaj Riak CS-nodoj, vi ĝenerale vidos pli bonan agadon pro reduktita reto-latenteco.

Se via sistemo konsistas el pluraj nodoj, agordo temas ĉefe pri starigo de komunikado inter komponantoj. Aliaj agordoj, kiel ekzemple kie la protokolaj dosieroj estos stokitaj, havas defaŭltajn valorojn kaj nur bezonas esti ŝanĝitaj se vi volas uzi ne-normajn valorojn.

Agordo de sistemaj komponantoj. Starigante Riak KV por CS

Ĉar Riak CS estas aplikaĵo konstruita sur Riak, estas tre grave atenti vian Riak-agordon kiam oni rulas Riak CS. Ĉi tiu dokumento estas kaj Riak-agorda gvidilo kaj referenca dokumento priskribanta gravajn agordajn parametrojn.

Antaŭ agordo, certigu, ke Riak KV kaj Riak CS estas instalitaj sur ĉiu nodo en via areto. Stanchion, aliflanke, devus esti instalita nur sur unu nodo en la tuta areto.

Riak Cloud Storage. Parto 1: Instalado de Riak KV

Backends por Riak CS

La defaŭlta backend uzita de Riak estas Bitcask, sed la Riak CS-pakaĵo inkluzivas specialan backend kiu devas esti uzata de la Riak-grupo kiu estas parto de la Riak CS-sistemo. La regula versio havas la norman Multi-backend kiu venas kun Riak.

La samaj Riak siteloj uzataj ene de Riak CS uzas malĉefajn indeksojn, kiuj nun postulas LevelDB-backend. Aliaj partoj de la Riak CS-sistemo povas profiti de uzado de la backend Bticask. La uzo de specimeno Multi backend estas inkluzivita en Riak CS por utiligi ambaŭ ĉi tiujn backends por atingi la plej bonan kombinaĵon de rendimento kaj funkcieco. La sekva sekcio priskribas kiel konvene agordi Riak por uzi ĉi tiun Multi-backend.

Backend estas kion Riak uzos por konservi datumojn. Riak KV havas plurajn backends en sia arsenalo: Bitcask, LevelDB, Memory kaj Multi.

Aldone, la stoka kalkulsistemo uzas Riak MapReduse por kunigi dosierojn en sitelojn. Ĉi tio signifas, ke vi devas diri al ĉiuj Riak-nodoj, kie serĉi pretajn Riak CS-dosierojn antaŭ ol komputi stokadon.

Pluraj aliaj parametroj devas esti ŝanĝitaj por agordi la Riak-nodon kiel parton de la Riak CS-sistemo, kiel ekzemple la IP-adreso kaj IP-adreso kaj haveno por mesaĝado per Protocol Buffers. Aliaj agordoj povas esti ŝanĝitaj se necese. La sekvaj sekcioj priskribas kiel agordi Riak-nodon por funkcii kiel parto de la Riak CS-sistemo.

Agordi Riak-backend

Unue, la agordaj dosieroj riak.conf aŭ advanced.config/app.config estas redaktitaj. Ĉi tiuj dosieroj povas troviĝi en dosierujoj /etc/riak aŭ /opt/riak/etc. Defaŭlte, Riak uzas la Backend de Bitcask. La unua afero, kiun ni devas fari, estas ŝanĝi la agordan dosieron forigante la sekvan linion:

RIAK.CONF

## Delete this line:
storage_backend = bitcask

ADVANCED.CONFIG

{riak_kv,
 [ %% Delete this line: 
{storage_backend, riak_kv_bitcask_backend},
 ]}

APP.CONFIG

{riak_kv, 
  [ %% Delete this line:
    {storage_backend, riak_kv_bitcask_backend},
]}

Poste, ni devas pruvi la bezonon de RiakCS-moduloj por Riak kaj instrukcii Riak uzi la agordita backend provizanta Riak CS. Ni devas uzi la advanced.config aŭ app.config dosieron por ĉi tio kaj aldoni la sekvajn opciojn:

ADVANCED.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
]}

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
]}

Estas tre grave noti, ke multaj el ĉi tiuj valoroj dependos de dosierujoj specifaj por via operaciumo, do sekvu la instrukciojn laŭe. Ekzemple, la opcio add_paths supozas, ke Riak CS estas instalita en /usr/lib/riak-cs, dum la opcioj data_root supozas, ke Riak estas instalita en /var/lib. (Noto: En mia kazo estis add_paths - /usr/lib64/riak-cs/).

Ĉi tiu agordo supozas, ke Riak CS estas instalita sur la sama maŝino kiel Riak. Se ne, tiam la pakaĵo devas esti kopiita al aparta gastiganto.

Agordi gefratan kreadon

Nun ni devas agordi la parametron allow_mult al vera. Ni povas aldoni linion en la agorda dosiero riak.conf, aŭ sekcion riak_core en advanced.config aŭ app.config.

RIAK.CONF

buckets.default.allow_mult = true

ADVANCED.CONFIG

{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
]}

Ĉi tio permesos al Riak krei gefratojn, kiuj estas necesaj por ke Riak CS funkciu. Se vi konektas al Riak CS uzante la klientan bibliotekon, ne maltrankviliĝu: vi ne devos solvi konfliktojn, ĉar ĉiuj operacioj de Riak CS estas strikte konsekvencaj kiel difinitaj.

Gefrato estas maniero stoki plurajn objektojn en unu ŝlosilo tiel ke la objekto havas malsamajn valorojn sur malsamaj nodoj.

Noto: allow_mult
Ĉiu Riak-nodo kiu ankaŭ subtenas Riak CS havos allow_mult agordita al vera ĉiam. Riak CS restarigos la lanĉon se la valoro estas falsa.

Agordi la Gastigan nomon kaj IP-adreson

Ĉiu Riak-nodo havas nomon, kiu povas esti specifita en la nodename-opcio en riak.conf. Se vi uzas la agordan dosieron app.config, vi devas krei dosieron nomatan vm.args en la sama dosierujo kiel app.config kaj specifi la gastigan nomon per la -name flago. Ni rekomendas specifi nodnomojn en la formato @. Kaj do se vi havas tri nodojn kurantajn sur unu gastiganto 100.0.0.1, vi povas voki ilin [retpoŝte protektita], [retpoŝte protektita]kaj [retpoŝte protektita] aŭ vi povas doni pli specifajn nomojn, kiel ekzemple [retpoŝte protektita], [retpoŝte protektita] kaj tiel plu. La malsupra ekzemplo montras ŝanĝi la gastigan nomon al [retpoŝte protektita], kiu funkcios sur localhost.

RIAK.CONF

 nodename = [email protected] 

VM.ARGS

 -name [email protected]

Vi devas nomi ĉiujn nodojn antaŭ ol komenci ilin kaj aliĝi al la areto.

Instala testo

Nun kiam ĉiuj necesaj nodaj agordoj estas finitaj, ni povas provi lanĉi Riak:

ŜELO

 riak start 

Notu La respondo en mia kazo:

Riak Cloud Storage. Parto 1: Instalado de Riak KV

Ĉi tie vi devas atendi iomete. Tiam vi povas komenci testi la kurantan nodon.

ŜELO

 riak ping

Se la respondo estas pong, tiam Riak funkcias; se la respondo estas Node ne respondanta al ping-oj, tiam io misfunkciis.

Notu La respondo en mia kazo:

Riak Cloud Storage. Parto 1: Instalado de Riak KV

Se la nodo ne ekis ĝuste, rigardu la protokolon erlang.log.1 en la dosierujo /log de la nodo se la problemo povas esti identigita. Unu el la plej oftaj eraroj estas invalid_storage_backend. Kio indikas, ke la vojo al la biblioteko Riak CS en advanced.config aŭ en app.config estas malĝusta (aŭ Riak CS ne estas instalita sur la servilo). Malgraŭ ĉi tiu eraro, certigu, ke vi ne ŝanĝiĝis de riak_cs_kv_multi_backend al riak_kv_multi_backend.

Agordante Riak por uzi protokolajn bufrojn

La Riak-protokola bufro-agordoj troviĝas en riak.conf aŭ en la sekcio riak_api en la advanced.config aŭ app.config dosieroj, kiuj troviĝas en la dosierujo /etc/riak/. Defaŭlte, la gastiganto havas IP-adreson 127.0.0.1 kaj havenon 8087. Vi devos ŝanĝi ĉi tiujn se vi planas ruli Riak kaj Riak CS en ne-loka medio. Anstataŭigu 127.0.0.1 per la Riak-gastiganto IP-adreso kaj haveno 8087 per taŭga.

RIAK.CONF

 listener.protobuf.internal = 10.0.2.10:10001

ADVANCED.CONF

{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
]}

Notu:La valoro de la parametro listener.protobuf.internal en la riak.conf (aŭ la valoro de la parametro pb en advanced.conf/app.config) dosiero devas kongrui kun la valoroj por riak_host en Riak CS riak-cs.config kaj Stanchion stanchion.conf (aŭ riak_host respektive en altnivelaj .config/app.config) dosieroj.

Noto pri la havena numero
Eble necesas malsama haveno-numero se la haveno konfliktas kun havenoj uzataj de alia aplikaĵo aŭ se vi uzas ŝarĝan ekvilibron aŭ prokuran servilon.

Ankaŭ rekomendas, ke uzantoj certigu, ke la grandeco de Riak protobuf.backlog (aŭ en advanced.config/app.config dosieroj tio estas pb_backlog) estas egala aŭ pli granda ol la pool.request.size specifita por Riak CS en riak-cs. config (aŭ request_pool_size en advanced.config/ app.conf dosieroj).

Se la valoro de pool.request.size en Riak CS estis ŝanĝita, tiam la valoro de protobuf.backlog ankaŭ devas esti ĝisdatigita en Riak.

Aliaj Riak-agordoj

La dosieroj riak.conf kaj advanced.config inkluzivas aliajn agordojn, kiuj agordas la kreadon de protokolaj dosieroj kaj kie ili estas konservitaj. Ĉi tiuj agordoj havas defaŭltajn valorojn kaj devus funkcii en la plej multaj kazoj. Por pliaj informoj, ni rekomendas legi nian dokumentaron pri agordaj dosieroj.

Agordante IP-adreson por Riak

Kiam vi agordas IP-adreson por Riak, vi devas esti certa, ke la Riak-nodoj havas unikan IP-adreson, ĉu vi laboras kun nur unu nodo aŭ aldonas pli da nodoj al la sistemo. La Riak-IP-adreso estas enhavita en riak.conf aŭ - se vi uzas la app.config dosieron - en la agorda dosiero vm.args, kiu troviĝas tie en la dosierujo /etc/riak (aŭ /opt/riak/etc/). sur aliaj operaciumoj).

Komence, la linio enhavanta la Riak-IP-adreson montras al la loka gastiganto ĉe ĉi tiu loko:

RIAK.CONF

 nodename = [email protected]

VM.ARGS

 -name [email protected]

Anstataŭigu 127.0.0.1 per via preferata IP-adreso aŭ gastiga nomo de la Riak-nodo.

Agordoj de rendimento kaj bandolarĝo

Pro agado-kialoj, ni forte rekomendas aldoni valorojn al la agordaj dosieroj de Riak riak.conf aŭ vm.args, situantaj en la dosierujo /etc/riak/ aŭ /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

Malŝalti JavaScript MapReduce

Oni rekomendas ne uzi heredan JavaScript MapReduce kun ajna versio de Riak CS. Pro agado-kialoj, vi devus malŝalti la virtualan maŝinon plenumantan JavaScript MapReduce-operaciojn per agordo en la agorda dosiero riak.conf aŭ en la sekcio riak_kv de advanced.conf aŭ 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
]}

Poste ni devas agordi la ceterajn komponantojn de la Riak CS-sistemo.

Originala manlibro.

fonto: www.habr.com

Aldoni komenton