Подготовка окружения
Перед установкой Платформы необходимо создать сети с IP-адресами согласно паспорту проекта (таблица1).
Название | Доступ из корп. сети | Доступ в корп. сеть | MTU | Мин. пропускная способность |
|---|---|---|---|---|
| Администраторам | DNS, NTP, LDAP/AD, BGP | 1500 | 10 Гбит/с |
| 1500 | 10 Гбит/с | ||
| Пользователям, Администраторам | 1500 | 10 Гбит/с | |
| Пользователям, Администраторам | 1500 | 10 Гбит/с | |
| 1450 | |||
| 1450 | |||
| Пользователям, Администраторам | DNS, NTP, Public API Loopbacks, доверенные внутренние ресурсы. Опционально. Например, прокси-серверы, серверы S3, корпоративные репозитории, API-ресурсы и прочее | 1500 | 10 Гбит/с |
| Пользователям, Администраторам | DNS, NTP, Public API Loopbacks, доверенные внутренние ресурсы. Опционально. Например, прокси-серверы, серверы S3, корпоративные репозитории, API-ресурсы и прочее | 1500 | 10 Гбит/с |
| 9050 | 10 Гбит/с | ||
| 9050 | 10 Гбит/с | ||
| 1450 | |||
| 1450 | |||
| 1450 | |||
| 1450 | |||
| 1450 | |||
| 1450 | |||
| 1450 | |||
| 1450 |
Management — сеть для внутреннего взаимодействия компонентов Платформы. Подключается на каждом хосте инфраструктуры облака. Используется для работы администраторов и управления через веб-интерфейс и SSH. Служит для подключения к вспомогательным, сетевым сервисам (DNS, NTP, AD/LDAP и прочее), а также как промежуточный узел (next hop) для BGP-анонсов. Конечным пользователям доступ к этой сети не предоставляется.
Private API Loopbacks — сеть для доступа компонентов к API. Указывается три BGP IP. Не маршрутизируется в корпоративную сеть.
Public API Transport — транспортная сеть для Public API Loopbacks. Сеть для взаимодействия проекта Платформы с пользователем. Тут находится точка входа для пользователей (UI и API), через которую он управляет своим проектом. Для организации точки входа пользователей выделяются три BGP IP через сеть Public API Loopbacks.
Public API Loopbacks — сеть для доступа пользователей к Порталу самообслуживания и API. Указывается три BGP IP.
K8s Internal Pods/Services — внутренняя сеть Kubernetes. Используется для назначения сетей для подов и сервисов кластера Kubernetes.
Cloud External — одна или несколько сетей для внешних интерфейсов ВМ (корпоративная сеть). Используется для взаимодействия пользователей со своими ВМ и подобными развёрнутыми ресурсами в Платформе. Также используется для резервного копирования БД в хранилище S3. Для этого обеспечивает доступ до S3 из внешней сети, подключённой к маршрутизатору внутренней сети, где размещён инстанс БД. К сети необходим доступ базовым, корпоративным, сетевым ресурсам (DNS, NTP, прокси-серверы, серверы S3, репозитории и прочее). Конфликтует с сетями Cloud Provider Net X.
Cloud Provider Net X — сети для внешних интерфейсов ВМ (корпоративная сеть) с подключением к определённому проекту Платформы. Используется для взаимодействия пользователей с объектами виртуализации, например ВМ. К сети необходим доступ базовым, корпоративным, сетевым ресурсам (DNS, NTP, прокси-серверы, серверы S3, репозитории и прочее). Конфликтует с сетями Cloud External.
Сeph External — сеть для доступа к данным СХД/Ceph. Высокопроизводительная сеть для взаимодействия серверов Controllers и Compute с серверами Storage — то есть через данную сеть ВМ в Compute получают доступ к виртуальным дискам на Storage. Именно из-за объёма информации данная сеть вынесена в отдельную, в ней добавлена скорость и увеличен MTU.
Сeph Internal — кластерная сеть Ceph. Используется для синхронизации распределенных данных кластера Ceph между собой. Имеет высокие требования к стабильности и времени отклика, поэтому для обеспечения большей надёжности вынесена в отдельную сеть.
Cloud External Sprut — сеть для доступа через FIP для ВМ, располагаемых в SDN Sprut. Маршрутизация подсети в корпоративную сеть не требуется, но она не должна конфликтовать с другими подсетями в корпоративной сети.
DNS Internal Sprut — сеть для работы компонента Power DNS в SDN Sprut. Не машрутизируется и не конфликтует с корпоративной сетью.
DNS External Sprut — сеть для публикации ресурсов Power DNS во внешнюю сеть. Маршрутизация подсети в корпоративную сеть не требуется, но она не должна конфликтовать с другими подсетями в корпоративной сети.
EPHN Internal Sprut — сеть для работы компонента Ephemeral Network в SDN Sprut. Не машрутизируется и не конфликтует с корпоративной сетью.
EPHN Exchange Sprut — сеть для публикации ресурсов Ephemeral Network во внешнюю сеть. Маршрутизация подсети в корпоративную сеть не требуется, но она не должна конфликтовать с другими подсетями в корпоративной сети.
Metadata Internal Sprut — сеть для работы компонента Dynamic DHCP в SDN Sprut. Не машрутизируется и не конфликтует с корпоративной сетью.
Metadata Exchange Sprut — сеть для публикации ресурсов Dynamic DHCP во внешнюю сеть. Маршрутизация подсети в корпоративную сеть не требуется, но она не должна конфликтовать с другими подсетями в корпоративной сети.
Octavia Management — сеть для конфигурирования балансировщиков нагрузки Octavia. Маршрутизация подсети в корпоративную сеть не требуется, но она не должна конфликтовать с другими подсетями в корпоративной сети.
-
Deploy:
Management.
-
Controlplane:
Management.Management(дополнительная).Private API Loopbacks.Public API Transport (Portal).Public API Loopbacks.Kubernetes Internal Pods.Kubernetes Internal Services.Cloud External.Cloud Provider Net X.Cloud External Sprut.DNS Internal Sprut.DNS External Sprut.EPHN Internal Sprut.EPHN Exchange Sprut.Metadata Internal Sprut.Metadata Exchange Sprut.Octavia Management.Ceph External.
-
Network:
Management.Cloud External.
-
Compute:
Management.Cloud External.Ceph External.
-
Compute High IOPS:
Management.Cloud External.Ceph External.
-
Ceph:
Management.Ceph External.Ceph Internal.
-
Route Server (RS):
Management.
-
Logging/Monitoring:
Management.
Обеспечьте доступ из сети Management до следующих сервисов:
- DNS.
- AD/LDAP.
- NTP.
- SMTP.
Обеспечьте доступ из сети Cloud External в сеть Public API Loopbacks по следующим портам:
80.443.5010.
Для использования корпоративного BGP-оборудования откройте порт 179/TCP от серверов Controller до BGP-коммутаторов и обратно через сеть Management.
Выполните подготовку оборудования согласно требованиям, описанным в таблице 2.
Серверная роль | Физический сервер/ВМ | Кол-во серверов | RAM (ГБ) | CPU (кол-во/модель/частота/кол-во ядер) | Storage (кол-во/тип/размер) | Сетевые интерфейсы (кол-во/протокол/скорость) |
|---|---|---|---|---|---|---|
Deploy | Физический или ВМ | 1 | 8 | 1×Xeon Gold | 2×480ГБ SSD + 2×1ТБ SSD | 2×10Гб/с LACP |
Controller node | Физический | 3 | 128 | 2×Xeon Gold | 2×480ГБ SSD | 4×10Гб/с LACP |
Network | Физический | 1 | 32 | 1×Xeon Gold | 2×480ГБ SSD | 2×10Гб/с LACP |
Compute node | Физический | 1 | 1024 | 2×Xeon Gold | 2×480ГБ SSD | 4×10Гб/с LACP |
Ceph | Физический | 3 | 128 | 2×Xeon Silver | 2×480ГБ SSD + 2×960ГБ SSD | 4×10Гб/с LACP |
Route Server (RS) | Физический или ВМ | 1 | 8 | 1×Xeon Silver | 2×480ГБ SSD | 2×10Гб/с LACP |
Monitoring-Logging | Физический или ВМ | 1 | 128 | 2×Xeon Gold | 2×480ГБ SSD + 2×1ТБ SSD | 2×10Гб/с LACP |
Compute node High IOPS | Физический | 1 | 128 | 2×Xeon Gold | 2×480ГБ SSD + 2×Single 960GB NVME | 6×10Гб/с LACP |
EventHouse | Физический | 0 | 64 | 2×Xeon Gold | 2×480ГБ SSD + 2×960ГБ SSD | 2×10Гб/с LACP |
Установите РЕД ОС 7.3 на все хосты через IPMI или PXE и настройте сетевые интерфейсы, исходя из списка раздела Сетевая составляющая каждой роли. На каждом хосте должен быть только один основной шлюз из сети Management (кроме хостов Controlplane, в которых основной шлюз из сети Public API Transport (Portal)).
Имена хостов, на которых производится установка, будут использоваться в качестве DNS-имён этих хостов. Имена должны соответствовать следующим требованиям:
- Содержат не более 63-х символов.
- Содержат только строчные буквы, цифры,
-и.. - Начинаются с буквы или цифры.
- Заканчиваются буквой или цифрой.
$ hostnamecpn001.private.infra.devmail.ru$ nslookup cpn001Server: 127.0.0.53Address: 127.0.0.53#53Name: cpn001.private.infra.devmail.ruAddress: 10.30.3.11$ nslookup cpn001.private.infra.devmail.ruServer: 127.0.0.53Address: 127.0.0.53#53Name: cpn001.private.infra.devmail.ruAddress: 10.30.3.11
Сеть настраивается средствами пакета network-scripts для ОС Linux согласно Паспорту проекта.
Необходимо обеспечить отказоустойчивость диска с ОС при помощи RAID1 или LVM-mirror учитывая следующие рекомендации:
- На диске создается 1 раздел с максимально доступным объёмом, монтируется в
/. - Swap отключён.
Отключите SELinux на всех серверах:
-
Откройте файл конфигурации SELinux для редактирования и задайте параметру
SELINUXзначениеdisabled:$ sudo vi /etc/selinux/config...SELINUX=disabled... -
Перезапустите ОС командой
sudo rebootи дождитесь загрузки ОС для продолжения установки.
Отключите firewalld, так как он приводит к конфликтам с iptables.
Перед отключением, остановите firewalld:
$ sudo systemctl disable --now firewalld
На всех узлах Платформы выполните следующие действия (на примере пользователя redos):
-
Создайте нового пользователя:
$ sudo useradd redos -c "Ansible User" --create-home -
Задайте сложный пароль:
$ sudo passwd redos -
Настройте возможность выполнения команд через
sudoбез пароля:$ sudo bash -c 'echo "redos ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/91-redos-user'$ sudo chmod 400 /etc/sudoers.d/91-redos-user
-
Настройте беспарольный доступ для выбранного пользователя с помощью SSH-ключа с деплой-ноды на все серверы Платформы:
$ sudo -u redos bash$ cd ~$ mkdir ~/.ssh$ ssh-keygen -t rsa -q -N ""$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys$ vi ~/.ssh/configHost *User redosStrictHostKeyChecking=noUserKnownHostsFile=/dev/nullLogLevel=error$ chmod 600 ~/.ssh/config$ ssh-copy-id cpn001$ ssh-copy-id cpn002$ ssh-copy-id ... -
Проверьте правильность настройки: с деплой-ноды запросите ID пользователя каждого сервера. Ожидаемый ответ от каждого сервера:
uid=0(root) gid=0(root) groups=0(root):$ ssh network1 sudo iduid=0(root) gid=0(root) groups=0(root)$ ssh cpn001 sudo iduid=0(root) gid=0(root) groups=0(root)$ ssh cpn002 sudo iduid=0(root) gid=0(root) groups=0(root)...
Проверьте региональные настройки на деплой-ноде:
$ echo $LANGen_US.UTF-8
Если ответ отличается от en_US.UTF-8, измените их на необходимые:
$ echo $LANGru_RU.utf-8$ export LANG=en_US.utf-8
[admin]$ echo $LANGen_US.utf-8[admin]$ ssh redos@deploy001[redos@deploy001 ~]$ echo $LANGen_US.utf-8[redos@deploy001 ~]$ ls 1ls: cannot access '1': No such file or directory[redos@deploy001 ~]$ exit[admin]$ export LANG=ru_RU.utf-8[admin]$ echo $LANGru_RU.utf-8[admin]$ ssh redos@deploy001[redos@deploy001 ~]$ echo $LANGru_RU.utf-8[redos@deploy001 ~]$ ls 1ls: невозможно получить доступ к '1': No such file or directory[redos@deploy001 ~]$ exit
В качестве хранилища образов ВМ для сервиса Glance могут использоваться:
- Ceph (используется по умолчанию).
- MINIO.
- Cloud Storage от VK или сторонний S3.
В файле minimal.yml указано значение переменной glance_type_store — тип хранилища rbd.
vars:...glance_type_store: rbd...
В файле minimal.yml укажите значение переменной glance_type_store — тип хранилища s3.
vars:...glance_type_store: s3...
Выполните подготовительные действия:
-
Создайте бакеты для постоянных и временных образов с правами на чтение и запись.
-
Получите ключи доступа пользователя к бакетам Access key и Secret key.
В файле minimal.yml укажите значения переменных:
glance_type_store— тип хранилищаs3.glance_s3_bucket_name— имя бакета для образов Glance.glance_s3fs_bucket— имя бакета для временных образов Glance.glance_s3_key_access— Access key для доступа к S3 основного бакета хранения образов.glance_s3_key_secret— Secret key для доступа к S3 основного бакета хранения образов.glance_s3_tmp_key_access— Access key для доступа к S3 временного бакета хранения образов.glance_s3_tmp_key_secret— Secret key для доступа к S3 временного бакета хранения образов.
vars:...glance_type_store: s3glance_s3_bucket_name: glanceglance_s3fs_bucket: glance-tmp...vault:...glance_s3_key_access: "<KEY_ACCESS>"glance_s3_key_secret: "<KEY_SECRET>"glance_s3_tmp_key_access: "<TMP_KEY_ACCESS>"glance_s3_tmp_key_secret: "<TMP_KEY_SECRET>"...
Для автоматической установки ОС можете использовать следующую конфигурацию Kickstart.
installurl --url=http://your_provision_server/cblr/links/redos-MUROM-7.3-20230724.0/lang en_US.UTF-8keyboard ustimezone --utc Europe/Moscoweula --agreedskipxtextrebootrootpw <YOUR_ROOT_PASSWORD>firewall --disabledselinux --disabledauthconfig --enableshadow --passalgo=sha512 --enableldap --enableldapauth --enableldaptls --enablecache --kickstartnetwork --hostname=<CHANGEME>.private.infra.devmail.rubootloader --location=mbrzerombrclearpart --all --initlabelbootloader --location=mbr --driveorder=sda --append="crashkernel=auto panic=10 ixgbe.allow_unsupported_sfp=1 net.ifnames=0 selinux=0 LANG=en_US.UTF-8 processor.max_cstate=0 intel_idle.max_cstate=0 idle=poll"#Disk partitioning informationignoredisk --only-use=sdapart /boot --asprimary --fstype ext4 --size=2048part swap --asprimary --size=8192part / --asprimary --fstype ext4 --size=1 --grow%packages# ==== OsProfile "vkpc_redos" packages section@core-ntpchronytcpdumpnmapvim-commonvim-minimalvim-enhancedbind-utilsrsyncwgetdmidecodeNetworkManagergrub2-redos-themedhcp-clientmicrocode_ctl%end%pre# Setting system state to "INSTALLING"wget -O/dev/null --header='Content-Type: application/json' --post-data='{ "state" : "installing" }' http://<IP>/api/v1/discover/kcn002.private.infra.devmail.ru/state || truecurl -so /dev/null -X POST -H 'Content-Type: application/json' -d '{ "state" : "installing" }' http://<IP>/api/v1/discover/kcn002.private.infra.devmail.ru/state || true# Reducing RAID disk loadsysctl -w dev.raid.speed_limit_max=1000%end# ==== OsProfile "vkpc_redos" pre section%pre/sbin/wipefs -af /dev/sd*%end# ==== OsProfile "vkpc_redos" post section%postsed -i -e 's/\(^SELINUX=\).*$/\1disabled/' /etc/selinux/configuseradd -m <USERNAME>echo "<USERNAME> ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/99-<USERNAME>-usermkdir -p /home/<USERNAME>/.sshecho 'ssh-rsa AAAAB3N4n2dZ5fZZooIXo...rRXu2SAUK5t' >> /home/<USERNAME>/.ssh/authorized_keysecho 'ssh-rsa AAAAB3NzaC1yc2EAAAADA...r9DiHmRrn0=' >> /home/<USERNAME>//.ssh/authorized_keyschown -R <USERNAME>. /home/<USERNAME>chmod 600 /home/<USERNAME>/.ssh/authorized_keyssystemctl enable NetworkManagersystemctl disable systemd-fsck-root.service%end
Для предстартовой проверки:
-
Проверьте состояние инсталляции:
-
На всех хостах платформы развёрнута ОС с корректно настроенным сетевым доступом:
- Между хостами.
- До DNS-серверов.
- До NTP-серверов.
- До AD/LDAP-серверов.
- До SMTP-серверов.
-
Отсутствуют неисправности в оборудовании.
-
-
Выполните все пункты из чек-листа, приведённого в таблице 3.
-
Если какая-либо проверка не будет успешной, исправьте все возникшие ошибки перед продолжением установки Платформы. В противном случае правильная работа инсталлятора и/или Платформы не гарантируется.
№ | Требование | № пункта Техпаспорта | Статус | Комментарий | Проверяющая сторона | Проверку выполнил | Действия для проверки |
|---|---|---|---|---|---|---|---|
1 | Беспарольный SSH-доступ от деплой-ноды до всех серверов в | В случае отсутствия SSH-доступа до любого из серверов Платформы установка завершится с ошибкой | Исполнитель | ||||
2 | Сетевая связность в сетях | Исполнитель | |||||
3 | Сетевая связность между всеми серверами по сети | Исполнитель | |||||
4 | Сетевая связность от всех серверов до DNS-сервера через сеть | Исполнитель | |||||
5 | Сетевая связность от Compute-серверов до DNS-сервера через сеть | Исполнитель | |||||
6 | Сетевая связность от всех серверов до NTP-сервера через сети | Исполнитель | |||||
7 | Сетевая связность от Compute-серверов до NTP-сервера через сети | Исполнитель | |||||
8 | Доменные имена занесены в DNS-записи и протестированы | 2.5b | Исполнитель | ||||
9 | SSL сертификаты, RSA ключи и, опционально, CA получены | 3.1 | Исполнитель | ||||
10 | Скорость передачи данных между серверами протестирована и соответствует пропускной способности сети | Проверка с помощью утилиты | Исполнитель | ||||
11 | MTU в различных сетях настроен корректно | Проверка с помощью команды:
| Исполнитель | ||||
12 | На дисках серверов отсутствуют ошибки | Исполнитель | |||||
13 | Доступ серверов к хранилищу S3 (при наличии) предоставлен и протестирован | Исполнитель | |||||
14 | В чистой установке ОС нет ошибок сервисов, или они не влияют на установку и работу Платформы | Проверка с помощью команды:
| Исполнитель |