VK Private Cloud logo
Помощь
Обновлена 17 июля 2026 г. в 15:55

Подготовка параметров для инсталляции

Подготовка параметров для инсталляции состоит из следующих последовательных шагов:

  1. Распаковка архива дистрибутива.
  2. Создание конфигурации Ansible.
  3. Подготовка inventory окружения.
  4. Оптимизация инсталлятора/deploy-ноды/ceph.

Также выполните обновление версии ядра до целевого (см. раздел Обновление версии ядра на серверах кластера) и, при необходимости, подключите RS-серверы Платформы к BGP-инфраструктуре (см. раздел Подключение RS-сервера к другим AS).

После настройки всех параметров inventory можете переходить к запуску инсталлятора (см. раздел Запуск инсталлятора).

Распаковка архива дистрибутива

  1. Распакуйте архив дистрибутива и перейдите в распакованный архив:

    RELEASE_NAME='3.0.7'tar -xzf repos_mcs_distr_box-${RELEASE_NAME}tar.gz \&& cd repos_mcs_distr_box-${RELEASE_NAME}/ansible-openstack/inventoryls -l

Создание конфигурации Ansible

Файл конфигурации Ansible поставляется вместе с дистрибутивом. После распаковки дистрибутива он располагается в /home/centos/repos_mcs_distr_box-${RELEASE_NAME}/ansible-openstack/ansible.cfg

Чтобы создать конфигурацию Ansible:

  1. Создайте файл с новым паролем для Ansible vault:

    echo "my-vault-secret-password" > ~/.ansible.vault-vkcloud
  2. Добавьте следующее содержимое в ansible-openstack/ansible.cfg внутри параметра [defaults]:

    vault_identity_list = vkcloud@~/.ansible.vault-vkcloud
  3. Удалите старый и создайте новый зашифрованный файл с переменными через vault, выполнив команду:

    rm -f group_vars/vkcloud/vaultansible-vault create --encrypt-vault-id vkcloud group_vars/vkcloud/vault
  4. Файл откроется в текстовом редакторе. Вставьте содержимое следующего вида:

    # Пароль от IPMI-системы (от администратора и от системы мониторинга)passwords:  ipmi_admin: <PASSWORD>  ipmi_ipmimon: <PASSWORD># Сервисы для инвентаризации — оставьте их фиктивнымиvault_inventory_token: xxxxxxx-xxxx-xxxx-xxxxvault_dcmap_api_key: XXXXXX# SSL-cертификаты и ключи для пользователей (сертификаты и ключи, которые были запрошены в техпаспорте проекта).vault_ssl_certs:    # Название данной переменной должно полностью совпадать с указанным в "ssl_sertificate_name" ниже.    wildcard.vkc.test.domain: |        -----BEGIN CERTIFICATE-----        MIIGXjCCBUagAwIBA...        ----END CERTIFICATE-----        -----BEGIN PRIVATE KEY-----        MIIEvgIBADANBgkqhkiG9...        -----END PRIVATE KEY-----    # CA- и промежуточные сертификаты добавьте только в переменную "trusted_ca_certs" (см. ниже)
  5. Сохраните изменения и выйдите из режима редактирования. Содержимое сохранится в зашифрованном виде в файле group_vars/vkcloud/vault.

Подготовка inventory окружения

Подготовка параметров для автоматической генерации inventory состоит из следующих шагов:

  1. Распаковка архива с генератором:

    RELEASE_NAME='3.0.7'tar -xzf invgen-1.0.0-box-3.0.7-202211170813.tar.gz
  2. Настройка inventory для установки Ceph.

  3. Подготовка файла конфигурации minimal.yml.

  4. Запуск генератора.

Настройка inventory для установки Ceph

Чтобы настроить inventory для установки Ceph:

  1. Перейдите в директорию ceph-ansible с дистрибутивом:

    cd repos_mcs_distr_box-${RELEASE_NAME}/ceph-ansible
  2. Заполните файл inventory по примеру ниже:

    [mons]10.30.10.1610.30.10.1710.30.10.18[osds]10.30.10.1610.30.10.1710.30.10.18[mdss]10.30.10.1610.30.10.18[mgrs]10.30.10.1710.30.10.18
  3. Внесите изменения в файле group_vars/all.yml (варианты для замены используйте из паспорта проекта):

    public_network: "10.30.10.0/26" # сеть Сeph Externalcluster_network: "10.30.11.0/26" # сеть Сeph Internalmonitor_interface: "bond0.4007" # сеть Ceph Externalosd_pool_default_size: 3osd_pool_default_min_size: 2osd crush initial weight: <РАЗМЕР_ПАРТИЦИИ> # Например если 3.5 тб, то вставьте 3.5ceph_docker_registry: deploy001.vkc.test.domain:5553
  4. Создайте партиции с помощью скрипта mcs-part-tool на каждом хосте будущего кластера Ceph:

    1. Скопируйте каталог со скриптом на все серверы кластера Ceph:

      scp -r ~/repos_mcs_distr_box-${RELEASE_NAME}/mcs-ceph-deploy csn00x:/home/centos/
    2. Проверьте типы существующих дисков на всех хостах Ceph (0 — SSD, 1 — HDD):

      Выполнение команды проверки типов дисков
      lsblk -o name,rota
      Пример ожидаемого результата
      NAME  ROTAsdf      0sdd      0sdb      1sdg      0sde      0sdc      0sda      1sdh      0
    3. Определите, какие диски можно использовать под Ceph, а какие использованы под ОС:

      Выполнение команды отображения информации о дисках
      lsblk
      Пример ожидаемого результата
      NAME        MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINTsdf           8:80   0  3.5T  0 disksdd           8:48   0  3.5T  0 disksdb           8:16   0  1.8T  0 disk├─sdb2        8:18   0  201M  0 part│ └─md125     9:125  0  201M  0 raid1 /boot/efi├─sdb3        8:19   0  1.8T  0 part│ └─md126     9:126  0  1.8T  0 raid1 /└─sdb1        8:17   0    1G  0 part  └─md127     9:127  0 1023M  0 raid1 /bootsdg           8:96   0  3.5T  0 disksde           8:64   0  3.5T  0 disksdc           8:32   0  3.5T  0 disksda           8:0    0  1.8T  0 disk├─sda2        8:2    0  201M  0 part│ └─md125     9:125  0  201M  0 raid1 /boot/efi├─sda3        8:3    0  1.8T  0 part│ └─md126     9:126  0  1.8T  0 raid1 /└─sda1        8:1    0    1G  0 part  └─md127     9:127  0 1023M  0 raid1 /bootsdh           8:112  0  3.5T  0 disk

      В примере выше диски sda и sdb заняты под ОС, остальные свободные размером 3.5 ТБ с типом SSD.

    4. Создайте переменную DEVICES и вставьте туда свободные диски:

      DEVICES='sdfsddsdgsdesdcsdh'
    5. Убедитесь, что установлена утилита sgdisk:

      sudo yum install gdisk
    6. Выполните команду (скрипт ./mcs-part-tool должен быть в том месте, откуда выполняется команда):

      for DEVICE in $DEVICES; do SIZE_B=$(( $(cat /sys/block/${DEVICE}/size) * 512 ));	SIZE_OSD_B=$(( (${SIZE_B} / 2) - (101 * 1024 * 1024) ));	SIZE_OSD_KB=$(( ${SIZE_OSD_B} / 1024 ));	FULL_DEVICE=/dev/$DEVICE;	echo ${SIZE_B} ${SIZE_OSD_B};	/sbin/sgdisk  --zap ${FULL_DEVICE};	./mcs-part-tool create ${DEVICE} 1 102400K;	./mcs-part-tool create ${DEVICE} 3 102400K;	./mcs-part-tool create ${DEVICE} 2 ${SIZE_OSD_KB}K;	./mcs-part-tool create ${DEVICE} 4 ${SIZE_OSD_KB}K;	./mcs-part-tool mark ${DEVICE} 1 osd;	./mcs-part-tool mark ${DEVICE} 3 osd;	./mcs-part-tool mark ${DEVICE} 2 block;	./mcs-part-tool mark ${DEVICE} 4 block;done
    7. Выберите имена партиций, которые будут использоваться для заполнения файла group_vars/osd.yml:

      Выполнение команды поиска партиций
      lsblk | grep -vE 'sda|sdb|md|100M'
      Пример ожидаемого результата
      NAME       MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINTsdf          8:80   0  3.5T  0 disk├─sdf4       8:84   0  1.8T  0 part└─sdf2       8:82   0  1.8T  0 partsdd          8:48   0  3.5T  0 disk├─sdd2       8:50   0  1.8T  0 part└─sdd4       8:52   0  1.8T  0 partsdg          8:96   0  3.5T  0 disk├─sdg4       8:100  0  1.8T  0 part└─sdg2       8:98   0  1.8T  0 partsde          8:64   0  3.5T  0 disk├─sde2       8:66   0  1.8T  0 part└─sde4       8:68   0  1.8T  0 partsdc          8:32   0  3.5T  0 disk├─sdc2       8:34   0  1.8T  0 part└─sdc4       8:36   0  1.8T  0 partsdh          8:112  0  3.5T  0 disk├─sdh4       8:116  0  1.8T  0 part└─sdh2       8:114  0  1.8T  0 part
  5. Внесите изменения в файле group_vars/osds.yml:

    1. Переименуйте существующий файл:

      mv group_vars/osds.yml{,.old}
    2. Создайте новый файл osds.yml со следующим содержимым:

      dummy:cluster: cephcrush_rule_config: falsecreate_crush_tree: truelvm_volumes:  - data: /dev/sdf2  - data: /dev/sdf4  - data: /dev/sdd2  - data: /dev/sdd4  - data: /dev/sdg2  - data: /dev/sdg4  - data: /dev/sde2  - data: /dev/sde4  - data: /dev/sdc2  - data: /dev/sdc4  - data: /dev/sdh2  - data: /dev/sdh4osds_per_device: 2

      Если на разных csn-серверах получились разноимённые пути к разделам, удалите переменную lvm_volumes из файла group_vars/osd.yml и переместите удалённые данные в yml-файлы новой папки host_vars:

      Команда создания новой папки host_vars
      mkdir host_vars
      Открытие файла csn01.yml
      vi host_vars/csn01.yml
      Перемещение значений переменной lvm_volumes в csn01.yml
      lvm_volumes:  - data: /dev/sdf2  - data: /dev/sdf4  - data: /dev/sdd2  - data: /dev/sdd4
      Открытие файла csn02.yml
      vi host_vars/csn02.yml
      Перемещение значений переменной lvm_volumes в csn02.yml
      lvm_volumes:  - data: /dev/sdf1  - data: /dev/sdf5  - data: /dev/sdd3  - data: /dev/sdd1
      Открытие файла csn03.yml
      vi host_vars/csn03.yml
      Перемещение значений переменной lvm_volumes в csn03.yml
      lvm_volumes:  - data: /dev/sdf2  - data: /dev/sdf4  - data: /dev/sdd2  - data: /dev/sdd1

Подготовка файла конфигурации minimal.yml

Заполните файл minimal.yml, поставляемый в дистрибутиве Платформы, значениями из паспорта проекта. В таблице 1 приведено описание переменных файла с примерами заполнения.

Таблица 1 — Описание параметров файла minimal.yml

Переменная

Пример заполнения

Описание, ссылка на Техпаспорт

stand_domain_name

private.infra.devmail.ru

Вкладка «1. Требования к инфраструктуре», п. 2.5а

availability_zone1

AZ1

Заполнить значением AZ1, поскольку в Платформы на текущий момент поддерживается только одна зона доступности

ext_dns_server

[10.30.3.22] или [10.30.3.22,10.30.3.23] (если несколько)

Вкладка «1. Требования к инфраструктуре», таблица 4.1

ntp_hosts

[10.30.3.22] или [10.30.3.22,10.30.3.23] (если несколько)

Вкладка «1. Требования к инфраструктуре», таблица 4.1

deploy_node_ip

10.30.3.10

Вкладка «3. Список сетевых адресов», сервер с ролью Deploy, IP-адрес в Management сети

backup_node_ip

10.30.3.21

Вкладка «3. Список сетевых адресов», сервер с ролью Logging\Monitoring, IP-адрес в Management сети

network.internal

eth0

Настройка сетевых интерфейсов в сети для серверов с ролью Controlplane.

Интерфейс подключенный к сети Management

network.extnet

eth1

Настройка сетевых интерфейсов в сети для серверов с ролью Controlplane.

Интерфейс подключенный к сети Cloud External

network.portal

eth2

Настройка сетевых интерфейсов в сети для серверов с ролью Controlplane.

Интерфейс подключенный к сети Public API Transport

compute_network.internal

eth0

Настройка сетевых интерфейсов в сети для серверов с ролью Controlplane.

Интерфейс подключенный к сети Management

compute_network.extnet

eth1

Настройка сетевых интерфейсов в сети для серверов с ролью Controlplane.

Интерфейс подключенный к сети Cloud External

compute_network.storage

eth2

Настройка сетевых интерфейсов в сети для серверов с ролью Controlplane.

Интерфейс подключенный к сети Сeph External

ceph_network.internal

eth0

Настройка сетевых интерфейсов в сети для серверов с ролью Controlplane.

Интерфейс подключенный к сети Management

ceph_network.storage

eth1

Настройка сетевых интерфейсов в сети для серверов с ролью Controlplane.

Интерфейс подключенный к сети Сeph External

rs_network.internal

eth0

Настройка сетевых интерфейсов в сети для серверов с ролью Controlplane.

Интерфейс подключенный к сети Management

bgp_private_virtual_ips

[10.30.4.3, 10.30.4.4, 10.30.4.5]

Вкладка «3. Список сетевых адресов», указать IP всех серверов с ролью Controlplane, IP-адрес из сети Private API Loopbacks

bgp_public_virtual_ips

[10.30.6.3, 10.30.6.4, 10.30.6.5]

Вкладка «3. Список сетевых адресов», указать IP всех серверов с ролью Controlplane, IP-адрес из сети Public API Loopback

networks

Перечисление сетей проекта

blackhole

[]

Сети, пакеты из которых будут «отправляться в никуда» на серверах, если выйдут из VxLAN

i_networks

[10.30.3.0/24]

Вкладка «1. Требования к инфраструктуре», таблица 2.2 «Список необходимых сетей», сеть Management

storage_networks

[10.30.10.0/26]

Вкладка «1. Требования к инфраструктуре», таблица 2.2 «Список необходимых сетей», сеть Сeph External

external

[10.31.0.0/16]

Вкладка «1. Требования к инфраструктуре», таблица 2.2 «Список необходимых сетей», сеть Cloud External

external_networks_extend

Блок с описанием внешних сетей

external_networks_extend.<ПОДСЕТЬ_С_РАЗРЯДНОСТЬЮ>

"10.31.0.0/16":

Подсеть из блока networks.external в формате <адрес подсети>/<разрядность>:

external_networks_extend.vlan

611

Вкладка «1. Требования к инфраструктуре», таблица 2.2 «Список необходимых сетей», VLAN (если используется) сети Cloud External

Раскомментируйте этот параметр, если используется VLAN

external_networks_extend.network_name

external

Вкладка «1. Требования к инфраструктуре», таблица 2.2 «Список необходимых сетей», имя сети Cloud External как оно будет отображаться в GUI Платформы

shared

True

Является ли сеть Shared. Вкладка «1. Требования к инфраструктуре», таблица 2.2 «Список необходимых сетей».

True, если для сети Cloud External в столбце «Доступ из корпоративной сети» содержит значение Пользователям. Иначе — False

allocation_pools

Блок IP-адресов для обозначения части external-сети, которая будет использоваться Платформой.

Укажите всю сеть External, за исключением уже зарезервированных адресов, GW/cpn/compute/etc

allocation_pools.start

10.31.10.0

Начало пула

allocation_pools.end

10.31.99.254

Конец пула

gateway_ip

10.31.0.1

Шлюз external-сети

enable_dhcp

true

Включение динамического выделения IP для ВМ

calico_peer_interface

eth0

Интерфейс Management сети на серверах с ролью Route Server

dns_search

[]

Список доменов для добавления в /etc/resolv.conf

consul_dns_interface_aliases

Блок алиасов интерфейсов для Consul DNS

deploy_node_ip

10.30.3.10

Вкладка «3. Список сетевых адресов», IP-адрес сервера с ролью Deploy из сети Management. Переменная используется, в том числе, как адрес деплой-ноды с Nexus

deploy_node_name

deploy001.local:8081

Вкладка «3. Список сетевых адресов», IP-адрес:порт сервера с ролью Deploy из сети Management.

<HOSTNAME>:<ПОРТ_NEXUS_РЕПОЗИТОРИЯ>

По умолчанию при установке из дистрибутива используется порт 8081

s3_host

"s3.test.local" или 10.30.3.21

URL или IP-адрес точки подключения к S3.

S3 может устанавливаться как сервис на сервер с ролью Logging\Monitoring.

s3_port

9000

Порт сервиса S3.

S3 может устанавливаться как сервис на сервер с ролью Logging\Monitoring.

kubedns

[10.16.8.226]

IP-адрес из сети K8s Internal (подсеть для служб Kubernetes), который будет присвоен сервису CoreDNS в Kubernetes

kube_cluster_subnet

10.16.8.192/26

Подсеть для служб Kubernetes

Вкладка «1. Требования к инфраструктуре», таблица 2.2 «Список необходимых сетей», сеть K8s Internal

kube_pod_subnet

10.220.1.0/24

Подсеть кластера для подов (pods)

Вкладка «1. Требования к инфраструктуре», таблица 2.2 «Список необходимых сетей», сеть K8s Internal

rsyslog_deep_keep_log

1

Количество хранимых лог-файлов

rsyslog_maxlogsize

2

Максимальный размер лог-файла в GB, при превышении размера он подлежит удалению через два дня

docker_registry_domainport

deploy001.local:5553

Сервисный docker-registry

docker_magnumregistry_domainport

deploy001:6663

docker-registry для кластеров Magnum

main_support_email

[support@vk.team](mailto:support@vk.team)

Email-адрес для поддержки — туда будут отправляться различные уведомления о работе Платформы (мониторинг, события и поды)

ssl_sertificate_name

"wildcard.vkcloud.devmail.ru"

Имя переменной, в которой содержится тело SSL WildCard Сертификата. Переменная содержится в vault-файле

nova_cpu_model

Westmere-IBRS

Модель CPU; выбирается в зависимости от CPU на вычислительных узлах. Полный список совместимых моделей см. в документации Qemu:

nova_cpu_mode

host-passthrough

Если модель CPU не определена, закомментируйте переменную nova_cpu_model и назначьте nova_cpu_mode: host-passthrough (не рекомендуется использовать в prod-инсталляциях).

cpu_allocation_ratio

1

Количество выделяемых виртуальных ядер на одно физическое ядро

ram_allocation_ratio

1

Количество выделяемой виртуальной памяти на 1 Гб физической памяти

nova_compute_images_ceph_cluster_name

ceph

Имя кластера Ceph (см. раздел Настройка inventory для установки Ceph)

nova_compute_images_ceph_user

ceph

Имя пользователя Ceph (см. раздел Настройка inventory для установки Ceph)

ceph_cluster_fsid

5456e034-c7a6-4a7d-af66-1e95be8e50b1

Идентификатор кластера и файловой системы (см. раздел Настройка inventory для установки Ceph)

nova_compute_images_rbd_pool

vms

Имя пула блочных устройств для ВМ (см. раздел Настройка inventory для установки Ceph)

trusted_ca_certs

Список сертификатов доверенных CA

trusted_ca_certs.name

local-ca-bundle

Название сертификата

content

-----BEGIN CERTIFICATE-----      MIIDCTCCAfGgAwIBAgIUdeIzyDR7kdrROWTx...

Тело сертификата

ceilometer_external_synchronizer_host

lm001

Наименование хоста с сервисом external_synchronizer, используется в Ceilometer

ssh_pub_keys

Список локальных пользователей Linux

ssh_pub_keys.user

centos

Имя локального пользователя Linux

ssh_pub_keys.key

ssh-rsa AAAAB3NzaC1yc2EAAAADA….

SSH-ключ пользователя, обозначенного в переменной ssh_pub_keys.user

gb_tarantool_master

cpn001

Определение мастер-ноды для gb_tarantool (по умолчанию первый управляющий узел)

helm_gb_tarantool_replica_hosts

[cpn002,cpn003]

Все контрол-ноды, кроме gb_tarantool-мастера

iam_etcd_endpoints

["http://10.30.3.11:22379", "http://10.30.3.12:22379", "http://10.30.3.13:22379"]

Точки подключения к ETCD для IAM сервисов.

Вкладка «3. Список сетевых адресов», все адреса серверов с ролью Controlplane из сети Management

remote_bgp_as

65432

AS (автономная система), настраиваемая на серверах с ролью Route Server

local_bgp_as

65433

Локальная AS, используемая Платформой

bgp_switches

- {name: "vkrouter", ip: "10.30.3.22", as: 65431}

Данные существующей AS для подключения к ней

keycloak_test_users

Словарь с тестовыми пользователями, которые будут созданы в системе после установки Платформы. Данные переменные используются в роли keycloak и postdeploy

keycloak_test_users.user1.username

[proj1@vk.team](mailto:proj1@vk.team)

Имя пользователя

keycloak_test_users.user1.password

"proj1-qwe"

Пароль пользователя

keycloak_test_users.user1.groups

-"proj1-users"

Список групп пользователя из Keycloak

KBG:

[{id: "88a6587a-6683-4e1c-8d66-27d5d0f40e0d", name: "proj1-users", path: "/proj1-users", attributes: {}, realmRoles: [], clientRoles: {}, clientRoles: {}}]

Список атрибутов пользователя в Keycloak

bgp_misc_routes

["10.30.4.0/29","10.30.6.0/29"]

Публичная / приватная сеть для использования в HAProxy

Вкладка «1. Требования к инфраструктуре», таблица 2.2 «Список необходимых сетей», сети Private API Loopbacks и Public API Loopbacks

bgp_filters_gw

[cpn001,cpn002,cpn003]

Имена управляющих узлов Платформы

Вкладка «3. Список сетевых адресов», все имена серверов с ролью Controlplane

Затем заполните имена хостов и IP согласно Техпаспорта, Вкладка «3. Список сетевых адресов», где:

  • cpn* — серверы с ролью Controlplane.
  • csn* — серверы с ролью Ceph.
  • kcn* — серверы с ролью Compute.
  • lm* — серверы с ролью Logging/Monitoring.
  • rs* — серверы с ролью Route Server.

Далее приведён пример заполнения файла в блоках hosts и groups.

