Skip to content

Роль ansible для разворачивания кластера picodata

Notifications You must be signed in to change notification settings

picodata/picodata-ansible

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

picodata-ansible

Роль для разворачивания кластера picodata

Требования

Наличие подготовленных серверов с поддерживаемыми ОС (список см. https://picodata.io/download/) с необходимым количеством ресурсов из минимального расчета на 1 инстанс (без учета ресурсов для ОС): 1 CPU, 64 Mb RAM, 512Mb HDD

Переменные роли

Внимание!

Все переменные и настройки из конфигурационного файла используются только один раз при первоначальном поднятии кластера!!!

В дальнейшем, на данный момент, изменить эти настройки можно только через lua!!!


Переменные по умолчанию располагаются в файле defaults/main.yml, эти переменные можно переопределять в инвентарном файле

Помимо переменных по умолчанию используется словарь tiers с указанием внутри

  • имени тира (например router)
  • количество инстансов на каждом сервере (instances_per_server)
  • фактор репликации (replication_factor) для тира, по умолчанию 1
  • параметров запуска box.cfg инстансов тира (tnt_params)

Пример словаря tiers:

tiers:
  default:                     # имя тира default
    instances_per_server: 2    # сколько инстансов запустить на каждом сервере
    replication_factor: 3      # фактор репликации
    config:
      memtx:
        memory: 73400320               # количество памяти, предоставляемое непосредственно на хранение данных в байтах
        checkpoint_interval: 7200      # период активности службы создания снапшотов (checkpoint daemon) в секундах
        checkpoint_count: 3            # максимальное количество снапшотов, хранящихся в директории data_dir
      iproto:
        max_concurrent_messages: 1024  # максимальное количество сообщений, которое Picodata обрабатывает параллельно

Полное описание всех переменных роли см. в docs/variables.md

Зависимости

Пока нет

Использование роли

Вы можете инсталлировать роль через ansible-galaxy:

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

или добавить ее в файл requirements.yml:

- src: https://git.picodata.io/picodata/picodata/picodata-ansible.git
  scm: git

и затем выполнить команду

ansible-galaxy install -fr requirements.yml

Примеры


Инвентарный файл

Пример инвентарного файла для 3-х серверов, расположенных в 3 дата центрах DC1, DC2 и DC3, имя файла hosts.yml

all:
  vars:
    ansible_user: vagrant      # пользователь для ssh-доступа к серверам           

    repo: 'https://download.picodata.io'  # репозиторий, откуда инсталлировать пакет picodata

    cluster_name: test             # имя кластера
    admin_password: "123asdZXV"    # пароль пользователя admin

    audit: false                   # отключение айдита
    log_level: info                # уровень отладки
    log_to: file                   # вывод логов в файлы, а не в journald

    conf_dir: '/etc/picodata'      # каталог для хранения конфигурационных файлов
    data_dir: '/var/lib/picodata'  # каталог для хранения данных
    run_dir: '/var/run/picodata'   # каталог для хранения sock-файлов
    log_dir: '/var/log/picodata'   # каталог для логов и файлов аудита

    purge: true   # при очистке кластера удалять в том числе все данные и логи с сервера

    listen_address: '{{ ansible_fqdn }}'     # адрес, который будет слушать инстанс, по умолчанию ansible_fqdn

    first_bin_port: 13301     # начальный бинарный порт для первого инстанса
    first_http_port: 18001    # начальный http-порт для первого инстанса для веб-интерфейса
    first_pg_port: 15001      # начальный номер порта для postgress-протокола инстансов кластера

    tiers:                         # описание тиров (тиры пока нигде не используются, поэтому нет смсыла сосздавать дополнительные тиры)
      default:                     # имя тира default
        instances_per_server: 2    # сколько инстансов запустить на каждом сервере
        replication_factor: 3      # фактор репликации
        config:
          memtx:
            memory: 73400320               # количество памяти, предоставляемое непосредственно на хранение данных в байтах
            checkpoint_interval: 7200      # период активности службы создания снапшотов (checkpoint daemon) в секундах
            checkpoint_count: 3            # максимальное количество снапшотов, хранящихся в директории data_dir
        host_groups:
          - STORAGES

      router:                     # имя тира default
        instances_per_server: 1    # сколько инстансов запустить на каждом сервере
        replication_factor: 1      # фактор репликации
        config:
          memtx:
            memory: 70108864
          iproto:
            max_concurrent_messages: 1024  # максимальное количество сообщений, которое Picodata обрабатывает параллельно
        host_groups:
          - ROUTERS

    plugins:
      example:
        path: '../plugins/weather_0.1.0-ubuntu-focal.tar.gz'
        config: '../plugins/weather-config.yml'
        tiers:
          - router
          - default

DC1:                               # Датацентр (failure_domain)
  hosts:                           # серверы в датацентре
    server-1-1:                    # имя сервера в инвентарном файле
      ansible_host: 192.168.19.21  # IP адрес или fqdn если не совпадает с предыдущей строкой
      host_group: 'STORAGES'
    server-1-2:                    # имя сервера в инвентарном файле
      ansible_host: 192.168.19.22  # IP адрес или fqdn если не совпадает с предыдущей строкой
      host_group: 'ROUTERS'

DC2:                               # Датацентр (failure_domain)
  hosts:                           # серверы в датацентре
    server-2-1:                    # имя сервера в инвентарном файле
      ansible_host: 192.168.20.21  # IP адрес или fqdn если не совпадает с предыдущей строкой
      host_group: 'STORAGES'

DC3:                               # Датацентр (failure_domain)
  hosts:                           # серверы в датацентре
    server-3-1:                    # имя сервера в инвентарном файле
      ansible_host: 192.168.21.21  # IP адрес или fqdn если не совпадает с предыдущей строкой
      host_group: 'STORAGES'

Плейбук

Пример плейбука picodata.yml:

---
- name: Deploy picodata cluster
  hosts: all
  become: false

  tasks:

  - name: Import picodata-ansible role
    ansible.builtin.import_role:
      name: picodata-ansible

Примеры команд запуска роли

Пример команды для установки кластера:

ansible-playbook -i hosts.yml picodata.yml

Пример команды для удаления кластера:

ansible-playbook -i hosts.yml picodata.yml -t remove

Если при запуске будет выставлена переменная purge, то кластер удалится вместе с данными.

ansible-playbook -i hosts.yml picodata.yml -t remove -e purge=true

Пример команды для бэкапа кластера:

ansible-playbook -i hosts.yml picodata.yml -t backup

Пример команды для восстановления кластера:

ansible-playbook -i hosts.yml picodata.yml -t restore

Полное описание всех тэгов роли см. в docs/tags.md

Лицензия

BSD

About

Роль ansible для разворачивания кластера picodata

Resources

Stars

Watchers

Forks

Packages

No packages published