Создание кластера Riak на сервере Ubuntu
Cloud Server, Ubuntu, VPS | Комментировать запись
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: Cloud Server, Riak, Ubuntu, Ubuntu 12.04, VPS