Перейти к содержанию

Развертывание кластера через Ansible

В данном разделе приведена информация по развертыванию кластера Picodata из нескольких инстансов, запущенных на разных серверах посредством роли picodata-ansible.

Кластер на нескольких серверах

Разворачивание кластера на нескольких серверах отражает сценарии полноценного использования Picodata в распределенной среде.

Предположим, что таких серверов два: 192.168.0.1 и 192.168.0.2. Порядок действий будет следующим:

Установка роли

Установите роль из репозитория через ansible-galaxy:

ansible-galaxy install git+https://git.picodata.io/picodata/picodata/picodata-ansible.git,24.4

Создание каталогов

В текущем каталоге создайте подкаталоги — это нужно для отделения инвентарных файлов от сценариев (плэйбуков):

mkdir {hosts,playbooks}

Создание файла инвентаря

Создайте инвентарный файл hosts/demo.yml следующего содержания:

all:
  vars:
    ansible_user: vagrant                            # пользователь для ssh-доступа к серверам
    install_packages: true                           # для установки пакета picodata из репозитория
    cluster_id: demo                                 # имя кластера
    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 если не совпадает с предыдущей строкой

Создание плейбука

Создайте плэйбук playbooks/cluster_up.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/demo.yml playbooks/cluster_up.yml

Более подробно о доступным переменных в инвентарном файле можно узнать в git-репозитории роли.

См. также: