Riak bulutli saqlash. 1-qism: Riak KV-ni sozlash

Riak CS (bulutli saqlash) – Riak KV tepasida ishlaydigan obyektni saqlashni tashkil qilish uchun ishlatish uchun qulay dastur. Riak (KV) - taqsimlangan NoSQL kalit-qiymat ma'lumotlar bazasi. Riak CS har qanday miqyosdagi bulutli saqlashning soddaligi, mavjudligi, taqsimlanishini ta'minlash uchun mo'ljallangan va bulutli arxitekturalarni - ham davlat, ham xususiy - yaratish uchun yoki yuqori yuklangan ilovalar va xizmatlar uchun infratuzilmani saqlash uchun ishlatilishi mumkin. Riak CS API Amazon S3 bilan mos keladi va turli vaziyatlar bo'yicha hisobotlarni qabul qilish imkoniyatini qo'llab-quvvatlaydi.

Riak bulutli saqlash. 1-qism: Riak KV-ni sozlash
Ushbu maqola Riak CS tizimining 2.1.1 versiyasi uchun rasmiy qo'llanmaning bepul tarjimasidir

Riak CS saqlash tizimida uchta komponent bir-biri bilan birgalikda ishlaydi, ya'ni har bir komponent boshqa komponentlar bilan ishlash uchun sozlanishi kerak:

  • Riak (KV) - yakuniy tizim sifatida ishlaydigan ma'lumotlar bazasi tizimi.
  • Riak CS - Riak ustidagi bulutli saqlash qatlami, u saqlash va API imkoniyatlarini ta'minlaydi, Riak-da fayllar va metama'lumotlarni saqlaydi va keyin ularni oxirgi foydalanuvchilarga tarqatadi.
  • Stochion - Riak misolida chelaklar va foydalanuvchilar kabi global noyob ob'ektlarni o'z ichiga olgan so'rovlarni boshqaradi. Masalan, foydalanuvchilarni yaratish, chelaklarni yaratish yoki o'chirish.

Bundan tashqari, siz Riak CS tizimi bilan xabar almashishda foydalanish uchun S3 mijozini ham sozlashingiz mumkin.

Tizimingizda har bir Riak CS tuguniga bitta Riak tuguniga ega bo'lishni rejalashtirishingiz kerak. Riak va Riak CS tugunlari turli jismoniy mashinalarda ishlashi mumkin, lekin ko'p hollarda bitta Riak tugunini va bitta Riak CS tugunini bitta jismoniy mashinada ishlatish afzaldir. Bitta jismoniy mashina Riak va Riak CS tugunlarining ehtiyojlarini qondirish uchun etarli quvvatga ega deb faraz qilsangiz, odatda tarmoqning kechikishi kamayganligi sababli yaxshi ishlashni ko'rasiz.

Agar tizimingiz bir nechta tugunlardan iborat bo'lsa, konfiguratsiya birinchi navbatda komponentlar o'rtasidagi aloqani o'rnatish bilan bog'liq. Jurnal fayllari saqlanadigan joy kabi boshqa sozlamalar standart qiymatlarga ega va faqat nostandart qiymatlardan foydalanmoqchi bo'lsangiz o'zgartirilishi kerak.

Tizim komponentlarini sozlash. CS uchun Riak KV o'rnatilmoqda

Riak CS Riak ustiga qurilgan dastur bo'lgani uchun Riak CSni ishga tushirishda Riak konfiguratsiyasiga e'tibor berish juda muhimdir. Ushbu hujjat Riak konfiguratsiya qo'llanmasi va muhim konfiguratsiya parametrlarini tavsiflovchi ma'lumotnoma hujjatidir.

Sozlashdan oldin Riak KV va Riak CS klasteringizdagi har bir tugunga oʻrnatilganligiga ishonch hosil qiling. Boshqa tomondan, stanchion butun klasterda faqat bitta tugunga o'rnatilishi kerak.

Riak bulutli saqlash. 1-qism: Riak KV-ni sozlash

Riak CS uchun backends

Riak tomonidan ishlatiladigan standart backend Bitcask, ammo Riak CS to'plami Riak CS tizimining bir qismi bo'lgan Riak klasteri tomonidan ishlatilishi kerak bo'lgan maxsus backendni o'z ichiga oladi. Oddiy versiyada Riak bilan birga keladigan standart Multi backend mavjud.

Riak CS ichida ishlatiladigan xuddi shu Riak chelaklari ikkinchi darajali indekslardan foydalanadi, ular endi LevelDB backendini talab qiladi. Riak CS tizimining boshqa qismlari Bticask backend-dan foydalanishi mumkin. Namuna Multi backend-dan foydalanish Riak CS-da ishlash va funksionallikning eng yaxshi kombinatsiyasiga erishish uchun ushbu ikkala orqa qismdan foydalanish uchun kiritilgan. Keyingi bo'lim Riakni ushbu Multi-backenddan foydalanish uchun qanday qilib to'g'ri sozlashni tasvirlaydi.

Backend Riak ma'lumotlarni saqlash uchun foydalanadi. Riak KV o'z arsenalida bir nechta backendlarga ega: Bitcask, LevelDB, Memory va Multi.

Bundan tashqari, saqlashni hisoblash tizimi fayllarni chelaklarga jamlash uchun Riak MapReduse-dan foydalanadi. Bu shuni anglatadiki, siz barcha Riak tugunlariga saqlashni hisoblashdan oldin tayyorlangan Riak CS fayllarini qaerdan qidirish kerakligini aytishingiz kerak.

Riak tugunini Riak CS tizimining bir qismi sifatida sozlash uchun IP-manzil va IP-manzil va Protokol buferlari orqali xabar almashish uchun port kabi bir qancha boshqa parametrlarni o'zgartirish kerak. Agar kerak bo'lsa, boshqa sozlamalar o'zgartirilishi mumkin. Quyidagi bo'limlarda Riak tugunini Riak CS tizimining bir qismi sifatida ishlash uchun qanday sozlash kerakligi tasvirlangan.

Riak backend sozlanmoqda

Birinchidan, riak.conf yoki advanced.config/app.config konfiguratsiya fayllari tahrirlanadi. Ushbu fayllar /etc/riak yoki /opt/riak/etc kataloglarida joylashgan bo'lishi mumkin. Odatiy bo'lib, Riak Bitcask backendidan foydalanadi. Biz qilishimiz kerak bo'lgan birinchi narsa, quyidagi qatorni olib tashlash orqali konfiguratsiya faylini o'zgartirishdir:

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

Keyinchalik, biz Riak uchun RiakCS modullariga bo'lgan ehtiyojni ko'rsatishimiz va Riakga Riak CSni ta'minlaydigan sozlangan backenddan foydalanishni ko'rsatishimiz kerak. Buning uchun advanced.config yoki app.config faylidan foydalanishimiz va quyidagi parametrlarni qo'shishimiz kerak:

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

Shuni ta'kidlash kerakki, ushbu qiymatlarning aksariyati sizning operatsion tizimingizga xos bo'lgan katalog o'zgarishlariga bog'liq bo'ladi, shuning uchun ko'rsatmalarga muvofiq amal qiling. Misol uchun, add_paths opsiyasi Riak CS /usr/lib/riak-cs da o'rnatilgan, data_root parametrlari esa Riak /var/lib da o'rnatilgan deb taxmin qiladi. (Eslatma: Mening holimda bu add_paths edi - /usr/lib64/riak-cs/).

Ushbu konfiguratsiya Riak CS Riak bilan bir xil mashinada o'rnatilganligini nazarda tutadi. Agar yo'q bo'lsa, paketni alohida xostga nusxalash kerak.

Qardosh yaratishni sozlash

Endi biz allow_mult parametrini rost deb belgilashimiz kerak. Biz riak.conf konfiguratsiya fayliga satr yoki advanced.config yoki app.config da riak_core bo'limini qo'shishimiz mumkin.

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

Bu Riakga Riak CS ishlashi uchun zarur bo'lgan birodarlar yaratish imkonini beradi. Agar siz Riak CS ga mijoz kutubxonasi orqali ulansangiz, xavotir olmang: nizolarni hal qilishingiz shart emas, chunki barcha Riak CS operatsiyalari belgilangan tarzda qat'iy izchil.

Birodar ob'ekt turli tugunlarda turli qiymatlarga ega bo'lishi uchun bir nechta ob'ektlarni bitta kalitda saqlash usulidir.

Eslatma: allow_mult
Riak CS-ni ham qo'llab-quvvatlaydigan har qanday Riak tugunida allow_mult har doim rost ga o'rnatiladi. Agar qiymat noto'g'ri bo'lsa, Riak CS ishga tushirishni tiklaydi.

Xost nomi va IP manzilini sozlash

Har bir Riak tugunining nomi bor, uni nodename parametrida riak.conf da ko'rsatish mumkin. Agar siz app.config konfiguratsiya faylidan foydalansangiz, app.config bilan bir xil katalogda vm.args nomli fayl yaratishingiz va -name bayrog'i yordamida xost nomini belgilashingiz kerak. Biz tugun nomlarini @ formatida belgilashni tavsiya qilamiz. Shunday qilib, agar sizda bitta xost 100.0.0.1 da ishlaydigan uchta tugun bo'lsa, ularga qo'ng'iroq qilishingiz mumkin [elektron pochta bilan himoyalangan], [elektron pochta bilan himoyalangan]va [elektron pochta bilan himoyalangan] yoki aniqroq nomlar berishingiz mumkin, masalan [elektron pochta bilan himoyalangan], [elektron pochta bilan himoyalangan] va hokazo. Quyidagi misolda xost nomini o'zgartirish ko'rsatilgan [elektron pochta bilan himoyalangan], bu localhost-da ishlaydi.

RIAK.CONF

 nodename = [email protected] 

VM.ARGS

 -name [email protected]

Barcha tugunlarni ishga tushirish va klasterga qo'shilishdan oldin nomlashingiz kerak.

O'rnatish testi

Endi barcha kerakli tugun sozlamalari tugallangandan so'ng, biz Riakni ishga tushirishga harakat qilishimiz mumkin:

Qobiq

 riak start 

Eslatma Mening ishimda javob:

Riak bulutli saqlash. 1-qism: Riak KV-ni sozlash

Bu erda siz biroz kutishingiz kerak. Keyin ishlaydigan tugunni sinab ko'rishni boshlashingiz mumkin.

Qobiq

 riak ping

Agar javob pong bo'lsa, Riak ishlayapti; agar javob tugun pinglarga javob bermasa, unda nimadir noto'g'ri ketdi.

Eslatma Mening ishimda javob:

Riak bulutli saqlash. 1-qism: Riak KV-ni sozlash

Agar tugun to'g'ri boshlanmasa, muammoni aniqlash mumkin bo'lsa, tugunning /log katalogidagi erlang.log.1 jurnaliga qarang. Eng keng tarqalgan xatolardan biri bu invalid_storage_backend. Bu advanced.config yoki app.config ichidagi Riak CS kutubxonasiga yo'l noto'g'ri ekanligini ko'rsatadi (yoki Riak CS serverda o'rnatilmagan). Ushbu xatoga qaramay, riak_cs_kv_multi_backenddan riak_kv_multi_backendga oʻzgarmaganingizga ishonch hosil qiling.

Riakni protokol buferlaridan foydalanish uchun sozlash

Riak protokoli bufer sozlamalari riak.conf yoki /etc/riak/ katalogida joylashgan advanced.config yoki app.config fayllaridagi riak_api bo'limida joylashgan. Odatiy bo'lib, xost IP manzili 127.0.0.1 va port 8087. Agar Riak va Riak CSni mahalliy bo'lmagan muhitda ishga tushirishni rejalashtirsangiz, ularni o'zgartirishingiz kerak bo'ladi. 127.0.0.1 ni Riak xost IP manzili va 8087 portini mos keladiganiga almashtiring.

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

Eslatma:Riak.conf faylidagi listener.protobuf.internal parametrining qiymati (yoki advanced.conf/app.config ichidagi pb parametrining qiymati) Riak CS riak-cs.config va riak_host-dagi qiymatlarga mos kelishi kerak. Stanchion stanchion.conf (yoki rivojlangan .config/app.config da mos ravishda riak_host) fayllari.

Port raqami haqida eslatma
Agar port boshqa ilova tomonidan ishlatiladigan portlarga zid bo'lsa yoki siz yuk balansi yoki proksi-serverdan foydalansangiz, boshqa port raqami talab qilinishi mumkin.

Shuningdek, foydalanuvchilarga Riak protobuf.backlog hajmi (yoki advanced.config/app.config fayllarida bu pb_backlog) Riak-cs da Riak CS uchun belgilangan pool.request.sizega teng yoki undan kattaroq bo‘lishini ta’minlash tavsiya etiladi. config (yoki advanced.config/app.conf fayllaridagi request_pool_size).

Agar Riak CS da pool.request.size qiymati o'zgartirilgan bo'lsa, protobuf.backlog qiymati Riakda ham yangilanishi kerak.

Boshqa Riak sozlamalari

Riak.conf va advanced.config fayllari jurnal fayllarini yaratish va ular saqlanadigan joyni sozlaydigan boshqa sozlamalarni o'z ichiga oladi. Ushbu sozlamalar standart qiymatlarga ega va ko'p hollarda ishlashi kerak. Qo'shimcha ma'lumot olish uchun konfiguratsiya fayllari haqidagi hujjatlarimizni o'qishni tavsiya qilamiz.

Riak uchun IP-manzil o'rnatilmoqda

Riak uchun IP-manzilni o'rnatayotganda, Riak tugunlarining yagona IP-manziliga ega ekanligiga ishonchingiz komil bo'lishi kerak, faqat bitta tugun bilan ishlayapsizmi yoki tizimga qo'shimcha tugunlar qo'shasizmi. Riak IP manzili riak.conf da yoki - app.config faylidan foydalanayotgan bo'lsangiz - vm.args konfiguratsiya faylida, u erda /etc/riak katalogida (yoki /opt/riak/etc/) joylashgan. boshqa operatsion tizimlarda).

Dastlab, Riak IP-manzilini o'z ichiga olgan chiziq ushbu joydagi localhostga ishora qiladi:

RIAK.CONF

 nodename = [email protected]

VM.ARGS

 -name [email protected]

127.0.0.1 ni o'zingiz yoqtirgan IP manzil yoki Riak tugunining xost nomi bilan almashtiring.

Ishlash va tarmoqli kengligi sozlamalari

Ishlash sabablariga ko'ra, /etc/riak/ yoki /opt/riak/etc katalogida joylashgan riak.conf yoki vm.args Riak konfiguratsiya fayllariga qiymatlarni qo'shishni qat'iy tavsiya qilamiz.

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 o'chirib qo'yilmoqda

Riak CS ning har qanday versiyasida eski JavaScript MapReduce dan foydalanmaslik tavsiya etiladi. Ishlash sabablari uchun JavaScript MapReduce operatsiyalarini bajaradigan virtual mashinani riak.conf konfiguratsiya faylida yoki advanced.conf yoki app.config saytlarining riak_kv bo'limida sozlash orqali o'chirib qo'yishingiz kerak:

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

Keyinchalik, Riak CS tizimining qolgan komponentlarini sozlashimiz kerak.

Asl qo'llanma.

Manba: www.habr.com

a Izoh qo'shish