Развертывание кластера через Ansible¶
В данном разделе приведена информация по развертыванию кластера Picodata из нескольких инстансов, запущенных на разных серверах посредством роли picodata-ansible.
Установка роли¶
Установите роль из репозитория через ansible-galaxy
:
ansible-galaxy install -f git+https://git.picodata.io/picodata/picodata/picodata-ansible.git
Создание директорий¶
В текущей директории создайте поддиректории — это нужно для отделения инвентарных файлов от сценариев (плэйбуков):
mkdir {hosts,playbooks}
Создание инвентарного файла¶
Рассмотрим два сценария: простой кластер с единственным тиром и кластер
из нескольких тиров. Пусть в распоряжении есть два сервера: 192.168.0.1
и
192.168.0.2
.
Создайте инвентарный файл hosts/cluster.yml
и наполните его
в зависимости от нужного сценария содержанием ниже.
Простой кластер на нескольких серверах¶
cluster.yml
all:
vars:
install_packages: true # для установки пакета picodata из репозитория
cluster_name: simple_cluster # имя кластера
first_bin_port: 13301 # начальный бинарный порт для первого инстанса (он же main_peer)
first_http_port: 18001 # начальный http-порт для первого инстанса для веб-интерфейса
tiers: # описание тиров
default: # имя тира default
instances_per_server: 2 # сколько инстансов запустить на каждом сервере
DC1: # Имя датацентра (используется для failure_domain)
hosts: # далее перечисляем серверы в датацентре
server-1: # имя сервера в инвентарном файле (используется для failure_domain)
ansible_host: 192.168.0.1 # IP адрес или fqdn если не совпадает с предыдущей строкой
server-2: # имя сервера в инвентарном файле (используется для failure_domain)
ansible_host: 192.168.0.2 # IP адрес или fqdn если не совпадает с предыдущей строкой
Кластер из двух тиров на нескольких серверах¶
cluster.yml
all:
vars:
install_packages: true # для установки пакета picodata из репозитория
cluster_name: multi_tier_cluster # имя кластера
first_bin_port: 13301 # начальный бинарный порт для первого инстанса (он же main_peer)
first_http_port: 18001 # начальный http-порт для первого инстанса для веб-интерфейса
tiers: # описание тиров
compute:
instances_per_server: 1
replication_factor: 1
host_groups:
- computes
storage:
instances_per_server: 1
replication_factor: 2
host_groups:
- storages
DC1: # Имя датацентра (используется для failure_domain)
hosts: # далее перечисляем серверы в датацентре
server-1: # имя сервера в инвентарном файле (используется для failure_domain)
ansible_host: 192.168.0.1 # IP адрес или fqdn если не совпадает с предыдущей строкой
host_group: 'storages'
server-2: # имя сервера в инвентарном файле (используется для failure_domain)
ansible_host: 192.168.0.2 # IP адрес или fqdn если не совпадает с предыдущей строкой
host_group: 'storages'
server-3: # имя сервера в инвентарном файле (используется для failure_domain)
ansible_host: 192.168.0.3 # IP адрес или fqdn если не совпадает с предыдущей строкой
host_group: 'computes'
Создание плейбука¶
Для подключения роли создайте плэйбук playbooks/picodata.yml
,
добавив в него следующее содержание:
picodata.yml
---
- name: Deploy picodata cluster
hosts: all
become: true
tasks:
- name: Import picodata-ansible role
ansible.builtin.import_role:
name: picodata-ansible
Установка кластера¶
Выполните установку кластера командой:
ansible-playbook -i hosts/cluster.yml playbooks/picodata.yml
Более подробно о доступных переменных в инвентарном файле можно узнать в git-репозитории роли.
См. также:
Управление плагинами¶
C помощью роли picodata-ansible можно также добавлять в кластер
плагины и их конфигурации. Для этого модифицируйте инвентарный файл
hosts/cluster.yml
, добавив в него блок plugins
. Пример инвентарного
файла, поддерживающего установку в кластер c одним тиром тестового
плагина weather:
cluster.yml
all:
vars:
install_packages: true # для установки пакета picodata из репозитория
cluster_name: simple_cluster # имя кластера
first_bin_port: 13301 # начальный бинарный порт для первого инстанса (он же main_peer)
first_http_port: 18001 # начальный http-порт для первого инстанса для веб-интерфейса
tiers: # описание тиров
default: # имя тира default
instances_per_server: 2 # сколько инстансов запустить на каждом сервере
plugins: # описание плагинов
example: # имя плагина в Ansible (может не совпадать с именем в Picodata)
path: '../plugins/weather_0.1.0.tar.gz' # путь к архиву с плагином
config: '../plugins/weather-config.yml' # путь к файлу конфигурации плагина
tiers: # список тиров, на которых будет запущен плагин
- default # имя тира default
DC1: # Имя датацентра (используется для failure_domain)
hosts: # далее перечисляем серверы в датацентре
server-1: # имя сервера в инвентарном файле (используется для failure_domain)
ansible_host: 192.168.0.1 # IP адрес или fqdn если не совпадает с предыдущей строкой
server-2: # имя сервера в инвентарном файле (используется для failure_domain)
ansible_host: 192.168.0.2 # IP адрес или fqdn если не совпадает с предыдущей строкой
Для подключения плагина потребуется сформировать архив из его файлов, а также подготовить файл конфигурации плагина.
См. также:
Модифицировать файл плейбука не требуется.
Выполните установку плагинов в кластер командой:
ansible-playbook -i hosts/cluster.yml playbooks/picodata.yml -t plugins
Примечание
С помощью роли Ansible можно только добавлять плагины в кластер. Удаление производится вручную.