hosts:  cpn001:    # Вкладка «3. Список сетевых адресов» -> сеть `Management`    management_ip: 10.30.3.11    # Дополнительный адрес из сети Management. Вставьте значение из конца диапазона сети `Management`    additional_management_ip: 10.30.3.111    octavia_tap_ipaddr1: 10.254.0.1  # Не менять сеть без острой необходимости    billing_timer: true # Не менять    # Вкладка «3. Список сетевых адресов» -> сеть `Public API Loopbacks`: значения для соответствующего сервера    public_haproxy_announce_ip: 10.30.6.3    # Вкладка «3. Список сетевых адресов» -> сеть `Public API Transport`    public_haproxy_next_hop: 10.30.5.5    # Вкладка «3. Список сетевых адресов» -> сеть `Private API Loopbacks`: значения для соответствующего сервера    private_haproxy_announce_ip: 10.30.4.3    # Вкладка «3. Список сетевых адресов» -> сеть `Private API Loopbacks`: значения для соответствующего сервера    proxysql_announce_ip: 10.30.4.3    cinder_ceph_host_id: c1 # Не менять  # Заполнить аналогично cpn001 для соответствующего сервера  cpn002:    management_ip: 10.30.3.12    additional_management_ip: 10.30.3.112    octavia_tap_ipaddr1: 10.254.0.2    public_haproxy_announce_ip: 10.30.6.4    public_haproxy_next_hop: 10.30.5.6    private_haproxy_announce_ip: 10.30.4.4    proxysql_announce_ip: 10.30.4.4    cinder_ceph_host_id: c2 # Не менять    galera_is_backup: true # Не менять  # Заполнить аналогично cpn001 для соответствующего сервера  cpn003:    management_ip: 10.30.3.13    additional_management_ip: 10.30.3.113    octavia_tap_ipaddr1: 10.254.0.3    public_haproxy_announce_ip: 10.30.6.5    public_haproxy_next_hop: 10.30.5.7    private_haproxy_announce_ip: 10.30.4.5    proxysql_announce_ip: 10.30.4.4    cinder_ceph_host_id: c3 # Не менять    galera_is_backup: true # Не менять  csn001:    # Вкладка «3. Список сетевых адресов» -> сеть `Ceph External`: значения для соответствующего сервера    mon_address: 10.30.10.16  csn002:    # Заполнить аналогично cpn001 для соответствующего сервера    mon_address: 10.30.10.17  csn003:    # Заполнить аналогично cpn001 для соответствующего сервера    mon_address: 10.30.10.18  rs1:    # Вкладка «3. Список сетевых адресов» -> сеть `Management`    bird_source_ip: 10.30.3.19  lm001:    elastic_master: true # Не менятьgroups:  barbican: [cpn001, cpn002, cpn003]  billing: [cpn001, cpn002, cpn003]  billing_ng_etcd_cluster: [cpn001, cpn002, cpn003]  ceilometer_controller: [cpn001, cpn002, cpn003]  cinder_backup: [cpn001, cpn002, cpn003]  cinder_ceph: [cpn001, cpn002, cpn003]  clickhouse: [cpn001, cpn002, cpn003]  clickhouse_audit_logs: [cpn002, cpn003]  clickhouse_proxy: cpn001  clickhouse_zookeeper: [cpn001, cpn002, cpn003]  compute: [kcn001, kcn002]  consul: [cpn001, cpn002, cpn003]  dhcp: [cpn001, cpn002, cpn003]  elastic: lm001  elk_kafka: lm001  galera_barbican: [cpn001, cpn002, cpn003]  galera_billing: [cpn001, cpn002, cpn003]  galera_cinder: [cpn001, cpn002, cpn003]  galera_glance: [cpn001, cpn002, cpn003]  galera_heat: [cpn001, cpn002, cpn003]  galera_karboii: [cpn001, cpn002, cpn003]  galera_keycloak: [cpn001, cpn002, cpn003]  galera_keystone: [cpn001, cpn002, cpn003]  galera_magnum: [cpn001, cpn002, cpn003]  galera_manila: [cpn001, cpn002, cpn003]  galera_neutron: [cpn001, cpn002, cpn003]  galera_nova: [cpn001, cpn002, cpn003]  galera_octavia: [cpn001, cpn002, cpn003]  galera_panko: [cpn001, cpn002, cpn003]  galera_trove: [cpn001, cpn002, cpn003]  gb_tarantool: [cpn001, cpn002, cpn003]  glance: [cpn001, cpn002, cpn003]  iam_etcd_cluster: [cpn001, cpn002, cpn003]  keystone: [cpn001, cpn002, cpn003]  logstash: [lm001]  magnum_etcd_cluster: [cpn001, cpn002, cpn003]  manila_controller: [cpn001, cpn002, cpn003]  manila_share: [cpn001, cpn002, cpn003]  mcs: [cpn001, cpn002, cpn003]  mcs_apex_breeze: [cpn001, cpn002, cpn003]  mcs_breeze: [cpn001, cpn002, cpn003]  mcs_dusk: [cpn001, cpn002, cpn003]  mcs_frost: [cpn001, cpn002, cpn003]  mcs_haar: [cpn001, cpn002, cpn003]  mcs_nginx: [cpn001, cpn002, cpn003]  mcs_ocean: [cpn001, cpn002, cpn003]  mcs_owl: [cpn001, cpn002, cpn003]  mcs_policy: [cpn001, cpn002, cpn003]  mcs_sundog: [cpn001, cpn002, cpn003]  mcs_zephyr: [cpn001, cpn002, cpn003]  monitoring_frontend: lm001  nbgp:  network: [cpn001, cpn002, cpn003]  neutron_controller: [cpn001, cpn002, cpn003]  nova_controller: [cpn001, cpn002, cpn003]  octavia: [cpn001, cpn002, cpn003]  opensearch_dashboard: [lm001]  ost_kube_etcd: [cpn001, cpn002, cpn003]  ost_kube_master: [cpn002, cpn003]  ost_kube_node: [cpn001, cpn002, cpn003]  panko: [cpn001, cpn002]  private_haproxy: [cpn001, cpn002, cpn003]  proxysql: [cpn001, cpn002, cpn003]  public_haproxy: [cpn001, cpn002, cpn003]  rabbitmq_persistent: [cpn001, cpn002, cpn003]  rs: rs1  zabbix: lm001  ceph_mon: [csn001, csn002, csn003]  ceph_osd: [csn001, csn002, csn003]

Сгенерируйте ключи для Ceph по инструкции ниже и заполните данные о них в секции vault файла minimal.yml:

vault:  ...    # Generating ceph keys:    # * Install "ceph-base" somewhere -> "sudo dnf install ceph-base -y"    # * Generage some keys by command "ceph-authtool --gen-print-key"    # * Copy a generated keys to ceph-ansible-configs (It's need be simular)    # Укажите ключи доступа к CEPH    vault_ceph_client_key: "AQB4ZlViXt1cHhAAzTJymwtX6xLSxOKCpHRiQA=="    vault_ceph_client_manila: "AQDceWZiUnkZOBAASgi7dcbYEQLCIZ5MslHFBw=="    vault_ceph_admin_glance: "AQDDfVViX5/aNRAAXcvUwjYblsT5keloAY9HZw=="    vault_ceph_admin_glance_tmp: "AQDJfVViq0KsOhAAaACiRz2RD1bVs0/6Cm3b/Q=="

Укажите данные для подключения к S3 (user_id и secret_id, полученные от администраторов S3) секции vault файла minimal.yml:

vault:  ...    # Укажите параметры доступа к S3    vault_trove_s3_distrib_access_key: "user_id"    vault_trove_s3_distrib_secret_key: "secret_id"

Запуск генератора

  1. После заполнения файла minimal.yml запустите invgen:

    invgen inventory -c minimal.yml

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

  2. Переименуйте каталог repos_mcs_distr_box-${RELEASE_NAME}/ansible-openstack/inventory с конфигурационными файлами, полученными вместе с дистрибутивом, например:

    mv ./ansible-openstack/inventory ./ansible-openstack/inventory.bak
  3. Скопируйте только что сгенерированный каталог inventory со всем содержимым в каталог ~/repos_mcs_distr_box-${RELEASE_NAME}/ansible-openstack/.

Оптимизация инсталлятора/deploy-ноды/ceph

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

Количество подключений к БД

В файлах ~/repos_mcs_distr_box-${RELEASE_NAME}/ansible-openstack/inventory/group_vars/vkcloud_galera_<SERVICE>/vars.yml измените значения параметров max_connections, которые ограничивают количество одновременных подключений к БД MySQL, а соответственно и нагрузку на неё.

Значения параметров max_connections необходимо изменять пропорционально по компонентам, в зависимости от нагрузки на Платформу. Конкретные значения зависят от многих факторов и вычисляются эмпирически.

Примерные пропорциональные значения приведены ниже в таблице 2.

Пример фрагмента файла ~/repos_mcs_distr_box-${RELEASE_NAME}/ansible-openstack/inventory/group_vars/vkcloud_galera_/vars.yml
mysql:  # Калибровка Mysql. Название переменной должно быть один-в-один названию параметра в MySQL  innodb_io_capacity: 8000  innodb_buffer_pool_instances: 2  max_connections: 700  max_connect_errors: 4294967295  max_heap_table_size: 134217728  tmp_table_size: 134217728  innodb_read_io_threads: 16  innodb_buffer_pool_size: "{{ default_innodb_buffer_pool_size }}"  key_buffer_size: 134217728
Таблица 2 — Пример значений параметров max_connections

Компонент

Значение

Neutron

18000

Nova

5000

Cinder

5000

Panko

20000

Billing

5000

General_Billing (+NG)

5000

Scrooge

5000

Karboii

5000

Trove

5000

Keystone

5000

Octavia

5000

Magnum

5000

Manila

5000

Heat

5000

Glance

5000

KeyCloak

5000

Barbican

5000

Zabbix

5000

Для инсталляции без пользователей достаточно указать значение 1000 для всех компонентов.

При увеличении нагрузки на Платформу значения max_connections необходимо увеличивать.

Буфер в ОЗУ для БД

В файле group_vars/vkcloud/common.yml измените значение переменной default_innodb_buffer_pool_size, которая задаёт дефолтное значение размера буфера в ОЗУ, выделяемый для каждой БД.

Увеличить значение innodb_buffer_pool_size можно в файле настроек для конкретной БД group_vars/vkcloud_galera_<DATABASE>/vars.yml.

Проверка полученных артефактов

После выполнения всех шагов раздела LINK_NOT_DEFINED(../parameters_preparation) проверьте наличие следующих артефактов:

  1. Каталог с inventory, созданный генератором.

    Запрос содержимого каталога
    ls ~/repos_mcs_distr_box-${RELEASE_NAME}/ansible-openstack/inventory
    Пример вывода
    -rw-rw-r--.  1 centos centos   839 Dec  6 04:39 ansible.cfg-rw-rw-r--.  1 centos centos    38 Dec  6 01:57 GENERATEDdrwxrwxr-x. 70 centos centos  4096 Dec  6 01:57 group_vars-rw-rw-r--.  1 centos centos 18535 Dec  6 02:02 vkcloud.yml
  2. Параметры ansible vault:

    1. Пароль для ansible vault в файле ~/.ansible.vault-vkcloud.

    2. Настроенный config для ansible в файле /home/centos/repos_mcs_distr_box-${RELEASE_NAME}/ansible-openstack/inventory/ansible.cfg.

    3. Заполненный ansible vault файл в /home/centos/repos_mcs_distr_box-${RELEASE_NAME}/ansible-openstack/inventory/group_vars/vkcloud.

      Проверить эти параметры можно при помощи команды:

      ansible-vault view ~/repos_mcs_distr_box-${RELEASE_NAME)}/ansible-openstack/inventory/group_vars/vkcloud

      Команда должна вывести содержимое зашифрованного файла ansible vault без запроса пароля.

  3. Заполненное inventory ceph в каталоге ~/repos_mcs_distr_box-${RELEASE_NAME}/ceph-ansible, в файлах:

    • inventory
    • group_vars/all.yml

Обновление версии ядра на серверах кластера

Чтобы выполнить автоматическое обновление версии ядра на сервере кластера:

  1. Задайте переменные, необходимые для установки:

    RELEASE_NAME='3.0.7'INSTALL_DIR=/home/centos/INVENTORY_DIR=${INSTALL_DIR}/repos_mcs_distr_box-${RELEASE_NAME}/ansible-openstack/inventoryANSIBLE_DIR=${INSTALL_DIR}/repos_mcs_distr_box-${RELEASE_NAME}/ansible-openstackPREDDEPLOY_DIR=${INSTALL_DIR}/repos_mcs_distr_box-${RELEASE_NAME}/preddeploy
  2. Перейдите в каталог preddeploy и внесите изменения в group_vars:

    Переход в каталог и открытие файла на редактирование
    cd ${PREDDEPLOY_DIR}vi inventory/group_vars/all/vars.yml
    Содержимое файла vars.yml
    # Укажите действительные адреса до Nexusyum_repos_host: "deploy001.local:8081"nexus_host: "deploy001.local"docker_registry: "deploy001.local:5553"# Укажите имя пользователя и его первичную группуansible_user: centosansible_usergroup: centos# Введите IP-адреса Management-сети всех ваших серверовstatic_hosts:  deploy: 10.30.3.10  cpn001: 10.30.3.11  cpn002: 10.30.3.12  cpn003: 10.30.3.13  deploy.local: 10.30.3.10  kcn001: 10.30.3.14  kcn002: 10.30.3.15  rs1: 10.30.3.19  rs2: 10.30.3.20  lm001: 10.30.3.21  csn001: 10.30.3.16  csn002: 10.30.3.17  csn003: 10.30.3.18# Список дополнительных пакетов, которые будут установлены для помощи в администрированииrpm_pkgs:  ...
  3. Создайте файл hosts.ini с указанием IP-адресов Management-сети ваших серверов согласно Техпаспорту проекта:

    [all]kcn001       ansible_host=10.30.3.14kcn002       ansible_host=10.30.3.15deploy       ansible_host=10.30.3.10cpn001       ansible_host=10.30.3.11cpn002       ansible_host=10.30.3.12cpn003       ansible_host=10.30.3.13csn001       ansible_host=10.30.3.16csn002       ansible_host=10.30.3.17csn003       ansible_host=10.30.3.18[deploy]deploy       ansible_host=10.30.3.10[computes]kcn001       ansible_host=10.30.3.14kcn002       ansible_host=10.30.3.15[rs]rs1          ansible_host=10.30.3.19rs2          ansible_host=10.30.3.20[backup]lm001        ansible_host=10.30.3.21[router][ceph]csn001       ansible_host=10.30.3.16csn002       ansible_host=10.30.3.17csn003       ansible_host=10.30.3.18
  4. Запустите плейбук prepare_all_nodes.yml:

    ansible-playbook -i inventory/hosts.ini prepare_all_nodes.yml
  5. После перезагрузки на целевом сервере убедитесь, что была загружена новая версия ядра. Для этого выполните команды, приведенные в таблице 3.

Таблица 3 — Проверка версии ядра на серверах кластера

Сервер

Команда проверки версии

Ожидаемый результат

cpn00X

ssh cpn00X 'uname -a'

Linux cpn00X 5.4.17-2011.6.2.el7uek.x86_64

kcn00X

ssh kcn00X 'uname -a'

Linux kcn00X 5.4.17-2011.6.2.el7uek.x86_64 …

lm00X

ssh lm00X 'uname -a'

Linux lm00X 5.4.17-2011.6.2.el7uek.x86_64 …

csn00X

ssh csn00X 'uname -a'

Linux csn00X 5.4.17-2011.6.2.el7uek.x86_64 …

rsX

ssh rsX 'uname -a'

Linux rsX 5.4.17-2011.6.2.el7uek.x86_64 …