Riak Cloud Storage. Beş 1: Sazkirina Riak KV

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

Riak Cloud Storage. Beş 1: Sazkirina Riak KV
Данная статья это вольный перевод официального руководства по системе Riak CS версии 2.1.1

В системе хранения Riak CS, три компонента работают совместно друг с другом, что означает обязательную настройку каждого компонента для работы с другими компонентами:

  • Riak (KV) – система баз данных, которая действует как конечная система.
  • Riak CS — слой облачного хранилища поверх Riak, которая предоставляет хранение и возможности API, хранит файлы и метаданные в Riak, и передаёт их затем конечным пользователям.
  • Stanchion — управляет запросами с участием глобально уникальных сущностей, такими как бакеты и пользователями в экземпляре 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. Beş 1: Sazkirina 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. Если нет, то пакет нуждается в копировании в отдельный хост.

Hастройка создания сайблингов

Сейчас, нам нужно настроить параметр 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
]}

Ev ê dihêle Riak xwişk û birayên ku ji bo fonksiyona Riak CS hewce ne biafirîne. Ger hûn bi karanîna pirtûkxaneya xerîdar ve bi Riak CS-ê ve girêdin, xeman nebin: hûn neçar in ku nakokiyan çareser bikin, ji ber ku hemî operasyonên Riak CS bi hişkî wekî ku hatî destnîşan kirin hevgirtî ne.

Bira rêyek e ku meriv gelek tiştan di yek mifteyê de hilîne da ku tişt li ser girêkên cihêreng xwedî nirxên cihê be.

Примечание: allow_mult
Любой узел Riak, который также поддерживает Riak CS, будет все время иметь значение true параметра allow_mult. Riak CS будет сбрасывать запуск, если значение будет false.

Sazkirina Navnîşana Host û IP-ê

Her nodek Riak navek heye, ku dikare di vebijarka nodename ya riak.conf de were destnîşan kirin. Heke hûn pelê veavakirinê app.config bikar tînin, hûn hewce ne ku pelek bi navê vm.args di heman pelrêça app.config de biafirînin û navê mêvandar bi karanîna ala -name diyar bikin. Em pêşniyar dikin ku navên nodê di forma @ de diyar bikin. Û ji ber vê yekê heke we sê girêkên ku li ser yek mêvandar 100.0.0.1 dixebitin hene, hûn dikarin gazî wan bikin [email parastî], [email parastî]û [email parastî] an jî hûn dikarin navên bêtir taybetî bidin, wek [email parastî], [email parastî] wate ya vê çîye. Mînaka jêrîn guheztina navê mêvandar destnîşan dike [email parastî], ku dê li ser localhost bimeşîne.

RIAK.CONF

 nodename = [email protected] 

VM.ARGS

 -name [email protected]

Berî destpêkirina wan û tevlêbûna komê divê hûn hemî girêkan nav bikin.

Testa sazkirinê

Naha ku hemî mîhengên nodê yên pêwîst qediyan, em dikarin hewl bidin ku Riak dest pê bikin:

LEGAN

 riak start 

Not Di doza min de bersiv:

Riak Cloud Storage. Beş 1: Sazkirina Riak KV

Li vir hûn hewce ne ku hinekî bisekinin. Dûv re hûn dikarin dest bi ceribandina girêka xebitandinê bikin.

LEGAN

 riak ping

Ger bersiv pong be, wê hingê Riak dimeşîne; heke bersiv Node be ku bersivê nede ping, wê hingê tiştek xelet derket.

Not Di doza min de bersiv:

Riak Cloud Storage. Beş 1: Sazkirina Riak KV

Ger girêk rast dest pê nekiribe, heke pirsgirêk dikare were tespît kirin, li têketina erlang.log.1 ya pelrêça /logê ya girêkê binêre. Yek ji xeletiyên herî gelemperî invalid_storage_backend e. Kîjan nîşan dide ku rêça pirtûkxaneya Riak CS di advanced.config an di app.config de xelet e (an Riak CS li ser serverê nehatiye saz kirin). Tevî vê xeletiyê, pê ewle bin ku we ji riak_cs_kv_multi_backend neguherandiye riak_kv_multi_backend.

Veavakirina Riak ji bo karanîna tamponên protokolê

Mîhengên tampon protokola Riak li riak.conf an jî di beşa riak_api de di pelên advanced.config an app.config de, ku di pelrêça /etc/riak/ de cih digirin, cih digirin. Ji hêla xwerû, mêvandar navnîşana IP-ya 127.0.0.1 û porta 8087 heye. Heke hûn plan dikin ku Riak û Riak CS-ê li hawîrdorek ne-herêmî bimeşînin, hûn ê hewce bikin ku van biguhezînin. 127.0.0.1 bi navnîşana IP-ya mêvandarê Riak-ê û porta 8087-ê bi ya minasib biguhezînin.

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

Têbînî:Nirxa parametreya listener.protobuf.internal di pelê riak.conf (an jî nirxa pîvana pb di advanced.conf/app.config) de divê bi nirxên riak_host re li Riak CS riak-cs.config û Stanchion stanchion.conf (an jî riak_host bi rêzê ve di pelên pêşkeftî de .config/app.config).

Nîşeyek li ser hejmara portê
Ger ku port bi benderên ku ji hêla serîlêdanek din ve têne bikar anîn an jî heke hûn balansek barkirinê an serverek proxy bikar bînin, dibe ku jimareyek portek cûda hewce bike.

Her weha tê pêşniyar kirin ku bikarhêner piştrast bikin ku mezinahiya Riak protobuf.backlog (an di pelên advanced.config/app.config de ev pb_backlog e) ji pool.request.size ya ku ji bo Riak CS di riak-cs de hatî destnîşan kirin wekhev an mezintir e. config (an jî request_pool_size di pelên advanced.config/ app.conf de).

Ger nirxa pool.request.size di Riak CS de hatibe guhertin, wê hingê divê nirxa protobuf.backlog jî li Riak were nûve kirin.

Mîhengên din ên Riak

Pelên riak.conf û advanced.config mîhengên din ên ku çêkirina pelên têketinê û cihê ku ew têne tomar kirin mîheng dikin. Van mîhengan nirxên xwerû hene û divê di pir rewşan de bixebitin. Ji bo bêtir agahdarî, em pêşniyar dikin ku belgeyên me yên di derbarê pelên mîhengê de bixwînin.

Sazkirina navnîşana IP-ê ji bo Riak

Dema ku ji bo Riak navnîşanek IP-yê saz dikin, divê hûn pê ewle bin ku girêkên Riak xwedan navnîşek IP-ya yekta ne, gelo hûn tenê bi yek nodek re dixebitin an jî bêtir girêkan li pergalê zêde dikin. Navnîşana IP ya Riak di riak.conf de heye an - heke hûn pelê app.config bikar tînin - di pelê veavakirina vm.args de, ku li wir di pelrêça /etc/riak de cih digire (an /opt/riak/etc/ li ser pergalên xebitandinê yên din).

Di destpêkê de, xêza ku navnîşana IP-ya Riak-ê vedihewîne li vê cîhê mêvandarê herêmî destnîşan dike:

RIAK.CONF

 nodename = [email protected]

VM.ARGS

 -name [email protected]

127.0.0.1 bi navnîşana IP-ya xweya bijare an navê mêvandarê girêka Riak veguherînin.

Performansa û Mîhengên Bandwidth

Ji ber sedemên performansê, em bi tundî pêşniyar dikin ku nirxan li pelên vesazkirina Riak riak.conf an vm.args, ku di pelrêça /etc/riak/ an /opt/riak/etc de cih digirin, zêde bikin.

RIAK.CONF

 erlang.max_ports = 65536

VM.ARGS

## This setting should already be present for recent Riak installs.
 -env ERL_MAX_PORTS 65536

Neçalakkirina JavaScript MapReduce

Tête pêşniyar kirin ku JavaScript MapReduce ya mîras bi guhertoyek Riak CS-ê re neyê bikar anîn. Ji ber sedemên performansê, divê hûn makîneya virtual ku operasyonên JavaScript MapReduce pêk tîne neçalak bikin bi danîna pelê veavakirinê riak.conf, an jî di beşa riak_kv ya advanced.conf an 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
]}

Dûv re divê em hêmanên mayî yên pergala Riak CS mîheng bikin.

Manual original.

Source: www.habr.com

Add a comment