Первое развертывание с помощью Ansible
В этом руководстве описано, как впервые быстро развернуть Tarantool Data Grid (TDG) с помощью Ansible. Здесь приведен вариант развертывания TDG на двух виртуальных машинах с заданной конфигурацией.
Чтобы развернуть Tarantool Data Grid, вам понадобится RPM-файл (.rpm),
TGZ-файл (tar.gz) или Docker-образ (docker-image.tar.gz). Для
развертывания с помощью Ansible подходят только два из них: RPM- и
TGZ-файл. В этом руководстве для примера используется TGZ-файл. Его
проще развернуть, и вам не потребуется root-доступ.
Скачайте TGZ-файл последней версии в личном кабинете на сайте
tarantool.io.
Убедитесь, что ваш браузер не разархивировал скачанный файл: расширение
файла должно быть tar.gz.
Если у вас нет доступа к личному кабинету, отправьте заявку через форму на этой странице или напишите на sales@tarantool.io.
Чтобы развернуть TDG, вам нужно запустить две виртуальные машины с ОС Linux (желательно CentOS 7/RHEL 7) и доступом по SSH. Если у вас уже установлены приведенные ниже или альтернативные виртуальные машины, то пропустите эту главу. Если нет, то следуйте инструкции.
Установите VirtualBox для запуска виртуальных машин и Vagrant для автоматизации процесса конфигурации. Vagrant подготовит конфигурацию двух виртуальных машин с дополнительными сценариями для развертывания TDG.
Убедитесь, что в переменной окружения $PATH у вас есть VBoxManage.
Проверьте такой командой:
$ which VBoxManage
В скачанном TGZ-файле есть директория под названием deploy. Там
находится Vagrantfile, который автоматизирует создание тестовой среды
для развертывания кластера.
Откройте терминал, распакуйте архив tar.gz, перейдите в директорию
deploy и запустите виртуальные машины:
tar xzf tdg-<VERSION>.tar.gz # замените <VERSION> на версию скачанного TDGcd tdg2/deployvagrant up
Эта команда поднимет две виртуальные машины с CentOS 7 и доступом по SSH
без пароля для пользователя vagrant. IP-адреса этих машин будут такие:
172.19.0.2 и 172.19.0.3.
После создания виртуальных машин установите локально Ansible и Ansible-роль для Tarantool Cartridge (последняя версия 1.x). Если доступна Ansible-роль версии 2.x, можно выбрать ее, но тогда вы можете столкнуться с некоторыми трудностями.
Вот один из способов установки Ansible и Ansible-роли:
pip install ansible~=4.1.0 # версия 4.1 или более поздняя, но не 5.xansible-galaxy install tarantool.cartridge,1.10.0
В директории deploy есть файл hosts.yml. В нем лежит конфигурация
кластера.
Откройте этот файл, чтобы указать cookie для кластера и путь до пакета:
allvars:# cartridge_package_path: "..](../../packages/tdg-ENTER-VERSION-HERE.tgz" # путь относительно расположения плейбука# cartridge_cluster_cookie: "ENTER-SECRET-COOKIE-HERE" # замените на "secret-cookie"
Удалите #, чтобы раскомментировать эти строки, укажите версию TDG, которую вы скачали, и путь к TGZ-файлу. Также задайте cookie для кластера. Это должна быть уникальная строка, но для практики достаточно указать "secret-cookie".
Вот пример:
allvars:cartridge_package_path: "../tdg-2.0.0-1132-g2358e716.tgz"cartridge_cluster_cookie: "secret-cookie"
При необходимости всегда можно отредактировать этот файл, чтобы изменить конфигурацию кластера. Вот информация о разделах файла:
all.vars-- для общих переменных;all.children.tdg_group.hosts-- для параметров экземпляров (инстансов, instances);all.children.tdg_group.children-- для параметров группы экземпляров:- чтобы сгруппировать экземпляры по хосту, задайте для них параметр
ansible_host; - чтобы сгруппировать экземпляры по наборам реплик, задайте для них
параметры
replicaset_alias,roles,failover_priorityи так далее.
- чтобы сгруппировать экземпляры по хосту, задайте для них параметр
Более подробную информацию о параметрах смотрите в документации по Ansible-роли в Tarantool Cartridge.
В директории deploy находятся
Ansible-плейбуки,
которые помогут вам завершить развертывание. Есть два способа развернуть
TDG с помощью плейбуков:
- кластер TDG с полностью сконфигурированной топологией;
- кластер TDG со списком экземпляров (инстансов, instances) без заданной конфигурации.
Чтобы полностью развернуть TDG с топологией, выполните эту команду:
$ ansible-playbook -i hosts.yml playbooks/deploy.yml
Если вы хотите cами задать конфигурацию топологии кластера через веб-интерфейс, запустите плейбук, чтобы развернуть только экземпляры:
$ ansible-playbook -i hosts.yml playbooks/deploy_without_topology.yml
Откройте http://172.19.0.2:8081 в браузере, чтобы увидеть веб-интерфейс кластера. Вот как будет выглядеть кластер, развернутый без топологии:

Если вы развернули экземпляры (инстансы, instances) с топологией, пропустите эту главу.
Если вы развернули экземпляры без топологии, теперь вы можете редактировать топологию: создавать наборы реплик и задавать их параметры в веб-интерфейсе:
-
На вкладке Cluster находятся экземпляры без заданной конфигурации. Выберите экземпляр core с URL
172.19.0.2:3001и нажмите Configure. Появится окно Configure server:
-
В диалоговом окне Configure server укажите значения двух параметров набора реплик: replica set name (имя набора реплик) и role (роль).
Для экземпляра core задайте имя набора реплик "core" и выберите роль "core". После этого нажмите Create replica set, чтобы создать набор реплик.
-
Для остальных экземпляров без заданной конфигурации установите параметры следующим образом:
URL экземпляра | Имя набора реплик | Роли | 172.19.0.2:3002 | runner_1 | runner, connector, failover-coordinator | 172.19.0.2:3003 | storage_1 | storage |
|---|
-
Осталось настроить два экземпляра: storage_1_replica с URL
172.19.0.3:3002и storage_2_replica с URL172.19.0.3:3003.Присоедините их к уже существующим наборам реплик с ролями storage:
- Выберите storage_1_replica и нажмите Configure.
- В диалоговом окне Configure server переключитесь на вкладку Join Replica Set.
- Отметьте storage_1 и нажмите Join replica set.

Для storage_2_replica повторите те же действия, но отметьте storage_2.
После того как вы назначите все роли, нажмите "Bootstrap vshard",
чтобы "включить наборы реплик storage. Это инициализирует модуль
Tarantool vshard. Подробнее об этом модуле можно узнать в
документации по Tarantool.

Вы создали виртуальные сегменты (virtual buckets), которые
распределяются по хранилищам -- экземплярам с ролью storage.

Этот шаг необязателен.
В директории deploy также есть плейбуки, которые запускают или
останавливают экземпляры. Вы можете остановить и отключить все
экземпляры с помощью плейбука stop.yml:
$ ansible-playbook -i hosts.yml playbooks/stop.yml
Запустить и включить все экземпляры можно с помощью плейбука
start.yml:
$ ansible-playbook -i hosts.yml playbooks/start.yml