Развертывание кластера через 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_id: 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_id: 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-репозитории роли.
См. также: