swift

Swift

Это роль для настройки и управления кластерами OpenStack Swift. В настоящее время она поддерживает узлы PACO, на которых работают все службы Swift: Proxy, Account, Container и Object.

Она будет:

  • Подготавливать узлы Swift, включая настройку SELinux и обеспечение доступа по SSH
  • Добавлять репозитории и устанавливать пакеты
  • Настраивать зависимые службы, такие как логирование, rsyncd и memcached
  • Настраивать keepalived для переключения в случае сбоя VIP-адресов прокси
  • Настраивать службы Swift PACO
  • Создавать начальные аккаунты, контейнеры и объекты
  • Подготавливать диски на каждом узле, форматировать и монтировать в соответствии с кольцами
  • Создавать и распределять кольца
  • Настраивать дисперсию
  • Выполнять простые операционные задачи, такие как:
    • Обновление и распределение колец
    • Перенастройка служб PACO
    • Генерация отчетов о дисперсии и репликации

Требования

Наличие предварительного списка узлов CentOS 8 Stream с настроенной сетью. Кластер требует административный узел (включен в группу swift_admin), с которого управляются все узлы Swift. Это может быть один из ваших узлов Swift, если у вас нет отдельного административного хоста.

Если вы собираете виртуальный кластер Swift, рассмотрите использование роли Ansible csmart.virt_infra по адресу https://github.com/csmart/ansible-role-virt-infra.

Примеры инвентаря и сценариев можно найти по адресу https://github.com/csmart/virt-infra-swift для csmart.virt_infra и csmart.swift.

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

Эта роль имеет ряд переменных по умолчанию, которые распределены по отдельным файлам в папке defaults/main/. Они включают общие настройки для кластера Swift, а также значения по умолчанию для конкретных служб Swift.

  • account-rings.yml
  • account.yml
  • container-rings.yml
  • container.yml
  • dispersion.yml
  • hash.yml
  • networks.yml
  • object-rings.yml
  • object.yml
  • packages.yml
  • proxy.yml
  • swift.yml
  • tempauth.yml

Обязательные глобальные переменные, которые пользователь должен определить, включают:

  • swift_hash_suffix - суффикс хеша кластера, после его установки не следует изменять
    • значение по умолчанию 07b4ef9c-2e01-4ea2-a109-5ffc5273225f
  • swift_hash_prefix - префикс хеша кластера, после его установки не следует изменять
    • значение по умолчанию f9175259-ace0-48bb-af9d-e7ac505b89d2
  • swift_outward_subnet - маршрутизируемая подсеть CIDR для внешних соединений (для узлов прокси)
    • значение по умолчанию 203.0.113.0/24
  • swift_cluster_subnet - подсеть CIDR для связи в кластере
    • значение по умолчанию 192.0.2.0/24
  • swift_replication_subnet - подсеть CIDR для репликации (может совпадать с кластером)
    • значение по умолчанию 198.51.100.0/24

Обязательные переменные, специфичные для узлов, которые пользователь должен определить, включают:

  • swift_outward_ip - IP-адрес в общей сети

    • например, 203.0.113.11
  • swift_cluster_ip - IP-адрес в сети кластера

    • например, 192.0.2.11
  • swift_replication_ip - IP-адрес в сети репликации

    • например, 198.51.100.11
  • swift_vips - список VIP-адресов прокси, 4-й октет IP

    • Каждый узел прокси должен указать 4-й октет VIP-адреса в порядке предпочтения. Например, исходя из стандартной внешней подсети 203.0.113.0/24, вот узел, который хочет VIP 203.0.113.111, 203.0.113.112 и 203.0.113.113.

      swift_vips:
        - 111
        - 112
        - 113
      
  • swift_rings_disks - список словарей, определяющих, какие диски использовать для каких колец

    • Диски каждого узла должны включать путь и вес для кольца. Например, вот SCSI-диск, который будет использоваться для объектов, и NVMe, который будет использоваться для как аккаунтов, так и контейнеров.

      swift_rings_disks:
        - disk:
            device: sdb
            rings:
            - name: account
              weight: 0
            - name: container
              weight: 0
            - name: object
              weight: 100
        - disk:
            device: nvme0n1
            rings:
            - name: account
              weight: 100
            - name: container
              weight: 100
            - name: object
              weight: 0
      

Зависимости

Нет.

Пример сценария

Репозиторий virt-infra-swift по адресу https://github.com/csmart/virt-infra-swift предоставляет набор примеров сценариев и образец инвентаря.

Ваш инвентарь должен включать следующие группы:

  • swift (или all)
  • swift_admin
  • swift_proxy
  • swift_account
  • swift_container
  • swift_object

Вот пример инвентаря для кластера PACO Swift из трех узлов с необходимыми группами.

swift:
  hosts:
    swift-admin:
    swift-[01:03]:
  children:
    swift_admin:
      hosts:
        swift-admin:
    swift_proxy:
      hosts:
        swift-[01:03]:
    swift_account:
      hosts:
        swift-[01:03]:
    swift_container:
      hosts:
        swift-[01:03]:
    swift_object:
      hosts:
        swift-[01:03]:

После того как у вас будет базовый инвентарь, создание базового сценария должно быть простым.

---
- hosts: swift
  tasks:
    - include_role:
        name: csmart.swift

Выполнение сценария запустит всю роль и стандартный набор задач в порядке.

ansible-playbook -i inventory/ site.yml

Роль также включает теги для каждого типа задачи, поэтому вы можете создать один или несколько сценариев для всех или конкретных тегов.

---
- hosts: swift
  tasks:
    - include_role:
        name: csmart.swift
      tags:
        - account
        - common
        - config
        - container
        - disks
        - dispersion
        - hosts
        - keepalived
        - logging
        - memcached
        - object
        - packages
        - prep
        - proxy
        - rings
        - rsyncd
        - selinux
        - services
        - system
        - update

Затем запустите сценарий с конкретными тегами, например, только для перенастройки служб аккаунтов.

ansible-playbook -i inventory/ site.yml --tags account

Лицензия

GPLv3+

Информация об авторе

Крис Смарт https://blog.christophersmart.com

О проекте

Define and manage guests and networks on a KVM host with Ansible

Установить
ansible-galaxy install csmart/ansible-role-swift
Лицензия
gpl-3.0
Загрузки
87
Владелец
Just another Linux guy.