Riak Cloud Storage. Bahagi 1: Pagse-set up ng Riak KV

Riak CS (Cloud Storage) – madaling gamitin na software para sa pag-aayos ng imbakan ng bagay, na tumatakbo sa ibabaw ng Riak KV. Ang Riak (KV) ay isang distributed NoSQL key-value database. Ang Riak CS ay idinisenyo upang magbigay ng pagiging simple, kakayahang magamit, pamamahagi ng cloud storage sa anumang sukat, at maaaring gamitin upang bumuo ng mga cloud architecture - parehong pampubliko at pribado - o bilang imprastraktura na imbakan para sa mataas na load na mga application at serbisyo. Ang Riak CS API ay katugma sa Amazon S3 at sinusuportahan ang kakayahang makatanggap ng mga ulat sa iba't ibang sitwasyon.

Riak Cloud Storage. Bahagi 1: Pagse-set up ng Riak KV
Ang artikulong ito ay isang libreng pagsasalin ng opisyal na manwal para sa Riak CS system na bersyon 2.1.1

Sa sistema ng imbakan ng Riak CS, tatlong bahagi ang gumagana kasabay ng isa't isa, na nangangahulugan na ang bawat bahagi ay dapat na i-configure upang gumana sa iba pang mga bahagi:

  • Riak (KV) – isang database system na nagsisilbing end system.
  • Riak CS - Isang layer ng cloud storage sa itaas ng Riak na nagbibigay ng storage at mga kakayahan ng API, nag-iimbak ng mga file at metadata sa Riak, at pagkatapos ay ipinamamahagi ang mga ito sa mga end user.
  • Stanchion - Namamahala sa mga query na kinasasangkutan ng mga natatanging entity sa buong mundo tulad ng mga bucket at user sa Riak instance. Halimbawa, ang paggawa ng mga user, paggawa o pagtanggal ng mga bucket.

Bukod pa rito, maaari mo ring i-configure ang S3 client para magamit sa pagmemensahe gamit ang Riak CS system.

Dapat mong planuhin na magkaroon ng isang Riak node para sa bawat Riak CS node sa iyong system. Maaaring patakbuhin ang mga node ng Riak at Riak CS sa magkaibang pisikal na makina, ngunit sa karamihan ng mga kaso, mas mainam na magpatakbo ng isang Riak node at isang Riak CS node sa parehong pisikal na makina. Ipagpalagay na ang isang pisikal na makina ay may sapat na kapangyarihan upang matugunan ang mga pangangailangan ng parehong Riak at Riak CS node, sa pangkalahatan ay makikita mo ang mas mahusay na pagganap dahil sa pinababang network latency.

Kung ang iyong system ay binubuo ng ilang mga node, ang configuration ay pangunahing tungkol sa pagse-set up ng komunikasyon sa pagitan ng mga bahagi. Ang iba pang mga setting, tulad ng kung saan iimbak ang mga log file, ay may mga default na halaga at kailangan lang baguhin kung gusto mong gumamit ng mga hindi karaniwang halaga.

Pag-set up ng mga bahagi ng system. Pag-set up ng Riak KV para sa CS

Dahil ang Riak CS ay isang application na binuo sa ibabaw ng Riak, napakahalagang bigyang-pansin ang iyong configuration ng Riak kapag nagpapatakbo ng Riak CS. Ang dokumentong ito ay parehong gabay sa pagsasaayos ng Riak at isang sangguniang dokumento na naglalarawan ng mahahalagang parameter ng pagsasaayos.

Bago mag-set up, tiyaking naka-install ang Riak KV at Riak CS sa bawat node sa iyong cluster. Ang stanchion, sa kabilang banda, ay dapat lamang na mai-install sa isang node sa buong cluster.

Riak Cloud Storage. Bahagi 1: Pagse-set up ng Riak KV

Mga backend para sa Riak CS

Ang default na backend na ginagamit ng Riak ay Bitcask, ngunit ang Riak CS package ay may kasamang espesyal na backend na dapat gamitin ng Riak cluster na bahagi ng Riak CS system. Ang regular na bersyon ay may karaniwang Multi backend na kasama ng Riak.

Ang parehong mga Riak bucket na ginamit sa loob ng Riak CS ay gumagamit ng mga pangalawang index, na ngayon ay nangangailangan ng isang LevelDB backend. Ang ibang bahagi ng Riak CS system ay maaaring makinabang mula sa paggamit ng Bticask backend. Ang paggamit ng sample na Multi backend ay kasama sa Riak CS para samantalahin ang parehong mga backend na ito para makuha ang pinakamagandang kumbinasyon ng performance at functionality. Ang susunod na seksyon ay naglalarawan kung paano maayos na i-configure ang Riak upang gamitin ang Multi-backend na ito.

Backend ang gagamitin ni Riak para mag-save ng data. Ang Riak KV ay may ilang mga backend sa arsenal nito: Bitcask, LevelDB, Memory at Multi.

Bilang karagdagan, ang sistema ng pagkalkula ng imbakan ay gumagamit ng Riak MapReduse upang pagsama-samahin ang mga file sa mga bucket. Nangangahulugan ito na dapat mong sabihin sa lahat ng Riak node kung saan hahanapin ang mga inihandang Riak CS file bago mag-compute ng storage.

Maraming iba pang mga parameter ang dapat baguhin upang i-configure ang Riak node bilang bahagi ng Riak CS system, tulad ng IP address at IP address at port para sa pagmemensahe sa pamamagitan ng Protocol Buffers. Maaaring baguhin ang iba pang mga setting kung kinakailangan. Ang mga sumusunod na seksyon ay naglalarawan kung paano i-configure ang isang Riak node upang gumana bilang bahagi ng Riak CS system.

Pagse-set up ng Riak backend

Una, ang mga file ng pagsasaayos ng riak.conf o advanced.config/app.config ay na-edit. Ang mga file na ito ay matatagpuan sa /etc/riak o /opt/riak/etc na mga direktoryo. Bilang default, ginagamit ni Riak ang Bitcask backend. Ang unang bagay na kailangan nating gawin ay baguhin ang configuration file sa pamamagitan ng pag-alis ng sumusunod na linya:

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

Susunod, kailangan nating ipakita ang pangangailangan para sa RiakCS modules para sa Riak at turuan si Riak na gamitin ang naka-configure na backend na nagbibigay ng Riak CS. Kailangan naming gamitin ang advanced.config o app.config file para dito at idagdag ang mga sumusunod na opsyon:

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

Napakahalagang tandaan na marami sa mga halagang ito ay depende sa mga pagkakaiba-iba ng direktoryo na partikular sa iyong operating system, kaya sundin ang mga tagubilin nang naaayon. Halimbawa, ipinapalagay ng opsyon na add_paths na naka-install ang Riak CS sa /usr/lib/riak-cs, habang ipinapalagay ng mga opsyon sa data_root na naka-install ang Riak sa /var/lib. (Tandaan: Sa aking kaso ito ay add_paths - /usr/lib64/riak-cs/).

Ipinapalagay ng configuration na ito na ang Riak CS ay naka-install sa parehong makina bilang Riak. Kung hindi, kailangang kopyahin ang package sa isang hiwalay na host.

Pag-set up ng paglikha ng magkakapatid

Ngayon, kailangan nating itakda ang allow_mult na parameter sa true. Maaari kaming magdagdag ng linya sa configuration file ng riak.conf, o seksyon ng riak_core sa advanced.config o 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
]}

Papayagan nito si Riak na lumikha ng mga kapatid na kinakailangan para gumana ang Riak CS. Kung kumonekta ka sa Riak CS gamit ang client library, huwag mag-alala: hindi mo na kailangang lutasin ang mga salungatan, dahil ang lahat ng operasyon ng Riak CS ay mahigpit na pare-pareho gaya ng tinukoy.

Kapatid ay isang paraan ng pag-iimbak ng maramihang mga bagay sa isang susi upang ang bagay ay may iba't ibang mga halaga sa iba't ibang mga node.

Tandaan: allow_mult
Anumang Riak node na sumusuporta rin sa Riak CS ay magkakaroon ng allow_mult na nakatakda sa true sa lahat ng oras. Ire-reset ng Riak CS ang paglulunsad kung mali ang value.

Pagtatakda ng Hostname at IP Address

Ang bawat Riak node ay may pangalan, na maaaring tukuyin sa opsyon ng nodename sa riak.conf. Kung gumagamit ka ng app.config configuration file, kailangan mong gumawa ng file na tinatawag na vm.args sa parehong direktoryo ng app.config at tukuyin ang host name gamit ang -name flag. Inirerekomenda namin ang pagtukoy ng mga pangalan ng node sa format na @. At kaya kung mayroon kang tatlong node na tumatakbo sa isang host 100.0.0.1, maaari mong tawagan ang mga ito [protektado ng email], [protektado ng email]At [protektado ng email] o maaari kang magbigay ng mas tiyak na mga pangalan, gaya ng [protektado ng email], [protektado ng email] at iba pa. Ang halimbawa sa ibaba ay nagpapakita ng pagpapalit ng pangalan ng host sa [protektado ng email], na tatakbo sa localhost.

RIAK.CONF

 nodename = [email protected] 

VM.ARGS

 -name [email protected]

Dapat mong pangalanan ang lahat ng mga node bago simulan ang mga ito at sumali sa cluster.

Pagsusulit sa pag-setup

Ngayon na ang lahat ng kinakailangang mga setting ng node ay nakumpleto na, maaari naming subukang ilunsad ang Riak:

KABIBI

 riak start 

Tandaan Ang sagot sa aking kaso:

Riak Cloud Storage. Bahagi 1: Pagse-set up ng Riak KV

