Установка и настройка Riak KV на CentOS 7

Riak — распределённая NoSQL СУБД, ориентированная на высокую доступность, отказоустойчивость, простоту эксплуатации и масштабируемость. Riak написан на Erlang и входит в продуктовую линейку Basho: Riak KV (ключ-значение), Riak TS (для IoT/Time Series) и Riak CS (облачное хранилище).
В этом руководстве показано, как установить и настроить Riak KV на серверах CentOS 7 и объединить три узла в кластер.
Основные понятия
- Riak KV — распределённое хранилище ключ-значение.
- Узел (node) — отдельный экземпляр Riak на сервере.
- ring_size — размер кольца распределения данных (по умолчанию 64).
- nodename — сетевое имя узла (используется Erlang).
Предварительные требования
- 3 сервера CentOS 7 с правами root:
- riak01 — 10.1.1.10
- riak02 — 10.1.1.11
- riak03 — 10.1.1.12
- Доступ по SSH к каждому серверу
- Разрешение на установку пакетов и редактирование конфигураций
Важное: все команды из разделов установки и конфигурации выполняйте на всех трёх серверах, где указано явно.
План действий
- Установка Riak KV на всех трёх серверах
- Базовая конфигурация Riak KV
- Формирование кластера (соединение узлов)
- Тестирование репликации и операций CRUD
Шаг 1 — Установка Riak KV на CentOS 7
На всех трёх серверах выполните команду для добавления репозитория PakageCloud с пакетами Riak:
curl -s https://packagecloud.io/install/repositories/basho/riak/script.rpm.sh | sudo bashКоманда загрузит репозиторий и GPG-ключ на систему. После этого установите пакет Riak KV (указанная версия 2.2.3):
sudo yum install riak-2.2.3-1.el7.centos.x86_64Дождитесь завершения установки.

Шаг 2 — Базовая настройка Riak KV
Перед настройкой Riak рекомендуется увеличить лимит открытых файлов для процесса riak, чтобы избежать проблем при нагрузке.
Откройте файл /etc/security/limits.conf и добавьте в конец:
riak soft nofile 65536
riak hard nofile 200000Сохраните и выйдите.
Теперь перейдите в каталог конфигураций и отредактируйте основной конфиг:
cd /etc/riak/
vim riak.confЧто нужно изменить в riak.conf:
- Укажите корректный nodename (замените localhost на IP-адрес сервера):
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 вашего сервера:
listener.http.internal = 10.1.1.10:8098
listener.protobuf.internal = 10.1.11.10:8087Примечание: убедитесь, что вы указали правильные IP-адреса интерфейсов и что сетевые правила (firewall/iptables) позволяют соединения по портам 8098 и 8087 между узлами.
После сохранения файла протестируйте конфигурацию и запустите сервис:
riak chkconfig
riak startПроверьте доступность узла:
riak ping
curl -v http://10.1.1.10:8098/types/default/propsОжидаемые результаты: команда riak ping возвращает “pong”, curl даёт HTTP 200 и JSON с настройками типа по адресу /types/default/props.

Важно: выполняйте эти проверки на каждом узле после применения конфигурации.
Шаг 3 — Формирование кластера Riak KV
Далее мы объединим узлы в кластер. Все следующие команды, если не указано иное, выполняйте соответственно на указанных серверах.
Добавление второго узла (riak02)
На riak02 выполните:
riak-admin cluster join [email protected]Затем на riak01 подготовьте план и примените его:
riak-admin cluster plan
riak-admin cluster commitПроверьте статус кластера на riak01:
riak-admin cluster status
Добавление третьего узла (riak03)
На riak03 выполните:
riak-admin cluster join [email protected]Опять же на riak01 выполните:
riak-admin cluster plan
riak-admin cluster commitПроверьте статус кластера:
riak-admin cluster status
Если все узлы в статусе “riak_kv” и их ring-позиции распределены, кластер успешно сформирован.
Шаг 4 — Тестирование записи и репликации
Проверим запись бинарного объекта (картинки) в бакет images и доступ с других узлов.
На riak01 загрузите тестовую картинку:
cd ~/
wget https://vignette.wikia.nocookie.net/nichijou/images/a/a0/113407.jpg -O hakase.jpgЗагрузите объект в Riak через HTTP API:
curl -XPUT http://10.1.1.10:8098/riak/images/hakase.jpg -H "Content-type: image/jpg" --data-binary @hakase.jpgОткройте в браузере адреса других узлов (HTTP):
http://10.1.1.11:8098/riak/images/hakase.jpg

http://10.1.1.12:8098/riak/images/hakase.jpg

Удаление объекта через HTTP API:
curl -XDELETE 'http://10.1.1.10:8098/riak/images/hakase.jpg'Если картинка доступна с других узлов после записи, репликация работает корректно.
Критерии приёмки
- Все три узла запущены и отвечают на riak ping (pong).
- riak-admin cluster status показывает три участника кластера.
- Запись объекта на riak01 возвращает доступ к нему с riak02 и riak03.
- Нет ошибок в логах (/var/log/riak/) при старте и репликации.
Полезные команды — краткий чеклист
- Проверка статуса сервиса: systemctl status riak
- Перезапуск: systemctl restart riak
- Проверка кластера: riak-admin cluster status
- План и коммит: riak-admin cluster plan; riak-admin cluster commit
- Тест HTTP: curl -v http://
:8098/types/default/props
Примеры отказов и когда это не сработает
- Сетевые правила блокируют порты 8098/8087 — узлы не смогут общаться.
- Неправильный nodename или несоответствие IP в конфигурации приводит к отказу соединения между узлами.
- Недостаточный лимит открытых файлов приводит к обрывам при высокой нагрузке.
- Несовместимые версии пакетов Erlang или Riak на разных узлах могут нарушить коммуникацию.
Альтернативные подходы
- Использовать контейнеры (Docker) для изоляции и упрощённого развертывания узлов.
- Рассмотреть управляемые NoSQL решения (например, облачные сервисы) при отсутствии опыта операций с Erlang/кластеризацией.
- Для временных сред можно развернуть одиночный узел Riak в качестве тестового окружения.
Контрольный план для администратора (роль-based checklist)
Администратор перед установкой:
- Проверить сеть и доступность портов между всеми узлами.
- Согласовать IP-адреса и DNS/hosts записи.
- Обеспечить привилегии root и бэкап конфигураций.
После установки:
- Проверить логи /var/log/riak/.
- Настроить мониторинг и бэкап критических данных.
- Обновить документацию с указанием nodename и ring_size.
Мини-методология развёртывания кластера
- Подготовьте ОС и сетевые правила на всех узлах.
- Установите пакет Riak и зависимости.
- Настройте limits.conf и riak.conf с корректными IP и nodename.
- Запустите локально Riak и проверьте ping/HTTP.
- На одном главном узле последовательно присоединяйте остальные узлы через riak-admin cluster join, затем план и commit.
- Выполните тесты записи/чтения с каждого узла.
Краткий словарь терминов
- Узел — отдельный экземпляр Riak на сервере.
- bucket — логическая коллекция объектов в Riak.
- vnode — виртуальный слот кольца распределения данных.
- ring_size — количество виртуальных слотов (по умолчанию 64).
Советы по отладке
- Просмотрите логи: tail -f /var/log/riak/* для поиска ошибок.
- Проверяйте сетевые соединения: telnet
8098, ss -ltnp | grep riak. - Убедитесь, что конфигурация nodename уникальна на каждом узле.
Меры безопасности и производительность
- Отключите публичный доступ к интерфейсу HTTP Riak вне доверенной сети.
- Настройте бэкап и мониторинг при помощи внешних решений.
- В боевой среде тестируйте производительность и подбирайте ring_size и параметры Erlang в зависимости от нагрузки.
Совместимость и миграция
- В этом руководстве используется Riak 2.2.3 и репозиторий Basho для CentOS 7. При миграции на другую версию проверяйте совместимость протоколов (protobuf) и конфигурационных параметров.
Резюме
Быстрая сводка:
- Установите пакет через репозиторий packagecloud.
- Настройте limits.conf и riak.conf с корректными nodename и IP.
- На основном узле последовательно присоедините остальные узлы и примените план кластера.
- Проверьте запись и чтение данных через HTTP API, убедитесь в наличии репликации.
Ссылка на документацию производителя для дальнейшего чтения: http://docs.basho.com/riak/kv/2.2.3/
Важно: следите за логами и сетевой доступностью сервисов. Если нужно, автоматизируйте установку с помощью конфигурационных менеджеров (Ansible, Salt, Puppet).
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента