Riak Cloud Storage. Частина 1. Налаштування Riak KV

Riak CS (Cloud Storage) - Легке у використанні програмне забезпечення для організації сховища об'єктів, що працює поверх Riak KV. Riak (KV) – це розподілена NoSQL база даних типу «ключ-значення (key-value)». Riak CS спроектована так, щоб забезпечити простоту, доступність, розподіленість хмарного сховища будь-якого масштабу, і може використовуватися для побудови хмарних архітектур — як публічних, так і приватних — або інфраструктурного сховища для високо навантажених додатків і сервісів. Riak CS API сумісний з Amazon S3 і підтримує можливість отримання звітів з різних ситуацій.

Riak Cloud Storage. Частина 1. Налаштування Riak KV
Ця стаття є вільним перекладом офіційного посібника з системи Riak CS версії 2.1.1

У системі зберігання Riak CS три компоненти працюють спільно один з одним, що означає обов'язкове налаштування кожного компонента для роботи з іншими компонентами:

  • Riak (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, коли запускається Riak CS. Цей документ одночасно є посібником із конфігурування Riak, а також довідковим документом з опису важливих конфігураційних параметрів.

Перед налаштуванням переконайтеся, що Riak KV та Riak CS встановлені на кожному вузлі у вашому кластері. Stanchion, навпаки, має бути встановлений тільки одному вузлі у всьому кластері.

Riak Cloud Storage. Частина 1. Налаштування Riak KV

Бекенди для Riak CS

За умовчанням бекенд використовуваний Riak це Bitcask, але Riak CS пакет включає спеціальний бекенд, який має бути використаний Riak кластером, що є частиною Riak CS системи. У звичайній версії є стандартний Multi-бекенд, який поставляється з Riak.

Одні й самі Riak бакети, використовувані всередині Riak'ом CS, використовують вторинні індекси, які тепер вимагають LevelDB бекенд. Інші частини Riak CS системи можуть отримати вигоду використовуючи Bticask бекенд. Використання зразкового Multi бекенд включено в Riak CS, щоб скористатися перевагами обох цих бекендів для досягнення найкращого поєднання продуктивності та функціональності. У наступному розділі описується, як правильно налаштувати Riak для використання цього Multi-Бекенд.

Бекенд це те, що Riak буде використовувати для збереження даних. В арсеналі Riak KV є кілька бекендів: Bitcask, LevelDB, Memory та Multi.

Додатково система розрахунку зберігання даних використовує Riak MapReduse для підсумовування файлів у бакети. Це означає, що ви повинні повідомити всі вузли Riak, де шукати підготовлені файли Riak CS перед обчисленням зберігання.

Дещо інші параметри повинні бути змінені, щоб налаштувати вузол Riak, як частина системи Riak CS, такі як IP-адреса та IP-адреса і порт для обміну повідомленнями через Protocol Buffers. Інші налаштування можна змінити, якщо це потреба. Наступні розділи описують, як налаштувати вузол Riak для роботи як частини системи Riak CS.

Налаштування Riak бекенда

По-перше, редагуються конфігураційні файли riak.conf або advanced.config/app.config. Ці файли можуть бути розташовані в /etc/riak або /opt/riak/etc директоріях. За промовчанням, Riak використовує Bitcask бекенд. Першу річ, яку нам потрібно зробити, це змінити файл конфігурації шляхом видалення наступного рядка:

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

Далі нам потрібно показати необхідність модулів RiakCS для Riak і вказати 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, весь час матиме значення true параметра allow_mult. Riak CS скидатиме запуск, якщо значення буде false.

Налаштування імені вузла та IP-адреси

Кожен вузол Riak має ім'я, яке може бути вказане в riak.conf в опції nodename. Якщо ви використовуєте конфігураційний файл app.config, вам необхідно створити файл з ім'ям vm.args в тій же директорії, де розташований app.config, і вказати ім'я вузла використовуючи прапорець -name. Ми рекомендуємо встановити імена вузлів у форматі @. І так якщо ви маєте три запущені вузли на одному хості 100.0.0.1, ви можете назвати їх [захищено електронною поштою], [захищено електронною поштою], І [захищено електронною поштою] або ви можете дати імена більш специфічні, такі як [захищено електронною поштою], [захищено електронною поштою] і так далі. Приклад нижче демонструє зміну імені вузла на ім'я [захищено електронною поштою], що працюватиме на локальному хості.

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 not responding to pings, значить, щось пішло не так.

Прим. Відповідь у моєму випадку:

Riak Cloud Storage. Частина 1. Налаштування Riak KV

Якщо вузол стартував некоректно, перегляньте журнал erlang.log.1 у директорії /log вузла, якщо проблему можна ідентифікувати. Однією з найпоширеніших помилок є invalid_storage_backend. Який вказує, що шлях до бібліотеки Riak CS advanced.config або в app.config неправильний( або Riak CS не встановлений на сервері). Незважаючи на цю помилку, переконайтеся, що ви не змінили riak_cs_kv_multi_backend на riak_kv_multi_backend.

Налаштування Riak для використання буферів протоколу (protocol buffers)

Налаштування буферів протоколу Riak знаходяться в riak.conf або riak_api розділі в advanced.config або app.config файлах, які розташовані в /etc/riak/ директорії. За замовчуванням хост має IP-адресу 127.0.0.1 та порт 8087. Вам потрібно їх змінити, якщо ви плануєте запускати Riak та Riak CS не в локальному оточенні. Замініть 127.0.0.1 IP-адресу вузла Riak і порт 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 відповідно в advanced .config/app.config) файлах.

Нотатка про номер порту
Може знадобитися інший номер порту, якщо порт конфліктує з портами, які використовується іншою програмою або якщо ви використовуєте балансувальник навантаження або проксі-сервер.

Також рекомендується, щоб користувачі переконалися, що розмір Riak protobuf.backlog (або в advanced.config/app.config файлах це pb_backlog) дорівнює або більший за розмір pool.request.size, вказаний для Riak CS в riak-cs.config (або request_pool_size в advanced.config/app.conf файлах).

Якщо значення pool.request.size у Riak CS було змінено, то значення protobuf.backlog так само в Riak має бути оновлено.

Інші налаштування Riak

Файли riak.conf та advanced.config включають інші налаштування, які налаштовують створення журнальних файлів та шляхи їх збереження. Ці установки мають значення за замовчуванням і повинні працювати в більшості випадків. Для більшої інформації ми рекомендуємо прочитати нашу документацію про конфігураційні файли.

Налаштування IP-адреси для Riak

При налаштуванні IP-адреси для Riak ви повинні бути впевнені, що вузли Riak мають унікальну IP-адресу, будь-то ви працюєте всього з одним вузлом або додаєте ще додаткові вузли до системи. IP-адреса Riak міститься в riak.conf або - якщо ви використовуєте app.config файл - в vm.args конфігураційному файлі, який розташований там же в / etc / riak директорії (або в / opt / riak / etc / в інших операційних системах ).

Спочатку рядок, що містить IP-адресу Riak, вказує на локальний хост у цьому місці:

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 конфігураційному файлі, або в riak_kv розділі advanced.conf або 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
]}

Далі нам потрібно налаштувати компоненти системи Riak CS, що залишилися.

Оригінал посібника.

Джерело: habr.com

Додати коментар або відгук