Riak: Опыт эксплуатации

В этой статье мы рассмотрим простой пример использования NoSQL-системы Riak. Опишем процесс создания кластера, примеры создания хранилища и записи в него данных.

Не так давно нам была поставлена задача развернуть систему кеширования не завязанную на реляционные базы данных и легко масштабируемую. Её планировалось использовать для сокращения времени ответа по одному из часто используемых сервисов BPM. Мы подумали, и пришли к выводу: зачем нам вызывать заново сервисы, если данные, которые они предоставляют не менялись  с момента последнего вызова. Наш выбор пал на NoSQL-систему Riak. Что примечательно для Riak, так это то, что в системе нет ведущего узла, как это, например, реализовано в MongoDB. Благодаря этому, можно не беспокоится, если один из узлов кластера выйдет из строя. Все ноды кластера Riak  имеют одинаковый приоритет.

После недолгих экспериментов и предварительных расчетов (на основании предоставленной документации на официльном сайте продукта http://docs.basho.com/riak/latest/ops/building/planning/cluster/), решено было развернуть кластер из пяти нод Riak. Как оказалось, разворачивается этот зверёк максимально просто,чего, на первый взгляд, нельзя сказать про настройки.

Установка и настройка

Опишем здесь моменты установки и базовой настройки продукта.

  1. Скачать актуальный для Вашей ОС дистрибутив с сайта http://docs.basho.com/riak/latest/downloads/
  2. Запустить процесс установки rpm -Uvh riak-1.4.8-1.el6.x86_64.rpm
  3. Проверить, что программа установлена. Для этого необходимо перейти в каталог (cd /etc/riak/), и убедиться, что в каталоге есть два конфигурационных файла с именами app.config, vm.args.
  4. Отредактировать конфиги приложения, в соответствии с реквизитами вашего сервера:

В Riak Client APIs config прописать IP-адрес сервера:

В Riak Core config прописать IP-адрес, раскомментировать секцию с ssl:

В riak_kv config под наши нужды описали несколько бэкэндов. Bitcask, для которого были примонтированы шары со стораджей, mem cache (только для событий, с небольшим временем жизни):

Предположим, что мы развернули Riak на 5 серверах с именами Node1, Node2,.., NodeN. Теперь необходимо объединить эти сервера в кластер.

Выберем какую-либо из нод кластера “формально эталонной”. Формально, потому что как-такового понятия Primary ноды в Riak не существует. Теперь, попробуем с этой ноды добавить все остальные в кластер. Сделать это можно следующей командой:

riak-admin cluster join riak@Node1,
riak-admin cluster join riak@Node2,
..................................,
riak-admin cluster join riak@NodeN

Чтобы посмотреть изменения, которые произошли в кластере необходимо выполнить команду:

riak-admin cluster plan

Для применения последних  изменений необходимо выполнить команду:

riak-admin cluster commit

С помощью команды riak-admin member-status можно посмотреть текущее состояние серверов кластера, вывод результата команды выглядит следующим образом:

Теперь попробуем создать бакет в каком-либо из стораджей, например, в хранилище bitcask_long с временем жизни записей 86400 сек. Для этого курлом выполним команду:

curl -v -XPUT -i -H "Content-Type: application/json" -d '{"props" : {"backend":"bitcask_long","n_val":2,"r":1,"last_write_wins":true}}'  http://localhost:8080/buckets/TEST_BUCKET/props

Проверим, что бакет создался,перейдём по урлу:

http://localhost:8080/buckets?buckets=true

Результат выполнения команды:

{"buckets":["TEST_BUCKET"]}

Далее попробуем сделать запись в бакет:

curl -v -XPUT -i -H "Content-Type: text/plain" -d 'INIT' http://localhost:8080/riak/TEST_BUCKET/INIT_KEY

Результат можно посмотреть командой

http://localhost:8080/buckets/TEST_BUCKET/keys?keys=true

в любом браузере, выглядеть это будет так:

{"keys":["INIT_KEY"]}

Riak-консоль

Это виртуал-консоль, в которой можно отслеживать состояние кластера Riak в  графическом режиме, выводить ноды из эксплуатации, смотреть распределение по памяти.

Согласно нашему конфигу консоль находится по адресу:

https://localhost:8098/admin

riak-1

riak-2

riak-3

Активируется консоль очень просто, путем изменения значения false на true в следующей директиве:

Ошибки,с которыми пришлось столкнуться

Не удается добавить ноды в кластер, нода не видит кластер. Можно попробовать остановить последовательно все ноды кластера, на “больной” ноде почистить следующие каталоги:

rm -rf /var/lib/riak/*
rm -rf /var/lib/riak/ring/*
rm -rf /var/lib/riak/anti_entropy/*

Затем необходимо запустить все обратно, и повторить процедуру добавления ноды в кластер.

Заключение

Резюмируя можно сказать, что зверёк у нас скорее прижился, чем не прижился, не так активно, как хотелось бы, но некоторую часть сервисов перевели,  и они вполне себе успешно работают. Разворачивали Riak по материалам сайта http://docs.basho.com/riak/latest/, на котором достаточно хорошо описан процесс установки продукта, предоставлены примеры команд, и настроек.

Также, рекомендуем ознакомиться с материалами по теме Riak на ресурсе DeveloperWorks:

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
Метки: , ,
Опубликовано в Разное
1 комментарий на “Riak: Опыт эксплуатации
  1. RAY:

    плиз подскажите кто нибудь как установить риак на виндус???

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Выбор языка: