Riak Cloud Storage. Մաս 1. Riak KV-ի կարգավորում

Riak CS (Cloud Storage) – հեշտ օգտագործման ծրագրակազմ՝ Riak KV-ի վերևում աշխատող օբյեկտների պահեստավորման կազմակերպման համար: Riak-ը (KV) բաշխված NoSQL բանալի-արժեքի տվյալների բազա է: Riak CS-ը նախագծված է ապահովելու ցանկացած մասշտաբի ամպային պահեստի պարզություն, մատչելիություն, բաշխում և կարող է օգտագործվել ամպային ճարտարապետություններ կառուցելու համար՝ ինչպես հանրային, այնպես էլ մասնավոր, կամ որպես ենթակառուցվածքային պահեստ՝ բարձր բեռնված հավելվածների և ծառայությունների համար: Riak CS API-ն համատեղելի է Amazon S3-ի հետ և աջակցում է տարբեր իրավիճակների վերաբերյալ հաշվետվություններ ստանալու հնարավորությանը:

Riak Cloud Storage. Մաս 1. Riak KV-ի կարգավորում
Այս հոդվածը Riak CS համակարգի 2.1.1 տարբերակի պաշտոնական ձեռնարկի անվճար թարգմանությունն է

Riak CS պահեստավորման համակարգում երեք բաղադրիչ աշխատում են միմյանց հետ, ինչը նշանակում է, որ յուրաքանչյուր բաղադրիչ պետք է կազմաձևվի մյուս բաղադրիչների հետ աշխատելու համար.

  • Ռիակ (KV) – տվյալների բազայի համակարգ, որը հանդես է գալիս որպես վերջնական համակարգ:
  • Riak CS - Ամպային պահեստավորման շերտ Riak-ի վերևում, որն ապահովում է պահեստավորման և API-ի հնարավորություններ, պահում է ֆայլերը և մետատվյալները Riak-ում և այնուհետև դրանք բաշխում վերջնական օգտագործողներին:
  • Ստանչիոն - Կառավարում է հարցումները, որոնք ներառում են գլոբալ եզակի կազմակերպություններ, ինչպիսիք են դույլերը և օգտատերերը Riak օրինակում: Օրինակ՝ օգտվողներ ստեղծելը, դույլեր ստեղծելը կամ ջնջելը:

Բացի այդ, դուք կարող եք նաև կարգավորել S3 հաճախորդը Riak CS համակարգով հաղորդագրություններ ուղարկելու համար օգտագործելու համար:

Դուք պետք է պլանավորեք ունենալ մեկ Riak հանգույց ձեր համակարգի յուրաքանչյուր Riak CS հանգույցի համար: Riak և Riak CS հանգույցները կարող են գործարկվել տարբեր ֆիզիկական մեքենաների վրա, բայց շատ դեպքերում նախընտրելի է գործարկել մեկ Riak հանգույց և մեկ Riak CS հանգույց նույն ֆիզիկական մեքենայի վրա: Ենթադրելով, որ մեկ ֆիզիկական մեքենա ունի բավարար հզորություն՝ բավարարելու և՛ Riak, և՛ Riak CS հանգույցների կարիքները, դուք ընդհանուր առմամբ ավելի լավ կատարում կտեսնեք ցանցի հետաձգման կրճատման պատճառով:

Եթե ​​ձեր համակարգը բաղկացած է մի քանի հանգույցներից, ապա կոնֆիգուրացիան հիմնականում կապված է բաղադրիչների միջև հաղորդակցության հաստատման հետ: Մյուս կարգավորումները, օրինակ՝ որտեղ կպահվեն մատյան ֆայլերը, ունեն լռելյայն արժեքներ և պետք է փոխվեն միայն այն դեպքում, եթե ցանկանում եք օգտագործել ոչ ստանդարտ արժեքներ:

Համակարգի բաղադրիչների կարգավորում: Riak KV-ի կարգավորում CS-ի համար

Քանի որ Riak CS-ը Riak-ի վրա կառուցված հավելված է, Riak CS-ն գործարկելիս շատ կարևոր է ուշադրություն դարձնել ձեր Riak կոնֆիգուրացիայի վրա: Այս փաստաթուղթը և՛ Riak-ի կազմաձևման ուղեցույց է, և՛ տեղեկատու փաստաթուղթ, որը նկարագրում է կազմաձևման կարևոր պարամետրերը:

Նախքան կարգավորումը, համոզվեք, որ Riak KV-ն և Riak CS-ը տեղադրված են ձեր կլաստերի յուրաքանչյուր հանգույցում: Stanchion-ը, մյուս կողմից, պետք է տեղադրվի ամբողջ կլաստերի միայն մեկ հանգույցի վրա:

