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

Дадаць каментар