Установка и настройка Riak KV на Ubuntu 18.04 LTS
Riak KV — отказоустойчивый распределённый NoSQL‑хранилище. В этой статье подробно показано, как установить, настроить и проверить кластер Riak KV на трёх серверах Ubuntu 18.04. Приведён пошаговый план, команды, критерии приёмки, проверочные тесты и рекомендации по безопасности.

Riak — распределённая NoSQL база данных, ориентированная на высокую доступность, отказоустойчивость и простую эксплуатацию. Riak написан на Erlang и входит в семейство продуктов Basho: Riak KV (ключ‑значение), Riak TS (оптимизация для IoT и временных рядов) и Riak CS (объектное облачное хранилище).
В этом пошаговом руководстве показано, как установить Riak KV на Ubuntu 18.04 LTS и собрать кластер из трёх узлов.
Основные требования
- 3 сервера на Ubuntu 18.04 или 16.04
- hakase-riak01 — 10.1.1.10
- hakase-riak02 — 10.1.1.11
- hakase-riak03 — 10.1.1.12
- root или sudo-права на всех узлах
- базовое знание работы с терминалом и vim
Важно: все команды из разделов установки и базовой настройки выполняйте на каждом узле, если не указано иное.
Что мы сделаем
- Установим пакеты Riak KV на каждый сервер
- Выполним базовую конфигурацию системы и Riak
- Объединим узлы в кластер
- Проверим репликацию данных и протестируем отказоустойчивость
Шаг 1 — установка Riak KV
Установка выполняется из репозитория packagecloud и ориентирована на пакеты для Ubuntu Xenial. На каждом сервере выполните:
curl https://packagecloud.io/gpg.key | sudo apt-key add -
sudo apt-get install -y apt-transport-httpsСоздайте файл репозитория:
cd /etc/apt/sources.list.d/
sudo vim riak.listВставьте содержимое:
# this file was generated by packagecloud.io for
# the repository at https://packagecloud.io/basho/riak
deb https://packagecloud.io/basho/riak/ubuntu/ xenial main
deb-src https://packagecloud.io/basho/riak/ubuntu/ xenial mainОбновите индекс пакетов и установите riak:
sudo apt update
sudo apt install riak -yДождитесь завершения установки.

Примечание:
- Выполняйте эти команды на всех трёх узлах.
Шаг 2 — базовая конфигурация Riak KV
Перед редактированием конфигурации Riak увеличим лимит открытых файлов для пользователя riak.
Откройте файл /etc/security/limits.conf и добавьте в конец:
riak soft nofile 65536
riak hard nofile 200000Далее отредактируйте основной конфигурационный файл Riak:
cd /etc/riak/
sudo vim riak.confПоменяйте nodename с riak@localhost на riak@
nodename = [email protected]Раскомментируйте и установите параметры планировщика Erlang:
erlang.schedulers.force_wakeup_interval = 500
erlang.schedulers.compaction_of_load = falseОставьте ring_size равным 64:
ring_size = 64Измените прослушивание HTTP и protobuf на IP этого сервера. Пример (не забывайте использовать IP текущего узла):
listener.http.internal = 10.1.1.11:8098
listener.protobuf.internal = 10.1.11.11:8087Важно: проверьте правильность IP и опечаток в адресах (в примере для protobuf может быть опечатка 10.1.11.11). Убедитесь, что указываете реальные IP текущего узла.
Сохраните файл и проверьте конфигурацию, затем запустите сервис:
riak chkconfig
riak startПроверьте работоспособность:
riak ping
curl -v http://10.1.1.11:8098/types/default/propsОжидаемые результаты: команда riak ping возвращает pong, curl возвращает HTTP 200.

Примечание:
- Все команды конфигурации и проверки также выполняются на каждом узле.
Шаг 3 — создание кластера Riak KV
Объединение узлов выполняется через riak-admin. Мы добавим hakase-riak02 и hakase-riak03 к первому узлу hakase-riak01.
Добавление второго узла
На hakase-riak02 выполните:
riak-admin cluster join [email protected]На hakase-riak01 выполните:
riak-admin cluster plan
riak-admin cluster commitПроверьте статус кластера на hakase-riak01:
riak-admin cluster status
Добавление третьего узла
На hakase-riak03 выполните:
riak-admin cluster join [email protected]Снова на hakase-riak01 выполните:
riak-admin cluster plan
riak-admin cluster commitПроверьте статус кластера:
riak-admin cluster statusПосле этого все три узла должны быть частью кластера. Если в выводе есть незавершённые операции, исправьте их согласно сообщениям riak-admin.

Шаг 4 — тестирование репликации и доступа
Теперь проверим, что данные реплицируются между узлами.
На hakase-riak01 скачайте изображение:
cd ~
wget https://vignette.wikia.nocookie.net/nichijou/images/a/a0/113407.jpg -O hakase.jpgЗагрузите объект в Riak KV с помощью HTTP API:
curl -XPUT http://10.9.9.10:8098/riak/images/hakase.jpg -H 'Content-type: image/jpg' --data-binary @hakase.jpgВажно: используйте IP одного из узлов в URL. В примере используется 10.9.9.10 — замените на реальный IP вашей первой ноды.
Откройте в браузере адресы других узлов:
- http://10.1.1.11:8098/riak/images/hakase.jpg (hakase-riak02)

- http://10.1.1.12:8098/riak/images/hakase.jpg (hakase-riak03)

Если нужно удалить объект:
curl -XDELETE 'http://10.9.9.10:8098/riak/images/hakase.jpg'Кластер Riak KV на Ubuntu 18.04 настроен и протестирован.
Критерии приёмки
- Все три ноды находятся в status=running и видимы в riak-admin cluster status
- riak ping возвращает pong на каждом узле
- HTTP API /types/default/props возвращает 200
- Загруженный объект доступен по HTTP с каждого узла
Короткое руководство по отладке и распространённые ошибки
- riak start не запускается: проверьте логи /var/log/riak/ и права на файлы
- riak-admin cluster commit не завершён: выполните riak-admin cluster plan, исправьте конфликты и повторите commit
- Проблемы с сетевыми подключениями: убедитесь, что порты 8098 (HTTP) и 8087 (protobuf) доступны между узлами
- Неверный nodename: проверьте, что nodename уникален и соответствует IP узла
Команды для диагностики:
sudo journalctl -u riak -f
tail -n 200 /var/log/riak/console.log
riak-admin member-status
riak-admin cluster statusРоль‑ориентированные чек‑листы
Администратор:
- проверил сетевую связность между узлами
- увеличил лимиты открытых файлов
- настроил nodename и listener IP
Операции:
- проверил состояние кластера после коммитов
- следит за логами и метриками кластера
Разработчик:
- тестирует загрузку/получение объектов через HTTP API
- валидация типов контента и ключей
Мини‑плейбук: восстановление после сбоя узла
- Выньте узел из кластера, если он не восстанавливается: riak-admin cluster plan -> удалить узел -> riak-admin cluster commit
- Восстановите ОС/сеть на проблемном узле
- Заново установите Riak и примените конфигурацию nodename
- На восстановленном узле выполните riak-admin cluster join [email protected]
- На контролирующем узле выполните riak-admin cluster plan && riak-admin cluster commit
- Проверьте статус и репликацию
Тесты и критерии приёмки (Test cases)
- TC1: riak ping на каждом узле должен вернуть pong
- TC2: Загрузка объекта на узел A, проверка доступа с узлов B и C
- TC3: Отключение одного узла, проверка доступности данных через остальные узлы
- TC4: Восстановление узла и повторная синхронизация данных
Рекомендации по безопасности
- Разверните Riak в приватной сети или через VPN
- Ограничьте доступ к портам 8098 и 8087 через firewall (ufw/iptables)
- Регулярно делайте резервные копии данных и конфигураций
- Ограничьте SSH доступ по ключам и используйте привилегии least‑privilege
Миграция и совместимость
- Riak KV 2.x сохраняет свой формат данных; перед миграцией проверьте версии и совместимость модулей
- Тестируйте все операции записи и чтения на тестовом кластере перед переносом продовых данных
Когда Riak может не подойти
- Если вам нужны сильные ACID‑транзакции и сложные запросы SQL — Riak не лучший выбор
- Для очень высокочастотной аналитики и сложных агрегаций лучше рассмотреть специализированные TS/analytics решения
Сводка
- Установите пакеты на каждом узле, увеличьте лимиты файлов
- Настройте nodename и listener IP в riak.conf
- Выполните riak-admin cluster join на добавляемых узлах, затем plan и commit на основном узле
- Проверьте репликацию через загрузку объекта и доступ к нему с других узлов
Важно: проверяйте все IP и параметры перед запуском cluster commit. Небольшая опечатка в адресах может помешать корректной работе.
Источник и документация:
Примечание:
- Этот материал служит практическим руководством и содержит команды, которые нужно выполнять с правами администратора.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента