====== Tantor: Базовая архитектура стенда ======
===== (Этап 1) Проверка, подготовка. =====
> Для инсталляции СУБД Tantor необходимо удостовериться, что версия операционной системы соответствует документации по развертыванию продукта.
> Для практики нам понадобится 6 виртуальных сервера c предустановленной ОС ALSE 1.8 и сетевой связанностью.
>Например имена хостов:
> **tplatform.example** -- сервер для палатформы Tantor (4 cpu / 8гб ram / 40гб HDD)
> **db1 db2 db3** -- сервера для СУБД по (2 cpu / 2гб ram / 20гб HDD)
> **haproxy1 haproxy2** -- для балансировщика по (2 cpu / 2гб ram / 20гб HDD)
> Для платформы Tantor обязательно домен второго уровня, так как при установке дистрибутива в запросах инсталятора будет просить DNS имя, которое после установки будет использоваться адрестной строке браузера для доступа к графическому интерфейса
> Если планируете проходить практику на своем стенде, то для создания ВМ платформы Tantor обязательно используем host-passthrough в настройках ВМ гипервизора (прямой доступ к аппаратным ресурсам процессора) с доступам к инструкциям sse и avx.
> Иначе не заработает модуль Advanced analytics
> Как проверить что все хорошо - на вывод команд в CLI на хосте tplatform
Обе инструкции должны выводить ответ:
lscpu | grep -i sse
lscpu | grep -i avx
==== После создания ВМ подключаемся к серверам по ssh. ====
Пример в нашем практикуме через bastion хост:\\
''**ssh -i /<путь где лежит ключ>/ tantor@<Внешний IP>**''
ssh -i /home/test/.shh/00.key -p 2222 tantor@62.62.62.62
Далее с bastion подключаемся на хосты tplatform, db1, db2, db3, haproxy1, haproxy2
> !!! В рамках практикума подключение без пароля к хостам внутри стенда можно выполнять только с bastion, между узлами недоступно.
ssh tplatform
ssh db1
ssh db2
ssh db1
ssh haproxy1
ssh haproxy2
==== Прибивка статики ip на хостах (!! На стендах практикума делать не нужно). ====
На этапе подготовки важно, чтобы IP на хостах не менялись, так как Платформа Tantor будет подключать агентов по IP
На стендах практикума это уже сделано, но приводим пример как это настроить через CLI linux.
Убедиться, что используется interfaces или NetworkManager.
NetworkManager – более современный менеджер сетей.
Обычно он идет в комплекте с графическими окружениями Linux.
> NetworkManager включен, он может игнорировать interfaces.
nmcli device status
Смотрим вывод в колонке STATE, если без управления, переходим в настройку interfaces
Если да, в таком случае настройки лучше делать через
''nmcli'' # (утилита терминале)
Установить статический IP на eth0
sudo nmcli con add type ethernet con-name "my-eth" ifname eth0 ipv4.method manual ipv4.addresses 10.2.0.11/24 ipv4.gateway 10.2.0.1 ipv4.dns "10.2.0.254" ipv4.dns-search "example.dn"
Активировать подключение
sudo nmcli con up "my-eth"
или
nmtui # (текстовый интерфейс) в песевдографике терминала.
==== Настройка interfaces. ====
Редактируем фал настроек сетевого интерфейса
пример:
sudo nano /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.2.0.11
network 10.2.0.0
netmask 255.255.255.0 ## или 24
gateway 10.2.0.1
mtu 1420
dns-nameservers 10.2.0.254
dns-search example.dn ## суфикс как пример
source /etc/network/interfaces.d/*.cfg
Проверить синтаксис файла (опционально) без отключения loopback
sudo ifdown -a --exclude=lo && sudo ifup -a
Перезагрузка сервиса networking для применения конфигурации
sudo systemctl restart networking
==== Проверяем версии ОС Astra Linux и уровня защищенности на всех узлах. ====
cat /etc/astra_license
cat /etc/astra/build_version
Режимы защищенности Astra Linux (0 - Орел, 1 - Воронеж, 2 - Смоленск)
Проверить уровень защищенности ОС согласно требования заказчика:
sudo astra-modeswitch get
sudo astra-modeswitch getname
если необходимо сменить уровень защищенности, при условии, что у заказчика имеется лицензия на Astra Linux server (1 - Воронеж или 2 - Смоленск).
sudo astra-modeswitch set 0 ## или 1 или 2
sudo reboot ## перезагрузить ОС
==== Просмотр подключенных репозиториев для получения или обновления пакетов и ОС. ====
grep -r ^deb /etc/apt/sources.list /etc/apt/sources.list.d
Для каждой версии ОС используются свои публичные интернет репозитории, читайте тех док к ОС. \\
[[https://docs.astralinux.ru/1.7/guide/compound/repo]] \\
[[https://docs.astralinux.ru/1.8/guide/compound/repo]] \\
стандартные путь сслылок на публичные репозитории для ОС описаны тут:
sudo nano /etc/apt/sources.list
или
sudo apt edit-sources
> Как правило указаны frozen ветки /uu/* оперативного обновления для того, чтобы не произошло непреднамеренного обновление на самую последнюю версию ОС по ветке, которая может привести к не стабильной работе ПО Tantor.
> для получения более свежего релиза пакетов достаточно сменить uu/1 на uu/2, сохранить.
> В закрытом сегменте заказчика используются свои репозитории или ISO образы с личного кабинета Астра.
deb https://download.astralinux.ru/astra/frozen/1.8_x86-64/1.8.1/uu/2/extended-repository/ 1.8_x86-64 main non-free non-free-firmware contrib
deb https://download.astralinux.ru/astra/frozen/1.8_x86-64/1.8.1/uu/2/main-repository/ 1.8_x86-64 main non-free non-free-firmware contrib
Затем выполнить обновление списка пакетов
sudo apt update
Если необходимо обновить всю ОС в зависимости от ситуации и требования заказчика.
sudo apt dist-upgrade
Проверяем на всех хостах, что все необходимые локали присутсвуют в системе.
locale -a ## смотрим какие уже скопмилированы
sudo nano /etc/locale.gen ## убрать комментарий en_US.UTF-8 и ru_RU.utf8
sudo locale-gen
==== Проверим файл hosts и имена для каждого из хостов. ====
Вывод имени хоста
hostname -f
Изменить имя хоста, если необходимо на каждом сервере свое
sudo hostnamectl set-hostname <новое_имя_хоста>
Внести список хостов на каждом сервере и сохранить, если нет DNS сервера в сети.
Но в целом это хорошая практика, если даже DNS сервер есть, его аварии не исключены.
sudo nano /etc/hosts
**Пример:**
''10.2.0.2 tplatform.example tplatform''
''10.2.0.11 db1''
''10.2.0.12 db2''
''10.2.0.13 db3''
''10.2.0.21 haproxy1''
''10.2.0.22 haproxy2''
Проверим
cat /etc/hosts
==== Установка утилит и пакетов. ====
На все хосты устанавливаем
sudo apt install htop iperf wget chrony nmap bash-completion -y
> Зависимости нужны для Tantor СУБД на хостах db1 db2 db3
sudo apt install libllvm13 libpython3.11 libxsldb1.1 libz3-4 lsof apt-transport-https gnupg -y
> При установке пакета СУБД Tantor их сам запросит и установит через сетевой репозиторий.
На хосте tplatform устанавливаем графику и браузер, а также Docker не менее 20.10.13 версии
sudo apt install docker.io docker-compose firefox xrdp fly-all-main -y
Проверить Docker версию на хосте tplatform
docker -v && docker-compose -v
Полный вывод
docker version
docker-compose version
==== Cлужба синхронизации времени, Выполняем на всех хостах. ====
Ставим автозагрузку службы
sudo systemctl enable chrony
Проверка статуса
sudo systemctl status chrony
sudo chronyc tracking ## проверка текущего состояния
sudo chronyc sources -v ## список NTP-серверов
sudo chronyc makestep ## немедленная корректировка времени
В Chrony список серверов задаётся в конфигурационном файле /etc/chrony/chrony.conf
После редактирования перезапустит службу sudo systemctl restart chrony
timedatectl ## вывести текущий часовой пояс и время
timedatectl list-timezones ## вывести варианты ЧП
sudo timedatectl set-timezone <название_часового_пояса>
==== Проверка сетевой доступности портов ====
На узле СУБД утилита iperf запускается в режиме сервера (ключ -s), по умолчанию используется протокол TCP, выбран порт 5432 (ключ -p)
Пример проверки порта запускаем iperf в режиме сервера на хостах СУБД db1 db2 db3
iperf -s -p 5432
На tplatform запускается в режиме клиента (указывается узлы СУБД по очереди)
iperf -p 5432 -c db1
iperf -p 5432 -c db2
iperf -p 5432 -c db3
или через утилиту nmap:
> -sT - проверка по протоколу TCP
> -p - номер, проверяемого порта
> - адрес проверяемого узла
Пример, проверяем доступность порта db1, команду выполняем например с узла tplatform
sudo nmap -sT -p 5432 db1
sudo nmap -sT -p 5432 db2
sudo nmap -sT -p 5432 db3
Посмотреть табличку с портами на каждом хосте, когда все развернете.
ss -ntlup
[[vji:tantor2:start|Этап 2 Подготовка]]