Riak Cloud Storage. Մաս 1. Riak KV-ի կարգավորում

Backends Riak CS-ի համար

Riak-ի կողմից օգտագործվող լռելյայն backend-ը Bitcask-ն է, սակայն Riak CS փաթեթը ներառում է հատուկ backend, որը պետք է օգտագործվի Riak կլաստերի կողմից, որը Riak CS համակարգի մաս է կազմում: Սովորական տարբերակն ունի ստանդարտ Multi backend, որը գալիս է Riak-ի հետ:

Նույն Riak դույլերը, որոնք օգտագործվում են Riak CS-ի ներսում, օգտագործում են երկրորդական ինդեքսներ, որոնք այժմ պահանջում են LevelDB backend: Riak CS համակարգի մյուս մասերը կարող են օգուտ քաղել Bticask backend-ի օգտագործումից: Multi backend-ի նմուշի օգտագործումը ներառված է Riak CS-ում, որպեսզի օգտվի այս երկու հետին պլաններից՝ կատարողականի և ֆունկցիոնալության լավագույն համակցության հասնելու համար: Հաջորդ բաժինը նկարագրում է, թե ինչպես ճիշտ կարգավորել Riak-ը այս Multi-backend-ն օգտագործելու համար:

Backend այն է, ինչ Riak-ը կօգտագործի տվյալների պահպանման համար: Riak KV-ն իր զինանոցում ունի մի քանի backends՝ Bitcask, LevelDB, Memory և Multi:

Բացի այդ, պահեստավորման հաշվարկման համակարգը օգտագործում է Riak MapReduse ֆայլերը դույլերի մեջ համախմբելու համար: Սա նշանակում է, որ դուք պետք է ասեք Riak-ի բոլոր հանգույցներին, թե որտեղ պետք է փնտրել պատրաստված Riak CS ֆայլերը՝ նախքան պահեստավորումը հաշվարկելը:

Մի քանի այլ պարամետրեր պետք է փոխվեն՝ Riak հանգույցը որպես Riak CS համակարգի մաս կազմաձևելու համար, ինչպես օրինակ՝ IP հասցեն և IP հասցեն և պորտը՝ Արձանագրությունների բուֆերների միջոցով հաղորդագրություններ ուղարկելու համար: Անհրաժեշտության դեպքում այլ կարգավորումները կարող են փոխվել: Հետևյալ բաժինները նկարագրում են, թե ինչպես կարգավորել Riak հանգույցը, որպեսզի այն գործի որպես Riak CS համակարգի մաս:

Riak backend-ի կարգավորում

Նախ, riak.conf կամ advanced.config/app.config կազմաձևման ֆայլերը խմբագրվում են: Այս ֆայլերը կարող են տեղակայվել /etc/riak կամ /opt/riak/etc գրացուցակներում: Լռելյայնորեն, Riak-ն օգտագործում է Bitcask backend-ը: Առաջին բանը, որ մենք պետք է անենք, փոխեք կազմաձևման ֆայլը՝ հեռացնելով հետևյալ տողը.

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

Հաջորդը, մենք պետք է ցուցադրենք Riak-ի համար RiakCS մոդուլների անհրաժեշտությունը և հանձնարարենք Riak-ին օգտագործել կազմաձևված հետնամասը, որն ապահովում է Riak CS-ը: Դրա համար մենք պետք է օգտագործենք advanced.config կամ app.config ֆայլը և ավելացնենք հետևյալ տարբերակները.

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

Շատ կարևոր է նշել, որ այս արժեքներից շատերը կախված կլինեն ձեր օպերացիոն համակարգին հատուկ գրացուցակի տատանումներից, ուստի հետևեք հրահանգներին համապատասխանաբար: Օրինակ, add_paths տարբերակը ենթադրում է, որ Riak CS-ը տեղադրված է /usr/lib/riak-cs-ում, մինչդեռ data_root տարբերակները ենթադրում են, որ Riak-ը տեղադրված է /var/lib-ում: (Նշում. իմ դեպքում դա add_paths-ն էր - /usr/lib64/riak-cs/):

Այս կոնֆիգուրացիան ենթադրում է, որ Riak CS-ը տեղադրված է նույն մեքենայի վրա, ինչ Riak-ը: Եթե ​​ոչ, ապա փաթեթը պետք է պատճենվի առանձին հոսթին:

Եղբայրների ստեղծման կարգավորում

Այժմ, մենք պետք է սահմանենք allow_mult պարամետրը true: Մենք կարող ենք տող ավելացնել riak.conf կոնֆիգուրացիայի ֆայլում կամ riak_core բաժին advanced.config կամ 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
]}

Սա Riak-ին թույլ կտա ստեղծել եղբայրներ և եղբայրներ, որոնք անհրաժեշտ են Riak CS-ի գործելու համար: Եթե ​​դուք միանում եք Riak CS-ին՝ օգտագործելով հաճախորդի գրադարանը, մի անհանգստացեք. դուք ստիպված չեք լինի լուծել կոնֆլիկտները, քանի որ Riak CS-ի բոլոր գործողությունները խիստ հետևողական են, ինչպես սահմանված է:

Եղբայր կամ եղբայր մի բանալիում բազմաթիվ օբյեկտներ պահելու միջոց է, որպեսզի օբյեկտը տարբեր արժեքներ ունենա տարբեր հանգույցների վրա:

Նշում. allow_mult
Riak-ի ցանկացած հանգույց, որը նաև աջակցում է Riak CS-ին, միշտ կունենա allow_mult-ի ճշմարիտ արժեքը: Riak CS-ը կվերակայի գործարկումը, եթե արժեքը կեղծ է:

Հոսթի անվան և IP հասցեի կարգավորում

Յուրաքանչյուր Riak հանգույց ունի անուն, որը կարելի է նշել riak.conf-ի nodename տարբերակում: Եթե ​​դուք օգտագործում եք app.config կազմաձևման ֆայլը, դուք պետք է ստեղծեք vm.args անունով ֆայլ նույն գրացուցակում, ինչ app.config-ը և նշեք հյուրընկալողի անունը՝ օգտագործելով -name դրոշակը: Խորհուրդ ենք տալիս նշել հանգույցների անունները @ ձևաչափով: Եվ այսպես, եթե ունեք երեք հանգույց, որն աշխատում է մեկ հոսթ 100.0.0.1-ի վրա, կարող եք զանգահարել նրանց [էլեկտրոնային փոստով պաշտպանված], [էլեկտրոնային փոստով պաշտպանված]Իսկ [էլեկտրոնային փոստով պաշտպանված] կամ կարող եք ավելի կոնկրետ անուններ տալ, օրինակ [էլեկտրոնային փոստով պաշտպանված], [էլեկտրոնային փոստով պաշտպանված] եւ այլն։ Ստորև բերված օրինակը ցույց է տալիս հյուրընկալողի անունը փոխելը [էլեկտրոնային փոստով պաշտպանված], որը կաշխատի localhost-ում:

RIAK.CONF

 nodename = [email protected] 

VM.ARGS

 -name [email protected]

Դուք պետք է անվանեք բոլոր հանգույցները՝ նախքան դրանք գործարկելը և կլաստերին միանալը:

Կարգավորման թեստ

Այժմ, երբ հանգույցի բոլոր անհրաժեշտ կարգավորումներն ավարտված են, մենք կարող ենք փորձել գործարկել Riak-ը.

SHELL

 riak start 

Նշում Պատասխանը իմ դեպքում.

Riak Cloud Storage. Մաս 1. Riak KV-ի կարգավորում

Այստեղ դուք պետք է մի փոքր սպասեք: Այնուհետև կարող եք սկսել փորձարկել գործող հանգույցը:

SHELL

 riak ping

Եթե ​​պատասխանը pong է, ապա Riak-ը վազում է, եթե պատասխանն այն է, որ Node-ը չի արձագանքում պինգերին, ապա ինչ-որ բան սխալ է տեղի ունեցել:

Նշում Պատասխանը իմ դեպքում.

Riak Cloud Storage. Մաս 1. Riak KV-ի կարգավորում

Եթե ​​հանգույցը ճիշտ չի սկսվել, նայեք erlang.log.1 գրանցամատյանը հանգույցի /log գրացուցակում, եթե խնդիրը հնարավոր է հայտնաբերել: Ամենատարածված սխալներից մեկը invalid_storage_backend-ն է: Ինչը ցույց է տալիս, որ advanced.config-ում կամ app.config-ում դեպի Riak CS գրադարան տանող ուղին սխալ է (կամ Riak CS-ը տեղադրված չէ սերվերում): Չնայած այս սխալին, համոզվեք, որ դուք riak_cs_kv_multi_backend-ից չեք փոխվել riak_kv_multi_backend-ի:

Riak-ի կոնֆիգուրացիա՝ պրոտոկոլային բուֆերներ օգտագործելու համար

