Создание кластера Riak на сервере Ubuntu

Riak – это распределенная база данных, обеспечивающая простое, отказоустойчивое и масштабируемое управление данными.

В данном руководстве показано, как установить и настроить кластер Riak, используя 64-битный экземпляр виртуального выделенного сервера Ubuntu 12.04.

Примечание: для выполнения руководства было использовано 5 отдельных облачных серверов.

Веб-сайт проекта Riak рекомендует использовать машины с минимум 4GB оперативной памяти для лучшей производительности кластера, что выполнено в данном руководстве.

Для настройки кластера используется учетная запись root. Обратите внимание: на каждый сервер нужно войти как пользователь root.

Установка Riak

Примечание: описанные в данном разделе действия необходимо проделать на каждом сервере кластера.

С сайта Riak можно загрузить предварительно скомпилированные бинарные пакеты для установки базы данных в Ubuntu.

Для начала нужно настроить менеджер пакетов apt-get для работы с apt-репозиторием Riak, добавив его в список исходных кодов:

curl http://apt.basho.com/gpg/basho.apt.key | apt-key add -
bash -c "echo deb http://apt.basho.com $(lsb_release -sc) main > /etc/apt/sources.list.d/basho.list"

Теперь можно обновить базу данных apt-get и приступить к установке Raik:

apt-get update
apt-get install riak

Готово! Теперь система хранения данных Riak установлена. Не забудьте повторить описанный в разделе процесс на остальных серверах кластера.

Настройка Riak

Теперь, когда система Riak установлена, нужно настроить ее на каждом узле кластера. Опять же, необходимо повторить данные действия для каждой машины.

Редактирование app.config

Убедитесь, что на данный момент нет запущенных экземпляров Riak, затем перейдите в каталог конфигураций программы и откройте главный конфигурационный файл:

riak stop
cd /etc/riak
nano app.config

Чтобы настройки системы хранения данных соответствовали настройкам машины, нужно изменить два значения.

Найдите следующую строку и внесите в нее IP-адрес машины.

{pb, [ {"IP.Адрес", 8087 } ]},

Затем выполните то же самое для строки:

{http, [ {"IP.Адрес", 8098 } ]},

Сохраните и закройте файл.

Редактирование vm.args

Теперь откройте файл vm.args:

nano vm.args

Найдите и отредактируйте строку, содержащую имя узла. Она должна выглядеть так:

-name riak@IP.Адрес

Сохраните и закройте файл.

Запуск Riak

Запустить узлы Riak просто:

riak start
!!!!
!!!! WARNING: ulimit -n is 1024; 4096 is the recommended minimum.
!!!!

Скорее всего, на экране появится указанное выше предупреждение.

Его можно временно обойти (о том, как сделать это исправление постоянным – позже):

riak stop
ulimit -n 65536

Теперь снова запустите Riak, предупреждение должно исчезнуть.

Создание кластера

Согласно руководству, на данный момент есть пять подготовленных и настроенных узлов. Однако в настоящее время они работают независимо друг от друга. Все они самостоятельно обрабатывают свои независимые наборы данных и никак не взаимодействуют. В этом разделе показано, как объединить их в кластер.

Далее нужно присоединить узлы кластера к первому узлу; в результате Riak будет автоматически перераспределять данные между ними.

Перейдите на второй узел и соедините экземпляр системы Riak с первым узлом.

riak-admin cluster join riak@First.Riak.IP
Success: staged join request for 'riak@Second.Riak.IP' to 'riak@1First.Riak.IP'

Это позволяет настроить присоединение, но сам процесс соединения узлов еще не выполнен. Просмотрите запланированные изменения:

riak-admin cluster plan

Данная команда покажет результат запланированного действия. Прежде чем выполнять действие, система Riak заставляет просматривать запланированные изменения.

Если планируемое действие выглядит правильно, подтвердите его:

riak-admin cluster commit
Cluster changes committed

Чтобы просмотреть новую кластерную группу, наберите:

riak-admin member-status

Повторите описанную процедуру на остальных узлах кластера.

Оптимизация настроек Riak

Теперь все узлы кластера взаимодействуют между собой. Пора вернуться к настройке системы и исправить некоторые далеко не идеальные параметры.

Для начала нужно исправить настройку ulimit (предупреждение, связанное с ней, появилось при запуске Riak). Чтобы навсегда изменить эту настройку, создайте файл:

nano /etc/default/riak

Внесите в него следующую строку, которая будет выполняться при каждом запуске Riak.

ulimit -n 65536

Сохраните и закройте файл.

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

riak-admin diag
[critical] vm.swappiness is 60, should be no more than 0
[critical] net.core.wmem_default is 229376, should be at least 8388608
[critical] net.core.rmem_default is 229376, should be at least 8388608
[critical] net.core.netdev_max_backlog is 1000, should be at least 10000
[critical] net.core.somaxconn is 128, should be at least 4000
[critical] net.ipv4.tcp_max_syn_backlog is 2048, should be at least 40000
[critical] net.ipv4.tcp_fin_timeout is 60, should be no more than 15
[critical] net.ipv4.tcp_tw_reuse is 0, should be 1
[notice] Data directory /var/lib/riak/bitcask is not mounted with 'noatime'. Please remount its disk with the 'noatime' flag to improve performance.

Вероятнее всего, на экране также появится длинный список сообщений, который начинается так:

[warning] The following preflists do not satisfy the n_val:

Это значит, что в данном кластере недостаточно узлов для корректного распределения данных. Эти сообщения исчезнут, если добавить в кластер больше узлов.

На данном этапе нужно отредактировать все параметры с пометкой «critical». Для этого существует такой синтаксис:

sysctl setting=value

Руководствуясь выводом команды riak-admin diag, используйте вышеприведенный формат, чтобы оптимизировать настройки узла.

Затем перезапустите команду диагностики riak-admin diag, чтобы убедиться, что все нужные параметры были отредактированы.

riak-admin diag
[notice] Data directory /var/lib/riak/bitcask is not mounted with 'noatime'. Please remount its disk with the 'noatime' flag to improve performance.

Примечание: можете просто проигнорировать сообщение с пометкой «notice».

Итак, все критические значения параметров узла откорректированы согласно требованиям программы. Но эти исправления действительны только для текущей сессии. Чтобы сделать эти значения постоянными, отредактируйте файл sysctl.conf:

nano /etc/sysctl.conf

Найдите все параметры и отредактируйте их значения согласно выводу команды riak-admin diag. Если в данном файле нет таких параметров, внесите их в конец файла в формате:

setting=value

Теперь узел настроен верно. Повторите все инструкции данного раздела на остальных узлах.

Тестирование кластера

Для проверки работы кластера можно просто добавить файл. Для начала выберите какое-нибудь изображение и загрузите его:

cd ~
wget https://www.some-site.com/some_image.png

Примечание: не забудьте указать настоящую ссылку на изображение.

Теперь нужно поместить изображение в кластер при помощи следующей команды.

Укажите IP узла и http-порт из файла /etc/riak/app.config (по умолчанию это порт 8098).

curl -XPUT http://IP_Адрес:Порт/riak/images/image_1.png -H "Content-type: image/png" --data-binary @some_image.png

Теперь изображение можно увидеть в браузере, направив его на url:

http://IP_Адрес:Порт/riak/images/image_1.png

Если изображение появилось на экране, значит, все работает должным образом.

Итоги

Теперь система хранения данных Riak установлена и настроена должным образом, а кластер автоматически распределяет данные между узлами.

Tags: , , , ,

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