Riak CS (Cloud Storage) – հեշտ օգտագործման ծրագրակազմ՝ Riak KV-ի վերևում աշխատող օբյեկտների պահեստավորման կազմակերպման համար: Riak-ը (KV) բաշխված NoSQL բանալի-արժեքի տվյալների բազա է: Riak CS-ը նախագծված է ապահովելու ցանկացած մասշտաբի ամպային պահեստի պարզություն, մատչելիություն, բաշխում և կարող է օգտագործվել ամպային ճարտարապետություններ կառուցելու համար՝ ինչպես հանրային, այնպես էլ մասնավոր, կամ որպես ենթակառուցվածքային պահեստ՝ բարձր բեռնված հավելվածների և ծառայությունների համար: Riak CS API-ն համատեղելի է Amazon S3-ի հետ և աջակցում է տարբեր իրավիճակների վերաբերյալ հաշվետվություններ ստանալու հնարավորությանը:
Այս հոդվածը 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-ը, մյուս կողմից, պետք է տեղադրվի ամբողջ կլաստերի միայն մեկ հանգույցի վրա:
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
Նշում Պատասխանը իմ դեպքում.
Այստեղ դուք պետք է մի փոքր սպասեք: Այնուհետև կարող եք սկսել փորձարկել գործող հանգույցը:
SHELL
riak ping
Եթե պատասխանը pong է, ապա Riak-ը վազում է, եթե պատասխանն այն է, որ Node-ը չի արձագանքում պինգերին, ապա ինչ-որ բան սխալ է տեղի ունեցել:
Նշում Պատասխանը իմ դեպքում.
Եթե հանգույցը ճիշտ չի սկսվել, նայեք 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