Riak արձանագրության բուֆերային կարգավորումները գտնվում են riak.conf կամ riak_api բաժնում advanced.config կամ app.config ֆայլերում, որոնք գտնվում են /etc/riak/ գրացուցակում: Լռելյայնորեն, հոսթն ունի 127.0.0.1 IP հասցե և 8087 պորտ: Դուք պետք է փոխեք դրանք, եթե նախատեսում եք գործարկել Riak-ը և Riak CS-ը ոչ տեղական միջավայրում: Փոխարինեք 127.0.0.1-ը Riak հոսթի IP հասցեով և 8087 պորտը համապատասխանով:

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

Նշում:listener.protobuf.internal պարամետրի արժեքը riak.conf (կամ pb պարամետրի արժեքը advanced.conf/app.config) ֆայլում պետք է համապատասխանի riak_host-ի արժեքներին Riak CS riak-cs.config-ում և Stanchion stanchion.conf (կամ riak_host համապատասխանաբար առաջադեմ .config/app.config) ֆայլերում:

Նշում նավահանգստի համարի մասին
Կարող է պահանջվել մեկ այլ պորտի համար, եթե նավահանգիստը հակասում է մեկ այլ հավելվածի կողմից օգտագործվող նավահանգիստներին, կամ եթե դուք օգտագործում եք բեռի հավասարակշռող կամ պրոքսի սերվեր:

Առաջարկվում է նաև, որ օգտատերերը համոզվեն, որ Riak protobuf.backlog չափը (կամ advanced.config/app.config ֆայլերում սա pb_backlog է) հավասար կամ ավելի մեծ է, քան riak-cs-ում Riak CS-ի համար սահմանված pool.request.size-ը: config (կամ request_pool_size advanced.config/ app.conf ֆայլերում):

Եթե ​​Riak CS-ում pool.request.size-ի արժեքը փոխվել է, ապա protobuf.backlog-ի արժեքը նույնպես պետք է թարմացվի Riak-ում:

Riak-ի այլ կարգավորումներ

Riak.conf և advanced.config ֆայլերը ներառում են այլ կարգավորումներ, որոնք կարգավորում են գրանցամատյանների ֆայլերի ստեղծումը և դրանց պահպանման վայրը: Այս կարգավորումներն ունեն լռելյայն արժեքներ և շատ դեպքերում պետք է աշխատեն: Լրացուցիչ տեղեկությունների համար խորհուրդ ենք տալիս կարդալ կազմաձևման ֆայլերի վերաբերյալ մեր փաստաթղթերը:

Riak-ի համար IP հասցեի կարգավորում

Riak-ի համար IP հասցե ստեղծելիս դուք պետք է վստահ լինեք, որ Riak հանգույցներն ունեն յուրահատուկ IP հասցե՝ անկախ նրանից՝ աշխատում եք ընդամենը մեկ հանգույցի հետ, թե ավելացնում եք համակարգին ավելի շատ հանգույցներ: Riak IP հասցեն պարունակվում է riak.conf կամ - եթե օգտագործում եք app.config ֆայլը - vm.args կազմաձևման ֆայլում, որը գտնվում է այնտեղ /etc/riak գրացուցակում (կամ /opt/riak/etc/): այլ օպերացիոն համակարգերի վրա):

Սկզբում Riak IP հասցեն պարունակող գիծը մատնանշում է այս վայրում գտնվող լոկալհոստը.

RIAK.CONF

 nodename = [email protected]

VM.ARGS

 -name [email protected]

Փոխարինեք 127.0.0.1-ը ձեր նախընտրած IP հասցեով կամ Riak հանգույցի հյուրընկալողի անունով:

Կատարման և թողունակության կարգավորումներ

Կատարման նկատառումներից ելնելով, մենք խստորեն խորհուրդ ենք տալիս արժեքներ ավելացնել Riak կազմաձևման ֆայլերին riak.conf կամ vm.args, որոնք գտնվում են /etc/riak/ կամ /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

JavaScript MapReduce-ի անջատում

Խորհուրդ է տրվում չօգտագործել հին JavaScript MapReduce-ը Riak CS-ի որևէ տարբերակի հետ: Արդյունավետության նկատառումներից ելնելով, դուք պետք է անջատեք JavaScript MapReduce գործողություններ կատարող վիրտուալ մեքենան՝ սահմանելով riak.conf կազմաձևման ֆայլում կամ advanced.conf-ի կամ app.config-ի riak_kv բաժնում.

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

Հաջորդը մենք պետք է կարգավորենք Riak CS համակարգի մնացած բաղադրիչները:

Բնօրինակ ձեռնարկ.

Source: www.habr.com

Добавить комментарий