Dito kailangan mong maghintay ng kaunti. Pagkatapos ay maaari mong simulan ang pagsubok sa tumatakbong node.

KABIBI

 riak ping

Kung pong ang tugon, tumatakbo si Riak; kung ang tugon ay hindi tumutugon si Node sa mga ping, may nangyaring mali.

Tandaan Ang sagot sa aking kaso:

Riak Cloud Storage. Bahagi 1: Pagse-set up ng Riak KV

Kung ang node ay hindi nagsimula nang tama, tingnan ang erlang.log.1 log sa /log na direktoryo ng node kung ang problema ay makikilala. Ang isa sa mga pinakakaraniwang error ay invalid_storage_backend. Na nagpapahiwatig na ang path sa Riak CS library sa advanced.config o sa app.config ay hindi tama (o Riak CS ay hindi naka-install sa server). Sa kabila ng error na ito, tiyaking hindi ka nagbago mula riak_cs_kv_multi_backend patungo sa riak_kv_multi_backend.

Pag-configure ng Riak upang gumamit ng mga buffer ng protocol

Ang mga setting ng buffer ng Riak protocol ay matatagpuan sa riak.conf o sa seksyong riak_api sa advanced.config o app.config na mga file, na matatagpuan sa /etc/riak/ directory. Bilang default, ang host ay may IP address na 127.0.0.1 at port 8087. Kakailanganin mong baguhin ang mga ito kung plano mong patakbuhin ang Riak at Riak CS sa isang hindi lokal na kapaligiran. Palitan ang 127.0.0.1 ng Riak host IP address at port 8087 ng angkop.

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

Tandaan:Ang value ng listener.protobuf.internal na parameter sa riak.conf (o ang value ng pb parameter sa advanced.conf/app.config) na file ay dapat tumugma sa mga value para sa riak_host sa Riak CS riak-cs.config at Stanchion stanchion.conf (o riak_host ayon sa pagkakabanggit sa mga advanced na .config/app.config) na file.

Isang tala tungkol sa numero ng port
Maaaring kailanganin ang ibang numero ng port kung sumasalungat ang port sa mga port na ginagamit ng ibang application o kung gumagamit ka ng load balancer o proxy server.

Inirerekomenda rin na tiyakin ng mga user na ang laki ng Riak protobuf.backlog (o sa mga advanced.config/app.config file ito ay pb_backlog) ay katumbas o mas malaki kaysa sa pool.request.size na tinukoy para sa Riak CS sa riak-cs. config (o request_pool_size sa advanced.config/ app.conf file).

Kung nabago ang halaga ng pool.request.size sa Riak CS, dapat ding i-update ang value ng protobuf.backlog sa Riak.

Iba pang mga setting ng Riak

Kasama sa riak.conf at advanced.config na mga file ang iba pang mga setting na nagko-configure sa paggawa ng mga log file at kung saan naka-save ang mga ito. Ang mga setting na ito ay may mga default na halaga at dapat gumana sa karamihan ng mga kaso. Para sa higit pang impormasyon, inirerekomenda naming basahin ang aming dokumentasyon tungkol sa mga configuration file.

Pag-set up ng IP address para kay Riak

Kapag nagse-set up ng isang IP address para sa Riak, dapat mong tiyakin na ang mga Riak node ay may natatanging IP address, kung ikaw ay nagtatrabaho sa isang node lamang o nagdaragdag ng higit pang mga node sa system. Ang Riak IP address ay nasa riak.conf o - kung ginagamit mo ang app.config file - sa vm.args configuration file, na matatagpuan doon sa /etc/riak directory (o /opt/riak/etc/ sa iba pang mga operating system).

Sa una, ang linya na naglalaman ng Riak IP address ay tumuturo sa localhost sa lokasyong ito:

RIAK.CONF

 nodename = [email protected]

VM.ARGS

 -name [email protected]

Palitan ang 127.0.0.1 ng iyong gustong IP address o hostname ng Riak node.

Mga Setting ng Pagganap at Bandwidth

Para sa mga kadahilanan ng pagganap, lubos naming inirerekomenda ang pagdaragdag ng mga halaga sa mga file ng pagsasaayos ng Riak na riak.conf o vm.args, na matatagpuan sa direktoryo ng /etc/riak/ o /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

Hindi pagpapagana ng JavaScript MapReduce

Inirerekomenda na huwag gumamit ng legacy na JavaScript MapReduce sa anumang bersyon ng Riak CS. Para sa mga dahilan ng pagganap, dapat mong i-disable ang virtual machine na gumaganap ng mga pagpapatakbo ng JavaScript MapReduce sa pamamagitan ng pagtatakda sa riak.conf configuration file, o sa riak_kv section ng advanced.conf o 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
]}

Susunod na kailangan nating i-configure ang natitirang bahagi ng Riak CS system.

Orihinal na manwal.

Pinagmulan: www.habr.com

Magdagdag ng komento