Гид по технологиям

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

• 6 min read • Databases • Обновлено 18 Nov 2025
Riak KV на CentOS 7 — установка и кластер
Riak KV на CentOS 7 — установка и кластер

Схема установки Riak KV на три сервера

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 к каждому серверу
  • Разрешение на установку пакетов и редактирование конфигураций

Важное: все команды из разделов установки и конфигурации выполняйте на всех трёх серверах, где указано явно.

План действий

  1. Установка Riak KV на всех трёх серверах
  2. Базовая конфигурация Riak KV
  3. Формирование кластера (соединение узлов)
  4. Тестирование репликации и операций 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

Дождитесь завершения установки.

Установка Riak KV на CentOS: вывод установки пакета

Шаг 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.

Результат riak ping и проверка HTTP endpoint

Важно: выполняйте эти проверки на каждом узле после применения конфигурации.

Шаг 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

Проверка статуса кластера после добавления riak02

Добавление третьего узла (riak03)

На riak03 выполните:

riak-admin cluster join [email protected]

Опять же на riak01 выполните:

riak-admin cluster plan
riak-admin cluster commit

Проверьте статус кластера:

riak-admin cluster status

Проверка статуса кластера после добавления riak03

Если все узлы в статусе “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

Просмотр картинки через riak02

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

Просмотр картинки через riak03

Удаление объекта через 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.

Мини-методология развёртывания кластера

  1. Подготовьте ОС и сетевые правила на всех узлах.
  2. Установите пакет Riak и зависимости.
  3. Настройте limits.conf и riak.conf с корректными IP и nodename.
  4. Запустите локально Riak и проверьте ping/HTTP.
  5. На одном главном узле последовательно присоединяйте остальные узлы через riak-admin cluster join, затем план и commit.
  6. Выполните тесты записи/чтения с каждого узла.

Краткий словарь терминов

  • Узел — отдельный экземпляр 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).

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро