Подготовка параметров для инсталляции
Подготовка параметров для инсталляции состоит из следующих последовательных шагов:
- Распаковка архива дистрибутива.
- Создание конфигурации Ansible.
- Подготовка inventory окружения.
- Оптимизация инсталлятора/deploy-ноды/ceph.
Также выполните обновление версии ядра до целевого (см. раздел Обновление версии ядра на серверах кластера) и, при необходимости, подключите RS-серверы Платформы к BGP-инфраструктуре (см. раздел Подключение RS-сервера к другим AS).
После настройки всех параметров inventory можете переходить к запуску инсталлятора (см. раздел Запуск инсталлятора).
-
Распакуйте архив дистрибутива и перейдите в распакованный архив:
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 поставляется вместе с дистрибутивом. После распаковки дистрибутива он располагается в /home/centos/repos_mcs_distr_box-${RELEASE_NAME}/ansible-openstack/ansible.cfg
Чтобы создать конфигурацию Ansible:
-
Создайте файл с новым паролем для Ansible vault:
echo "my-vault-secret-password" > ~/.ansible.vault-vkcloud -
Добавьте следующее содержимое в
ansible-openstack/ansible.cfgвнутри параметра[defaults]:vault_identity_list = vkcloud@~/.ansible.vault-vkcloud -
Удалите старый и создайте новый зашифрованный файл с переменными через
vault, выполнив команду:rm -f group_vars/vkcloud/vaultansible-vault create --encrypt-vault-id vkcloud group_vars/vkcloud/vault -
Файл откроется в текстовом редакторе. Вставьте содержимое следующего вида:
# Пароль от 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" (см. ниже) -
Сохраните изменения и выйдите из режима редактирования. Содержимое сохранится в зашифрованном виде в файле
group_vars/vkcloud/vault.
Подготовка параметров для автоматической генерации inventory состоит из следующих шагов:
-
Распаковка архива с генератором:
RELEASE_NAME='3.0.7'tar -xzf invgen-1.0.0-box-3.0.7-202211170813.tar.gz
Чтобы настроить inventory для установки Ceph:
-
Перейдите в директорию
ceph-ansibleс дистрибутивом:cd repos_mcs_distr_box-${RELEASE_NAME}/ceph-ansible -
Заполните файл
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 -
Внесите изменения в файле
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 -
Создайте партиции с помощью скрипта
mcs-part-toolна каждом хосте будущего кластера Ceph:-
Скопируйте каталог со скриптом на все серверы кластера Ceph:
scp -r ~/repos_mcs_distr_box-${RELEASE_NAME}/mcs-ceph-deploy csn00x:/home/centos/ -
Проверьте типы существующих дисков на всех хостах Ceph (
0— SSD,1— HDD):Выполнение команды проверки типов дисковlsblk -o name,rotaПример ожидаемого результатаNAME ROTAsdf 0sdd 0sdb 1sdg 0sde 0sdc 0sda 1sdh 0 -
Определите, какие диски можно использовать под 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. -
Создайте переменную
DEVICESи вставьте туда свободные диски:DEVICES='sdfsddsdgsdesdcsdh' -
Убедитесь, что установлена утилита
sgdisk:sudo yum install gdisk -
Выполните команду (скрипт
./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 -
Выберите имена партиций, которые будут использоваться для заполнения файла
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
-
-
Внесите изменения в файле
group_vars/osds.yml:-
Переименуйте существующий файл:
mv group_vars/osds.yml{,.old} -
Создайте новый файл
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_varsmkdir host_varsОткрытие файла csn01.ymlvi host_vars/csn01.ymlПеремещение значений переменной lvm_volumes в csn01.ymllvm_volumes:- data: /dev/sdf2- data: /dev/sdf4- data: /dev/sdd2- data: /dev/sdd4Открытие файла csn02.ymlvi host_vars/csn02.ymlПеремещение значений переменной lvm_volumes в csn02.ymllvm_volumes:- data: /dev/sdf1- data: /dev/sdf5- data: /dev/sdd3- data: /dev/sdd1Открытие файла csn03.ymlvi host_vars/csn03.ymlПеремещение значений переменной lvm_volumes в csn03.ymllvm_volumes:- data: /dev/sdf2- data: /dev/sdf4- data: /dev/sdd2- data: /dev/sdd1
-
Заполните файл minimal.yml, поставляемый в дистрибутиве Платформы, значениями из паспорта проекта. В таблице 1 приведено описание переменных файла с примерами заполнения.
Переменная | Пример заполнения | Описание, ссылка на Техпаспорт |
|---|---|---|
|
| Вкладка «1. Требования к инфраструктуре», п. 2.5а |
| AZ1 | Заполнить значением |
|
| Вкладка «1. Требования к инфраструктуре», таблица 4.1 |
|
| Вкладка «1. Требования к инфраструктуре», таблица 4.1 |
|
| Вкладка «3. Список сетевых адресов», сервер с ролью |
|
| Вкладка «3. Список сетевых адресов», сервер с ролью |
|
| Настройка сетевых интерфейсов в сети для серверов с ролью Интерфейс подключенный к сети |
|
| Настройка сетевых интерфейсов в сети для серверов с ролью Интерфейс подключенный к сети |
|
| Настройка сетевых интерфейсов в сети для серверов с ролью Интерфейс подключенный к сети |
|
| Настройка сетевых интерфейсов в сети для серверов с ролью Интерфейс подключенный к сети |
|
| Настройка сетевых интерфейсов в сети для серверов с ролью Интерфейс подключенный к сети |
|
| Настройка сетевых интерфейсов в сети для серверов с ролью Интерфейс подключенный к сети |
|
| Настройка сетевых интерфейсов в сети для серверов с ролью Интерфейс подключенный к сети |
|
| Настройка сетевых интерфейсов в сети для серверов с ролью Интерфейс подключенный к сети |
|
| Настройка сетевых интерфейсов в сети для серверов с ролью Интерфейс подключенный к сети |
|
| Вкладка «3. Список сетевых адресов», указать IP всех серверов с ролью |
|
| Вкладка «3. Список сетевых адресов», указать IP всех серверов с ролью |
| — | Перечисление сетей проекта |
|
| Сети, пакеты из которых будут «отправляться в никуда» на серверах, если выйдут из VxLAN |
|
| Вкладка «1. Требования к инфраструктуре», таблица 2.2 «Список необходимых сетей», сеть |
|
| Вкладка «1. Требования к инфраструктуре», таблица 2.2 «Список необходимых сетей», сеть |
|
| Вкладка «1. Требования к инфраструктуре», таблица 2.2 «Список необходимых сетей», сеть |
| — | Блок с описанием внешних сетей |
|
| Подсеть из блока |
|
| Вкладка «1. Требования к инфраструктуре», таблица 2.2 «Список необходимых сетей», VLAN (если используется) сети Раскомментируйте этот параметр, если используется VLAN |
|
| Вкладка «1. Требования к инфраструктуре», таблица 2.2 «Список необходимых сетей», имя сети |
|
| Является ли сеть
|
| — | Блок IP-адресов для обозначения части external-сети, которая будет использоваться Платформой. Укажите всю сеть |
|
| Начало пула |
|
| Конец пула |
|
| Шлюз external-сети |
|
| Включение динамического выделения IP для ВМ |
|
| Интерфейс |
|
| Список доменов для добавления в |
| — | Блок алиасов интерфейсов для Consul DNS |
|
| Вкладка «3. Список сетевых адресов», IP-адрес сервера с ролью |
|
| Вкладка «3. Список сетевых адресов», IP-адрес:порт сервера с ролью
По умолчанию при установке из дистрибутива используется порт |
|
| URL или IP-адрес точки подключения к S3. S3 может устанавливаться как сервис на сервер с ролью |
|
| Порт сервиса S3. S3 может устанавливаться как сервис на сервер с ролью |
|
| IP-адрес из сети |
|
| Подсеть для служб Kubernetes Вкладка «1. Требования к инфраструктуре», таблица 2.2 «Список необходимых сетей», сеть |
|
| Подсеть кластера для подов (pods) Вкладка «1. Требования к инфраструктуре», таблица 2.2 «Список необходимых сетей», сеть |
|
| Количество хранимых лог-файлов |
|
| Максимальный размер лог-файла в GB, при превышении размера он подлежит удалению через два дня |
|
| Сервисный docker-registry |
|
| docker-registry для кластеров Magnum |
|
| Email-адрес для поддержки — туда будут отправляться различные уведомления о работе Платформы (мониторинг, события и поды) |
|
| Имя переменной, в которой содержится тело SSL WildCard Сертификата. Переменная содержится в vault-файле |
|
| Модель CPU; выбирается в зависимости от CPU на вычислительных узлах. Полный список совместимых моделей см. в документации Qemu: |
|
| Если модель CPU не определена, закомментируйте переменную |
|
| Количество выделяемых виртуальных ядер на одно физическое ядро |
|
| Количество выделяемой виртуальной памяти на 1 Гб физической памяти |
|
| Имя кластера Ceph (см. раздел Настройка inventory для установки Ceph) |
|
| Имя пользователя Ceph (см. раздел Настройка inventory для установки Ceph) |
|
| Идентификатор кластера и файловой системы (см. раздел Настройка inventory для установки Ceph) |
|
| Имя пула блочных устройств для ВМ (см. раздел Настройка inventory для установки Ceph) |
| — | Список сертификатов доверенных CA |
|
| Название сертификата |
|
| Тело сертификата |
|
| Наименование хоста с сервисом |
| — | Список локальных пользователей Linux |
|
| Имя локального пользователя Linux |
|
| SSH-ключ пользователя, обозначенного в переменной |
|
| Определение мастер-ноды для |
|
| Все контрол-ноды, кроме gb_tarantool-мастера |
|
| Точки подключения к ETCD для IAM сервисов. Вкладка «3. Список сетевых адресов», все адреса серверов с ролью |
|
| AS (автономная система), настраиваемая на серверах с ролью |
|
| Локальная AS, используемая Платформой |
|
| Данные существующей AS для подключения к ней |
| — | Словарь с тестовыми пользователями, которые будут созданы в системе после установки Платформы. Данные переменные используются в роли |
|
| Имя пользователя |
|
| Пароль пользователя |
|
| Список групп пользователя из Keycloak |
|
| Список атрибутов пользователя в Keycloak |
|
| Публичная / приватная сеть для использования в HAProxy Вкладка «1. Требования к инфраструктуре», таблица 2.2 «Список необходимых сетей», сети |
|
| Имена управляющих узлов Платформы Вкладка «3. Список сетевых адресов», все имена серверов с ролью |
Затем заполните имена хостов и 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.111octavia_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.3cinder_ceph_host_id: c1 # Не менять# Заполнить аналогично cpn001 для соответствующего сервераcpn002:management_ip: 10.30.3.12additional_management_ip: 10.30.3.112octavia_tap_ipaddr1: 10.254.0.2public_haproxy_announce_ip: 10.30.6.4public_haproxy_next_hop: 10.30.5.6private_haproxy_announce_ip: 10.30.4.4proxysql_announce_ip: 10.30.4.4cinder_ceph_host_id: c2 # Не менятьgalera_is_backup: true # Не менять# Заполнить аналогично cpn001 для соответствующего сервераcpn003:management_ip: 10.30.3.13additional_management_ip: 10.30.3.113octavia_tap_ipaddr1: 10.254.0.3public_haproxy_announce_ip: 10.30.6.5public_haproxy_next_hop: 10.30.5.7private_haproxy_announce_ip: 10.30.4.5proxysql_announce_ip: 10.30.4.4cinder_ceph_host_id: c3 # Не менятьgalera_is_backup: true # Не менятьcsn001:# Вкладка «3. Список сетевых адресов» -> сеть `Ceph External`: значения для соответствующего сервераmon_address: 10.30.10.16csn002:# Заполнить аналогично cpn001 для соответствующего сервераmon_address: 10.30.10.17csn003:# Заполнить аналогично cpn001 для соответствующего сервераmon_address: 10.30.10.18rs1:# Вкладка «3. Список сетевых адресов» -> сеть `Management`bird_source_ip: 10.30.3.19lm001: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: cpn001clickhouse_zookeeper: [cpn001, cpn002, cpn003]compute: [kcn001, kcn002]consul: [cpn001, cpn002, cpn003]dhcp: [cpn001, cpn002, cpn003]elastic: lm001elk_kafka: lm001galera_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: lm001nbgp: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: rs1zabbix: lm001ceph_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)# Укажите ключи доступа к CEPHvault_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:...# Укажите параметры доступа к S3vault_trove_s3_distrib_access_key: "user_id"vault_trove_s3_distrib_secret_key: "secret_id"
-
После заполнения файла
minimal.ymlзапуститеinvgen:invgen inventory -c minimal.ymlГенератор создаст папку
inventoryв текущей директории. Внутри папкиinventoryбудут конфигурационные файлы, необходимые для установки Платформы. При необходимости их можно отредактировать до запуска установщика Платформы. -
Переименуйте каталог
repos_mcs_distr_box-${RELEASE_NAME}/ansible-openstack/inventoryс конфигурационными файлами, полученными вместе с дистрибутивом, например:mv ./ansible-openstack/inventory ./ansible-openstack/inventory.bak -
Скопируйте только что сгенерированный каталог
inventoryсо всем содержимым в каталог~/repos_mcs_distr_box-${RELEASE_NAME}/ansible-openstack/.
Ряд параметров производительности в инсталляторе настроен таким образом, чтобы Платформа могла запуститься даже на малых ресурсах. При использовании высокопроизводительной конфигурации рекомендуется отредактировать параметры, указанные далее в разделе.
В файлах ~/repos_mcs_distr_box-${RELEASE_NAME}/ansible-openstack/inventory/group_vars/vkcloud_galera_<SERVICE>/vars.yml измените значения параметров max_connections, которые ограничивают количество одновременных подключений к БД MySQL, а соответственно и нагрузку на неё.
Значения параметров max_connections необходимо изменять пропорционально по компонентам, в зависимости от нагрузки на Платформу. Конкретные значения зависят от многих факторов и вычисляются эмпирически.
Примерные пропорциональные значения приведены ниже в таблице 2.
mysql:# Калибровка Mysql. Название переменной должно быть один-в-один названию параметра в MySQLinnodb_io_capacity: 8000innodb_buffer_pool_instances: 2max_connections: 700max_connect_errors: 4294967295max_heap_table_size: 134217728tmp_table_size: 134217728innodb_read_io_threads: 16innodb_buffer_pool_size: "{{ default_innodb_buffer_pool_size }}"key_buffer_size: 134217728
Компонент | Значение |
|---|---|
Neutron |
|
Nova |
|
Cinder |
|
Panko |
|
Billing |
|
General_Billing (+NG) |
|
Scrooge |
|
Karboii |
|
Trove |
|
Keystone |
|
Octavia |
|
Magnum |
|
Manila |
|
Heat |
|
Glance |
|
KeyCloak |
|
Barbican |
|
Zabbix |
|
Для инсталляции без пользователей достаточно указать значение 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) проверьте наличие следующих артефактов:
-
Каталог с 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 -
Параметры ansible vault:
-
Пароль для ansible vault в файле
~/.ansible.vault-vkcloud. -
Настроенный config для ansible в файле
/home/centos/repos_mcs_distr_box-${RELEASE_NAME}/ansible-openstack/inventory/ansible.cfg. -
Заполненный 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 без запроса пароля.
-
-
Заполненное inventory ceph в каталоге
~/repos_mcs_distr_box-${RELEASE_NAME}/ceph-ansible, в файлах:inventorygroup_vars/all.yml
Чтобы выполнить автоматическое обновление версии ядра на сервере кластера:
-
Задайте переменные, необходимые для установки:
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 -
Перейдите в каталог
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.10cpn001: 10.30.3.11cpn002: 10.30.3.12cpn003: 10.30.3.13deploy.local: 10.30.3.10kcn001: 10.30.3.14kcn002: 10.30.3.15rs1: 10.30.3.19rs2: 10.30.3.20lm001: 10.30.3.21csn001: 10.30.3.16csn002: 10.30.3.17csn003: 10.30.3.18# Список дополнительных пакетов, которые будут установлены для помощи в администрированииrpm_pkgs:... -
Создайте файл
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 -
Запустите плейбук
prepare_all_nodes.yml:ansible-playbook -i inventory/hosts.ini prepare_all_nodes.yml -
После перезагрузки на целевом сервере убедитесь, что была загружена новая версия ядра. Для этого выполните команды, приведенные в таблице 3.
Сервер | Команда проверки версии | Ожидаемый результат |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|