Подготовка окружения
Перед установкой Платформы необходимо создать сети с IP-адресами согласно паспорту проекта (таблица1).
Название | Доступ из корп. сети | Доступ в корп. сеть | MTU | Мин. пропускная способность |
|---|---|---|---|---|
| Администраторам | DNS, NTP, LDAP/AD | 1500 | 10 Гбит/с |
| Нет | Нет | 1500 | 10 Гбит/с |
| Пользователям, Администраторам | Нет | 1500 | 10 Гбит/с |
| Пользователям, Администраторам | Нет | 1500 | 10 Гбит/с |
| Нет | Нет | 1450 | — |
| Нет | Нет | 1450 | — |
| Пользователям, Администраторам | DNS, NTP, Public API Loopbacks, доверенные внутренние ресурсы. Опционально. Например, прокси-серверы, серверы S3, корпоративные репозитории, API-ресурсы и прочее. | 1500 | 10 Гбит/с |
| Нет | Нет | 9050 | 10 Гбит/с |
| Нет | Нет | 9050 | 10 Гбит/с |
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, репозитории и прочее).
Сeph External — сеть для доступа к данным СХД/Ceph. Высокопроизводительная сеть для взаимодействия серверов Controllers и Compute с серверами Storage — то есть через данную сеть ВМ в Compute получают доступ к виртуальным дискам на Storage. Именно из-за объёма информации данная сеть вынесена в отдельную, в ней добавлена скорость и увеличен MTU.
Сeph Internal — кластерная сеть Ceph. Используется для синхронизации распределенных данных кластера Ceph между собой. Имеет высокие требования к стабильности и времени отклика, поэтому для обеспечения большей надёжности вынесена в отдельную сеть.
-
Deploy:
Management.
-
Controlplane:
Management.Management(дополнительная).Private API Loopbacks.Public API Transport (Portal).Public API Loopbacks.Kubernetes Internal PodsKubernetes Internal ServicesCloud External.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 | 1×Xeon Gold | 2×480ГБ SSD + 2×1ТБ SSD | 2×10Гб/с LACP |
Compute node High IOPS | Физический | 1 | 128 | 2×Xeon E5-2620v2 | 2×480ГБ SSD + 2×Single 960GB NVME | 6×10Гб/с LACP |
Установите РЕД ОС 7.3c на все хосты через 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
Для автоматической установки ОС можете использовать следующую конфигурацию 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 XXyour_root_passwordXXfirewall --disabledselinux --disabledauthconfig --enableshadow --passalgo=sha512 --enableldap --enableldapauth --enableldaptls --enablecache --kickstartnetwork --hostname=XXchangemeXX.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 | В чистой установке ОС нет ошибок сервисов, или они не влияют на установку и работу Платформы | Проверка с помощью команды:
| Исполнитель |