vji:tantor1:start
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
vji:tantor1:start [2025/07/31 11:50] – vji | vji:tantor1:start [2025/08/01 10:38] (текущий) – vji | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ===== Листинг команд: Базовая архитектура стенда ===== | + | ====== Tantor: Базовая архитектура стенда |
+ | ===== (Этап 1) Проверка, | ||
- | **Этап | + | > Для инсталляции СУБД Tantor необходимо удостовериться, |
- | Проверка, подготовка. | + | > Для практики нам понадобится 6 виртуальных сервера |
+ | > | ||
+ | > **tplatform.example** -- сервер | ||
+ | > **db1 db2 db3** -- сервера для СУБД по (2 cpu / 2гб ram / 20гб HDD) | ||
+ | > **haproxy1 haproxy2** -- для балансировщика по (2 cpu / 2гб ram / 20гб HDD) | ||
- | **Для инсталляции СУБД Tantor необходимо удостовериться, | ||
- | операционной системы соответствует документации по развертыванию продукта.** | ||
- | === Для практики нам понадобится 6 виртуальных сервера | + | > Для платформы Tantor обязательно домен второго уровня, |
- | //c предустановленной ОС ALSE 1.8 и сетевой связанностью.// | + | > Если |
- | **Например имена хостов:** | + | > Иначе не заработает модуль Advanced analytics |
- | * 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 обязательно домен второго уровня, | + | > Как проверить что все хорошо - на вывод команд в CLI на хосте tplatform |
- | //так как при установке дистрибутива в запросах инсталятора будет просить DNS имя | + | |
- | которое после установки будет использоваться адрестной строке браузера | + | |
- | для доступа к графическому интерфейса// | + | |
- | + | ||
- | **Если планируете проходить практику на своем стенде, | + | |
- | //для создания ВМ платформы Tantor обязательно используем host-passthrough в настройках ВМ гипервизора | + | |
- | (прямой доступ к аппаратным ресурсам процессора) с доступам к инструкциям sse и avx. | + | |
- | Иначе не заработает модуль Advanced analytics | + | |
- | Как проверить что все хорошо - на вывод команд в CLI на хосте tplatform | + | |
- | Обе инструкции должны выводить ответ:// | + | |
+ | Обе инструкции должны выводить ответ: | ||
< | < | ||
lscpu | grep -i sse | lscpu | grep -i sse | ||
Строка 34: | Строка 25: | ||
</ | </ | ||
- | | + | ==== После создания ВМ подключаемся к серверам по ssh. ==== |
- | + | ||
- | === Пример в нашем практикуме через bastion хост: | + | |
- | < | + | |
- | ssh -i /< | + | |
- | </ | + | |
+ | Пример в нашем практикуме через bastion хост:\\ | ||
+ | '' | ||
< | < | ||
ssh -i / | ssh -i / | ||
</ | </ | ||
- | **Далее с bastion подключаемся на хосты tplatform, db1, db2, db3, haproxy1, haproxy2** | + | Далее с bastion подключаемся на хосты tplatform, db1, db2, db3, haproxy1, haproxy2 |
- | //!!! В рамках практикума подключение без пароля к хостам внутри стенда | + | |
- | можно выполнять только с bastion, между узлами недоступно.// | + | > !!! В рамках практикума подключение без пароля к хостам внутри стенда можно выполнять только с bastion, между узлами недоступно. |
< | < | ||
Строка 58: | Строка 46: | ||
</ | </ | ||
- | === Прибивка статики ip на хостах (!! На стендах практикума делать не нужно). === | + | ==== Прибивка статики ip на хостах (!! На стендах практикума делать не нужно). |
- | **На этапе подготовки важно, чтобы IP на хостах не менялись, | + | На этапе подготовки важно, чтобы IP на хостах не менялись, |
- | //так как Платформа Tantor будет подключать агентов по IP | + | На стендах практикума это уже сделано, |
- | На стендах практикума это уже сделано, | + | |
- | это настроить через CLI linux.// | + | |
- | **Убедиться, | + | Убедиться, |
- | //NetworkManager – более современный менеджер сетей. | + | NetworkManager – более современный менеджер сетей. |
- | Обычно он идет в комплекте с графическими окружениями Linux.// | + | Обычно он идет в комплекте с графическими окружениями Linux. |
- | + | ||
- | ---- | + | |
- | **NetworkManager включен, | + | |
- | ---- | + | |
+ | > NetworkManager включен, | ||
< | < | ||
nmcli device status | nmcli device status | ||
</ | </ | ||
+ | Смотрим вывод в колонке STATE, если без управления, | ||
+ | Если да, в таком случае настройки лучше делать через | ||
+ | '' | ||
- | // | + | Установить статический IP на eth0 |
- | Если да, в таком случае настройки лучше делать через// | + | |
- | < | + | |
- | + | ||
- | **Установить статический IP на eth0** | + | |
< | < | ||
sudo nmcli con add type ethernet con-name " | sudo nmcli con add type ethernet con-name " | ||
</ | </ | ||
- | + | Активировать подключение | |
- | **Активировать подключение** | + | |
< | < | ||
sudo nmcli con up " | sudo nmcli con up " | ||
+ | </ | ||
+ | или | ||
+ | < | ||
+ | nmtui # (текстовый интерфейс) в песевдографике терминала. | ||
</ | </ | ||
- | // | + | ==== Настройка interfaces. |
- | + | ||
- | < | + | |
- | + | ||
- | ---- | + | |
- | **Настройка interfaces.** | + | |
- | ---- | + | |
- | + | ||
- | **Редактируем фал настроек сетевого интерфейса** | + | |
- | // | + | |
+ | Редактируем фал настроек сетевого интерфейса | ||
+ | пример: | ||
< | < | ||
sudo nano / | sudo nano / | ||
</ | </ | ||
- | + | <code> | |
- | <file> | + | |
auto lo | auto lo | ||
iface lo inet loopback | iface lo inet loopback | ||
Строка 122: | Строка 97: | ||
dns-nameservers 10.2.0.254 | dns-nameservers 10.2.0.254 | ||
dns-search example.dn | dns-search example.dn | ||
+ | </ | ||
+ | < | ||
source / | source / | ||
- | </file> | + | </code> |
- | + | ||
- | **Проверить синтаксис файла (опционально) без отключения loopback** | + | |
+ | Проверить синтаксис файла (опционально) без отключения loopback | ||
< | < | ||
sudo ifdown -a --exclude=lo && sudo ifup -a | sudo ifdown -a --exclude=lo && sudo ifup -a | ||
</ | </ | ||
- | + | Перезагрузка сервиса networking для применения конфигурации | |
- | **Перезагрузка сервиса networking для применения конфигурации** | + | |
< | < | ||
sudo systemctl restart networking | sudo systemctl restart networking | ||
</ | </ | ||
- | === Проверяем версии ОС Astra Linux и уровня защищенности на всех узлах. === | + | ==== Проверяем версии ОС Astra Linux и уровня защищенности на всех узлах. ==== |
< | < | ||
cat / | cat / | ||
Строка 145: | Строка 117: | ||
</ | </ | ||
- | **Режимы защищенности Astra Linux (0 - Орел, 1 - Воронеж, | + | Режимы защищенности Astra Linux (0 - Орел, 1 - Воронеж, |
- | //Проверить уровень защищенности ОС согласно требования заказчика: | + | Проверить уровень защищенности ОС согласно требования заказчика: |
< | < | ||
sudo astra-modeswitch get | sudo astra-modeswitch get | ||
Строка 153: | Строка 124: | ||
</ | </ | ||
- | //если необходимо сменить уровень защищенности, | + | если необходимо сменить уровень защищенности, |
- | при условии, | + | |
- | на Astra Linux server (1 - Воронеж или 2 - Смоленск).// | + | |
< | < | ||
sudo astra-modeswitch set 0 ## или 1 или 2 | sudo astra-modeswitch set 0 ## или 1 или 2 | ||
Строка 162: | Строка 130: | ||
</ | </ | ||
- | === Просмотр подключенных репозиториев для получения или обновления пакетов и ОС. === | + | ==== Просмотр подключенных репозиториев для получения или обновления пакетов и ОС. ==== |
< | < | ||
grep -r ^deb / | grep -r ^deb / | ||
</ | </ | ||
- | + | Для каждой версии ОС используются свои публичные интернет репозитории, | |
- | **Для каждой версии ОС используются свои публичные интернет репозитории, | + | [[https:// |
- | [[https:// | + | [[https:// |
- | [[https:// | + | стандартные путь сслылок на публичные репозитории для ОС описаны тут: |
- | //стандартные путь сслылок на публичные репозитории для ОС описаны тут:// | + | |
< | < | ||
sudo nano / | sudo nano / | ||
</ | </ | ||
- | //или// | + | или |
< | < | ||
sudo apt edit-sources | sudo apt edit-sources | ||
</ | </ | ||
- | //Как правило указаны frozen ветки /uu/* оперативного обновления | + | > Как правило указаны frozen ветки /uu/* оперативного обновления для того, чтобы не произошло непреднамеренного обновление на самую последнюю версию ОС по ветке, которая может привести к не стабильной работе ПО Tantor. |
- | для то го, чтобы не произошло непреднамеренного обновление | + | > для получения более свежего релиза пакетов достаточно сменить uu/1 на uu/2, сохранить. |
- | на самую последнюю версию ОС по ветке, | + | > В закрытом сегменте заказчика используются свои репозитории или ISO образы с личного кабинета Астра. |
- | которая может привести к не стабильной работе ПО Tantor. | + | |
- | для получения более свежего релиза пакетов достаточно сменить uu/1 на uu/2, сохранить. | + | |
- | В закрытом сегменте заказчика используются свои репозитории или ISO образы с личного кабинета Астра.// | + | |
< | < | ||
Строка 192: | Строка 155: | ||
deb https:// | deb https:// | ||
</ | </ | ||
- | + | Затем выполнить обновление списка пакетов | |
- | **Затем выполнить обновление списка пакетов** | + | |
< | < | ||
sudo apt update | sudo apt update | ||
</ | </ | ||
- | + | Если необходимо обновить всю ОС в зависимости от ситуации и требования заказчика. | |
- | //Если необходимо обновить всю ОС в зависимости от ситуации и требования заказчика.// | + | |
< | < | ||
sudo apt dist-upgrade | sudo apt dist-upgrade | ||
</ | </ | ||
- | + | Проверяем на всех хостах, | |
- | **Проверяем на всех хостах, | + | |
< | < | ||
- | locale -a | + | locale -a ## смотрим какие уже скопмилированы |
sudo nano / | sudo nano / | ||
sudo locale-gen | sudo locale-gen | ||
</ | </ | ||
- | === Проверим файл hosts и имена для каждого из хостов. === | + | ==== Проверим файл hosts и имена для каждого из хостов. ==== |
- | + | ||
- | **Вывод имени хоста** | + | |
+ | Вывод имени хоста | ||
< | < | ||
hostname -f | hostname -f | ||
</ | </ | ||
- | + | Изменить имя хоста, если необходимо на каждом сервере свое | |
- | **Изменить имя хоста, если необходимо на каждом сервере свое** | + | |
< | < | ||
sudo hostnamectl set-hostname < | sudo hostnamectl set-hostname < | ||
</ | </ | ||
- | + | Внести список хостов на каждом сервере и сохранить, | |
- | **Внести список хостов на каждом сервере и сохранить, | + | Но в целом это хорошая практика, |
- | //Но в целом это хорошая практика, | + | |
< | < | ||
sudo nano /etc/hosts | sudo nano /etc/hosts | ||
</ | </ | ||
- | |||
**Пример: | **Пример: | ||
- | < | + | '' |
- | 10.2.0.2 | + | |
- | 10.2.0.11 | + | |
- | 10.2.0.12 | + | |
- | 10.2.0.13 | + | |
- | 10.2.0.21 | + | |
- | 10.2.0.22 | + | |
- | </ | + | |
- | **Проверим** | + | '' |
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | Проверим | ||
< | < | ||
cat /etc/hosts | cat /etc/hosts | ||
</ | </ | ||
- | === Установка утилит и пакетов. === | + | ==== Установка утилит и пакетов. ==== |
- | + | ||
- | **На все хосты устанавливаем** | + | |
+ | На все хосты устанавливаем | ||
< | < | ||
sudo apt install htop iperf wget chrony nmap bash-completion -y | sudo apt install htop iperf wget chrony nmap bash-completion -y | ||
</ | </ | ||
- | //Зависимости нужны для Tantor СУБД на хостах db1 db2 db3 | + | > Зависимости нужны для Tantor СУБД на хостах db1 db2 db3 |
- | // sudo apt install libllvm13 libpython3.11 libxsldb1.1 libz3-4 lsof apt-transport-https gnupg -y | + | < |
- | // При установке пакета СУБД Tantor их сам запросит и установит через сетевой репозиторий.// | + | sudo apt install libllvm13 libpython3.11 libxsldb1.1 libz3-4 lsof apt-transport-https gnupg -y |
+ | </code> | ||
+ | > При установке пакета СУБД Tantor их сам запросит и установит через сетевой репозиторий. | ||
- | **На хосте tplatform устанавливаем графику и браузер, | ||
+ | На хосте tplatform устанавливаем графику и браузер, | ||
< | < | ||
sudo apt install docker.io docker-compose firefox xrdp fly-all-main -y | sudo apt install docker.io docker-compose firefox xrdp fly-all-main -y | ||
</ | </ | ||
- | + | Проверить Docker версию на хосте tplatform | |
- | **Проверить Docker версию на хосте tplatform** | + | |
< | < | ||
docker -v && docker-compose -v | docker -v && docker-compose -v | ||
</ | </ | ||
- | + | Полный вывод | |
- | **Полный вывод** | + | |
< | < | ||
docker version | docker version | ||
Строка 282: | Строка 232: | ||
</ | </ | ||
- | === Cлужба синхронизации времени, | + | ==== Cлужба синхронизации времени, |
- | + | ||
- | **Ставим автозагрузку службы** | + | |
+ | Ставим автозагрузку службы | ||
< | < | ||
sudo systemctl enable chrony | sudo systemctl enable chrony | ||
</ | </ | ||
- | + | Проверка статуса | |
- | **Проверка статуса** | + | |
< | < | ||
sudo systemctl status chrony | sudo systemctl status chrony | ||
Строка 299: | Строка 246: | ||
</ | </ | ||
- | //В Chrony список серверов задаётся в конфигурационном файле / | + | В Chrony список серверов задаётся в конфигурационном файле / |
- | После редактирования перезапустит службу sudo systemctl restart chrony// | + | После редактирования перезапустит службу sudo systemctl restart chrony |
< | < | ||
timedatectl | timedatectl | ||
Строка 308: | Строка 254: | ||
</ | </ | ||
- | === Проверка сетевой доступности портов | + | ==== Проверка сетевой доступности портов ==== |
- | //На узле СУБД утилита iperf запускается в режиме сервера (ключ -s), | + | |
- | по умолчанию используется протокол TCP, выбран порт 5432 (ключ -p)// | + | |
- | **Пример проверки порта запускаем iperf в режиме сервера | + | На узле СУБД утилита |
+ | Пример проверки порта запускаем iperf в режиме сервера на хостах СУБД db1 db2 db3 | ||
< | < | ||
iperf -s -p 5432 | iperf -s -p 5432 | ||
</ | </ | ||
- | **На tplatform запускается в режиме клиента (указывается узлы СУБД по очереди)** | + | На tplatform запускается в режиме клиента (указывается узлы СУБД по очереди) |
< | < | ||
iperf -p 5432 -c db1 | iperf -p 5432 -c db1 | ||
Строка 326: | Строка 270: | ||
</ | </ | ||
- | //или через утилиту nmap: | + | или через утилиту nmap: |
- | //-sT - проверка по протоколу TCP | + | |
- | //-p - номер, проверяемого порта | + | |
- | //<IP адрес> | + | |
- | // | + | |
+ | > -sT - проверка по протоколу TCP | ||
+ | > -p - номер, проверяемого порта | ||
+ | > <IP адрес> | ||
+ | |||
+ | |||
+ | Пример, | ||
< | < | ||
sudo nmap -sT -p 5432 db1 | sudo nmap -sT -p 5432 db1 | ||
Строка 338: | Строка 284: | ||
</ | </ | ||
- | **Посмотреть табличку с портами на каждом хосте, когда все развернете.** | + | Посмотреть табличку с портами на каждом хосте, когда все развернете. |
+ | < | ||
+ | ss -ntlup | ||
+ | </ | ||
+ | ===== (Этап 2) Подготовка===== | ||
+ | |||
+ | Скачиваем пакет СУБД Tantor и скрипт инсталятор | ||
+ | [[https:// | ||
+ | |||
+ | Скачиваем скрипт установки через публичный репозиторий Tantor | ||
+ | Будем работать под root, но можно также и через sudo | ||
+ | < | ||
+ | sudo -i | ||
+ | mkdir distr | ||
+ | cd distr | ||
+ | wget https:// | ||
+ | chmod +x db_installer.sh | ||
+ | </ | ||
+ | |||
+ | Если закрытый сегмент, | ||
+ | Tantor СУБД нужной версии и скрипт инсталяции предварительно на к себе носитель из: | ||
+ | [[https:// | ||
+ | |||
+ | be-версия Tantor СУБД для тестового использования можно скачать | ||
+ | [[https:// | ||
+ | |||
+ | Устанавливаем пакет СУБД Tantor на db1 db2 db3. | ||
+ | [[https:// | ||
+ | |||
+ | |||
+ | ==== Установка через доступ интернета be-версия ==== | ||
+ | |||
+ | Определим репозиторий | ||
+ | < | ||
+ | export NEXUS_URL=" | ||
+ | </ | ||
+ | |||
+ | > Установка из интернета через скрипт установки СУБД Tantor | ||
+ | > Описание ключей можно посмотреть внутри скрипта | ||
+ | > --do-initdb | ||
+ | > --major-version=16 | ||
+ | > --edition=be | ||
+ | |||
+ | |||
+ | < | ||
+ | ./ | ||
+ | --do-initdb \ | ||
+ | --major-version=16 \ | ||
+ | --edition=be | ||
+ | </ | ||
+ | |||
+ | Пример установки в фоновом режиме с выводом в лог файл | ||
+ | Конструкция в Linux системах ''" | ||
+ | Работает для любого выполнения команд или скриптов, | ||
+ | рекомендую изучить дополнительно через поиск в интернете работу с Linux CLI | ||
+ | < | ||
+ | nohup ./ | ||
+ | --do-initdb \ | ||
+ | --major-version=16 \ | ||
+ | --edition=be > install_tantor_be_serever.log 2>&1 & | ||
+ | </ | ||
+ | Чтение изменения лога в реальном времени | ||
+ | < | ||
+ | tail -1000f install_tantor_be_serever.log | ||
+ | </ | ||
+ | |||
+ | ==== Способ установки локально, | ||
+ | |||
+ | Пример копирования файлов на стенд из практикума | ||
+ | Скачиваем файллы из личного кабинета астры [[https:// | ||
+ | Перейдите в каталог, | ||
+ | < | ||
+ | cd /tmp | ||
+ | </ | ||
+ | Копируем сначала на bastion в /tmp | ||
+ | < | ||
+ | scp -i / | ||
+ | scp -i / | ||
+ | </ | ||
+ | Далее подключившись по ssh на bastion и с него копируем на db1 db2 db3 | ||
+ | < | ||
+ | ssh -i / | ||
+ | cd /tmp | ||
+ | scp tantor-be-server-16_16.8.0_amd64.deb tantor@db1:/ | ||
+ | scp db_installer.sh tantor@db1:/ | ||
+ | scp tantor-be-server-16_16.8.0_amd64.deb tantor@db2:/ | ||
+ | scp db_installer.sh tantor@db2:/ | ||
+ | scp tantor-be-server-16_16.8.0_amd64.deb tantor@db3:/ | ||
+ | scp db_installer.sh tantor@db2:/ | ||
+ | </ | ||
+ | Подключаемся через bastion к хостам db1, db2, db3 | ||
+ | < | ||
+ | ssh db1 | ||
+ | sudo -i | ||
+ | cd /tmp | ||
+ | chmod +x db_installer.sh | ||
+ | </ | ||
+ | Установка пакета через скрипт с инициализацией БД | ||
+ | < | ||
+ | ./ | ||
+ | --from-file=/ | ||
+ | --do-initdb | ||
+ | </ | ||
+ | |||
+ | ==== После установки пакета СУБД, назначаем права пользователя postgres на структуру каталогов на хостах | ||
+ | < | ||
+ | sudo chown -R postgres: | ||
+ | </ | ||
+ | Сменим пароль на УЗ postgres в операционной системе на хостах | ||
+ | |||
+ | |||
+ | > запомните или запишите, | ||
+ | |||
+ | < | ||
+ | sudo passwd postgres | ||
+ | </ | ||
+ | Посмотрим информацию о БД | ||
+ | < | ||
+ | sudo -iu postgres pg_controldata / | ||
+ | </ | ||
+ | посмотреть процесс работы инстанса | ||
+ | < | ||
+ | sudo -iu postgres cat / | ||
+ | sudo -iu postgres psql -c " | ||
+ | </ | ||
+ | |||
+ | Допускается установка нескольких экземпляра разной версии СУБД на один узел. | ||
+ | При этом название экземпляров, | ||
+ | |||
+ | ==== Проверка службы и автозагрузка сервиса СУБД Tantor. ==== | ||
+ | |||
+ | |||
+ | > Ключи утилиты systemctl: | ||
+ | > status - показать запущен (loaded) сервис и его состояние (active) работает | ||
+ | |||
+ | < | ||
+ | sudo systemctl enable tantor-be-server-16.service | ||
+ | sudo systemctl status tantor-be-server-16.service | ||
+ | </ | ||
+ | Посмотреть запущенные процессы | ||
+ | < | ||
+ | ps -efH | grep tantor | ||
+ | </ | ||
+ | Проверка запуска сервиса СУБД Tantor по журналам | ||
+ | Проверка осуществляется запуском утилиты journalctl с ключем -u , казывающим наименование сервиса, | ||
+ | < | ||
+ | sudo journalctl -u tantor-be-server-16.service | ||
+ | </ | ||
+ | |||
+ | |||
+ | > Настройка сетевых соединений к серверу СУБД производится в файлах параметров **postgresql.conf** и **pg_hba.conf** в соответствии с требованием заказчика. | ||
+ | > По умолчанию сетевые настройки в файле pg_hba.conf позволяют подключиться только суперпользователю postgres СУБД Tantor непосредственно с сервера через **local unix socket**. | ||
+ | > Для разрешения подключения с других узлов необходимо внести соответствующие строки в файлы **pg_hba.conf** и postgresql.conf. | ||
+ | > В конце листинга есть **FAQ** доп информация: | ||
+ | |||
+ | ===== (Этап 3) Установка Платформы Tantor. ===== | ||
+ | |||
+ | Скачиваем и Распаковываем архив с Платформой Tantor. | ||
+ | [[https:// | ||
+ | |||
+ | ==== Способ при наличии доступа в интернет ==== | ||
+ | |||
+ | Загрузим инсталлятор на хост tplatform согласно документации. | ||
+ | Всегда смотрите новую версию по ссылке выше. | ||
+ | < | ||
+ | sudo -i | ||
+ | mkdir distr | ||
+ | cd distr | ||
+ | wget https:// | ||
+ | </ | ||
+ | Распакуем из архива | ||
+ | < | ||
+ | tar -xvf tantor-eco-5.3.0.tar.gz | ||
+ | </ | ||
+ | |||
+ | ==== Способ, | ||
+ | |||
+ | Скачиваем файллы из личного кабинета астры [[https:// | ||
+ | < | ||
+ | cd /tmp | ||
+ | wget https:// | ||
+ | </ | ||
+ | Пример копирования файлов на стенд tplatform из практикума | ||
+ | Копируем сначала на bastion в /tmp | ||
+ | < | ||
+ | scp -i / | ||
+ | </ | ||
+ | Далее подключившись по ssh на bastion и с него копируем на tplatform | ||
+ | < | ||
+ | ssh -i / | ||
+ | cd /tmp | ||
+ | scp tantor-eco-5.3.0.tar.gz tantor@tplatform:/ | ||
+ | </ | ||
+ | Далее с bastion хоста подключаемся на хост tplatform | ||
+ | < | ||
+ | ssh tplatform | ||
+ | sudo -i | ||
+ | cd /tmp | ||
+ | </ | ||
+ | Распакуем из архива | ||
+ | < | ||
+ | tar -xvf tantor-eco-5.3.0.tar.gz | ||
+ | </ | ||
+ | |||
+ | ==== Инсталяция Платформы Tantor. ==== | ||
+ | |||
+ | |||
+ | [[https:// | ||
+ | |||
+ | |||
+ | Для установки Платформы на Astra Linux версии 1.8.2 необходимо переключить уровень безопасности для docker на astra-sec-level-6 | ||
+ | < | ||
+ | sudo mkdir -p / | ||
+ | sudo nano / | ||
+ | </ | ||
+ | Вставляем и сохраняем | ||
+ | < | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | </ | ||
+ | Перезапускаем службу docker | ||
+ | < | ||
+ | sudo systemctl restart docker | ||
+ | </ | ||
+ | Запуск установки из каталога, | ||
+ | < | ||
+ | sudo ./installer | ||
+ | </ | ||
+ | В ходе интерактивной установки будут запрошены данные: | ||
+ | ^ Параметр ^ Значение ^ Описание ^ | ||
+ | | **Tantor Platform administrator email:** | < | ||
+ | | **Tantor Platform administrator name:** | < | ||
+ | | **Tantor Platform domain name:** | < | ||
+ | | **SSL certificates match domain name**: | N | Cертификаты SSL для имени домена Платформы, | ||
+ | | **Сreate the self-signed certificates: | ||
+ | | **set integration with SMTP server:** | N | Настройки сервера почты в рамках практикума пропускаем | | ||
+ | |||
+ | если бы указывали настройки сервера почты: | ||
+ | ^ Параметр ^ Описание ^ | ||
+ | | **SMTP server domain name:** | доменное имя сервера электронной почты, если имеется, | ||
+ | | **SMTP server domain name port** | порт сервера электронной почты | | ||
+ | | **SMTP server user email** | имя постового ящика на который будут отправляться оповещения от Платформы Tantor | | ||
+ | | **SMTP server user password** | пароль почтового ящика | | ||
+ | |||
+ | |||
+ | > Если не указали настройки почты, и после установки хотите до настроить, | ||
+ | |||
+ | ^ Параметр ^ Описание ^ | ||
+ | | **Which platform setup deployment you want to install? (1/2/3):** 3 | выбор конфигурации Платформы Tantor | | ||
+ | |||
+ | |||
+ | > ВАЖНО!!! После установки, | ||
+ | |||
+ | |||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | |||
+ | ==== Подключение к Платформе, | ||
+ | |||
+ | подключаемся по RDP на хост tplatform и выполняем выше указанные действия в браузере. | ||
+ | Доступ по RDP на tplatform < | ||
+ | '' | ||
+ | '' | ||
+ | |||
+ | * Первое подключение к Платформе с помощью браузера, | ||
+ | * Согласиться с политикой лицензирования и нажать Ок | ||
+ | * Установить новый пароль суперпользователя Платформы | ||
+ | * Зайти в тенант | ||
+ | * Создать новое рабочее пространство New workspace (имя произвольно) | ||
+ | |||
+ | ==== Проверки успешности установки и запуска сервисов Платформы. Состояние контейнеров Платформы можно посмотреть командами. ==== | ||
+ | |||
+ | Убедиться, | ||
+ | < | ||
+ | docker ps | ||
+ | </ | ||
+ | Если необходимо перезагрузить платформу | ||
+ | < | ||
+ | cd / | ||
+ | docker-compose stop | ||
+ | docker-compose start | ||
+ | docker-compose ps | ||
+ | </ | ||
+ | Порты на узле Платформы | ||
< | < | ||
ss -ntlup | ss -ntlup | ||
+ | </ | ||
+ | |||
+ | ==== Запуск утилиты диагностики для Платформы sdc-tantor, идет в комплекте архива. В случае неудачного завершения установки или обновления платформы. ==== | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | < | ||
+ | cd distr | ||
+ | |||
+ | chmod 755 ./ | ||
+ | |||
+ | ./ | ||
+ | </ | ||
+ | Архив создан и сохранён в: | ||
+ | '' | ||
+ | |||
+ | > Будет выполнен сбор системной конфигурации и диагностической информации в основном о работе докер контейнеров и информации о хосте. | ||
+ | > Приложите этот файл в созданную в техническую поддержку заявку. | ||
+ | |||
+ | ===== (этап 4) установка агента Tantor и последующем добавлении инстанса СУБД в платформу ===== | ||
+ | |||
+ | Для установки агента Tantor и последующем добавлении инстанса СУБД в платформу необходимо перейти на сервер СУБД и произвести предложенные Платформой действия. | ||
+ | [[https:// | ||
+ | |||
+ | |||
+ | > !! Установку агента всегда начинаем на лидере в кластере !! | ||
+ | |||
+ | |||
+ | * Элемент ненумерованного спискаОткрыть рабочее пространство в Платформе | ||
+ | * Элемент ненумерованного спискаДобавить новый инстанс (сервер СУБД) Add instance | ||
+ | * Элемент ненумерованного спискаВыбрать тип инстанса (в наше примере Tantor) | ||
+ | * Элемент ненумерованного спискаУказать IP адрес, порт и имя БД | ||
+ | * Элемент ненумерованного спискаПлатформа сообщает, | ||
+ | * Элемент ненумерованного спискаДалее необходимо выполнить ряд предлагаемых Платформой действий на узле сервера СУБД, для исключения ошибки скопировать, | ||
+ | |||
+ | Узнаем IP адрес нашего сервера СУБД | ||
+ | < | ||
+ | ip a | ||
+ | </ | ||
+ | пример вывода: | ||
+ | < | ||
+ | inet 10.2.0.11/ | ||
+ | </ | ||
+ | Установка PMA агента Платформы Tantor при условии если везде вход по паролю и через графический интерфейс команда не проходит, | ||
+ | читайте оф документацию [[https:// | ||
+ | пример: | ||
+ | < | ||
+ | pmaagent configure --config_postgres_patroni -h 10.2.0.11 -p 5432 -d postgres -U postgres -W postgres -P 8008 -D | ||
+ | </ | ||
+ | дополнительно смотрите тех документацию по ссылке выше, а также '' | ||
+ | < | ||
+ | pmaagent --help | ||
+ | pmaagent instances add --help | ||
+ | </ | ||
+ | |||
+ | ==== Проверка службы старта агента. ==== | ||
+ | |||
+ | < | ||
+ | sudo systemctl daemon-reload | ||
+ | sudo systemctl start pmaagent.service | ||
+ | sudo systemctl status pmaagent.service | ||
+ | </ | ||
+ | |||
+ | Если нет связи с агентом, | ||
+ | < | ||
+ | systemctl stop pmaagent.service | ||
+ | systemctl start pmaagent.service | ||
+ | </ | ||
+ | Конфиг агента \\ | ||
+ | ''/ | ||
+ | Лог агента \\ | ||
+ | ''/ | ||
+ | |||
+ | ==== Установка дополнительных элементов для взаимодействия Птатформы и СУБД. (расширений / EXTENSION в СУБД Tantor)(pg_stat_statements, | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | Для работы Advanced analytics, создание ключей RSA под root на сервере tplatform | ||
+ | < | ||
+ | sudo -i | ||
+ | ssh-keygen -t rsa | ||
+ | </ | ||
+ | Скопируйте в нужные директории созданные ключи следующей командой: | ||
+ | < | ||
+ | cp / | ||
+ | </ | ||
+ | Скопируйте созданный публичный ключ на сервер базы данных, | ||
+ | < | ||
+ | ssh-copy-id -i / | ||
+ | ssh-copy-id -i / | ||
+ | ssh-copy-id -i / | ||
+ | </ | ||
+ | Проверьте возможность зайти на сервер базы данных с помощью добавленного ключа: | ||
+ | < | ||
+ | ssh postgres@db1 | ||
+ | ssh postgres@db2 | ||
+ | ssh postgres@db3 | ||
+ | </ | ||
+ | |||
+ | ==== Настройка параметров и расширений / EXTENSION на наблюдаемой СУБД: pg_stat_statements, | ||
+ | |||
+ | ---- | ||
+ | |||
+ | > Текущий вариант через "alter system set", создаст отдельный файл / | ||
+ | > Данный способ работает только в рамках текущего сервера СУБД в standalone. | ||
+ | |||
+ | > В отказоустойчивых кластерах типа Patroni, необходимо использовать единую конфигурацию для всех узлов. | ||
+ | > Также данные настройки можно применить с помощью Платформы через модуль Конфигурации. | ||
+ | |||
+ | |||
+ | Подключаемся к одному из серверов, | ||
+ | В дальнейшем эти операции нужно выполнить на каждой наблюдаемой БД. | ||
+ | < | ||
+ | sudo -iu postgres psql | ||
+ | </ | ||
+ | Выполняем команды на создание расширений и параметров: | ||
+ | Если в параметре '' | ||
+ | < | ||
+ | create EXTENSION pg_stat_statements; | ||
+ | create EXTENSION pg_store_plans; | ||
+ | alter system set shared_preload_libraries = pg_stat_statements, | ||
+ | alter system set logging_collector = on; | ||
+ | alter system set log_line_prefix = '%m [%p:%v] [%d] %r %a '; | ||
+ | alter system set log_lock_waits = on; | ||
+ | alter system set lc_messages = ' | ||
+ | alter system set track_io_timing = on; | ||
+ | alter system set deadlock_timeout = 1000; | ||
+ | alter system set log_min_duration_statement = 1000; | ||
+ | alter system set log_filename = ' | ||
+ | alter system set log_destination = ' | ||
+ | alter system set log_statement = ' | ||
+ | </ | ||
+ | Перезагрузка СУБД и проверка сервиса СУБД, должно быть '' | ||
+ | < | ||
+ | sudo systemctl restart tantor-be-server-16.service | ||
+ | sudo systemctl status tantor-be-server-16.service | ||
+ | </ | ||
+ | Добавляем параметры auto_explain | ||
+ | < | ||
+ | sudo -iu postgres psql | ||
+ | </ | ||
+ | < | ||
+ | alter system set pg_store_plans.min_duration = 1000; | ||
+ | alter system set auto_explain.log_min_duration = 1000; | ||
+ | alter system set auto_explain.log_nested_statements = ' | ||
+ | alter system set auto_explain.log_analyze = on; | ||
+ | alter system set auto_explain.log_buffers = on; | ||
+ | SELECT pg_reload_conf(); | ||
+ | </ | ||
+ | Сколько параметров установлено в файлах параметров конфигурации | ||
+ | < | ||
+ | select sourcefile, count(*) from pg_settings group by sourcefile; | ||
+ | </ | ||
+ | Какие параметры из каких файлов конфигурации были считаны и применены при запуске экземпляра | ||
+ | Так же через этот вывод можно проверить себя, правильно ли вы задали параметры до перезагрузки СУБД. | ||
+ | < | ||
+ | select name, setting, substring(sourcefile, | ||
+ | </ | ||
+ | Для корректной работы модуля '' | ||
+ | требуется добавить следующее разрешение в файле '' | ||
+ | < | ||
+ | nano / | ||
+ | </ | ||
+ | < | ||
+ | host | ||
+ | </ | ||
+ | Чтобы новые параметры '' | ||
+ | < | ||
+ | sudo -iu postgres psql -c " | ||
+ | </ | ||
+ | или '' | ||
+ | < | ||
+ | sudo systemctl restart tantor-be-server-16.service | ||
+ | </ | ||
+ | Чтобы изменения вступили в силу для Advanced analytics, на сервере tplatform перезапустите контейнер | ||
+ | < | ||
+ | docker restart pg_monitor_collector | ||
+ | </ | ||
+ | Посмотрите результат в Платформе, | ||
+ | Должны появится графики \\ | ||
+ | В модуле '' | ||
+ | |||
+ | ==== Ротация и очистка логов СУБД Tantor ''/ | ||
+ | |||
+ | Эти параметры уже заданы, | ||
+ | Для просмотра или изменения можно использовать Платформу Tantor или командами в psql: \\ | ||
+ | '' | ||
+ | '' | ||
+ | < | ||
+ | logging_collector = on # Включение сбора логов | ||
+ | log_directory = ' | ||
+ | log_filename = ' | ||
+ | log_rotation_age = 1d # Ротация ежедневно | ||
+ | log_rotation_size = 10MB # Или при достижении размера | ||
+ | </ | ||
+ | Посмотреть логи по примеру, | ||
+ | < | ||
+ | less / | ||
+ | </ | ||
+ | Даем привилегии УЗ postgres на использование crontab | ||
+ | < | ||
+ | sudo usermod -aG crontab postgres | ||
+ | </ | ||
+ | Логинимся под УЗ postgres | ||
+ | < | ||
+ | su - postgres | ||
+ | </ | ||
+ | Создаем скрипт очистки | ||
+ | Вставляем строки, | ||
+ | Не забудьте указать правильный путь на ваши логи. | ||
+ | < | ||
+ | nano cleanup_logs.sh | ||
+ | </ | ||
+ | < | ||
+ | #!/bin/bash | ||
+ | find / | ||
+ | find / | ||
+ | </ | ||
+ | Применяем бит исполнения файла скрипта | ||
+ | < | ||
+ | chmod +x cleanup_logs.sh | ||
+ | </ | ||
+ | Вставляем задание на выполнение в cron, сохраняем и проверяем. | ||
+ | < | ||
+ | crontab -e | ||
+ | </ | ||
+ | < | ||
+ | </ | ||
+ | проверяем, | ||
+ | < | ||
+ | crontab -l | ||
+ | </ | ||
+ | |||
+ | ===== (этап 5) Настройка репликации встроенными инструментами СУБД (ручной Failover/ | ||
+ | |||
+ | > Выполняется на Master db1 10.2.0.11 : | ||
+ | |||
+ | Создадим отдельного пользователя для репликации repl - имя пользователя | ||
+ | < | ||
+ | sudo -iu postgres psql | ||
+ | CREATE ROLE repl WITH REPLICATION LOGIN ENCRYPTED PASSWORD ' | ||
+ | \password | ||
+ | </ | ||
+ | Правим строчку в pg_hba, тут со стороны заказчика нужно указать, | ||
+ | Правило подключения, | ||
+ | Можно оставить так. | ||
+ | |||
+ | |||
+ | > !!! чтобы не мучиться с корректировкой настроек после '' | ||
+ | |||
+ | < | ||
+ | sudo nano / | ||
+ | </ | ||
+ | < | ||
+ | host replication | ||
+ | host all | ||
+ | </ | ||
+ | Добавляем параметры, | ||
+ | < | ||
+ | nano / | ||
+ | </ | ||
+ | или через '' | ||
+ | < | ||
+ | sudo -iu postgres psql | ||
+ | </ | ||
+ | < | ||
+ | alter system set listen_addresses = ' | ||
+ | alter system set wal_level = replica; | ||
+ | alter system set wal_log_hints = on; | ||
+ | alter system set max_wal_senders = 10; | ||
+ | alter system set fsync = on; | ||
+ | alter system set synchronous_commit = on; | ||
+ | alter system set hot_standby = on; | ||
+ | alter system set hot_standby_feedback = on; | ||
+ | alter system set synchronous_standby_names = '1 (db1, db2)'; -- для async репликации оставьте пустое значение | ||
+ | alter system set max_replication_slots = 10; | ||
+ | alter system set wal_keep_size = ' | ||
+ | </ | ||
+ | После внесение изменений перезапускаем сервис | ||
+ | < | ||
+ | sudo systemctl restart tantor-be-server-16.service | ||
+ | </ | ||
+ | |||
+ | |||
+ | > Выполняем на '' | ||
+ | |||
+ | < | ||
+ | systemctl stop tantor-be-server-16.service | ||
+ | su - postgres | ||
+ | cd / | ||
+ | </ | ||
+ | Сохраним архивную копию папки '' | ||
+ | < | ||
+ | tar -cvzf main_backup-`date +%s`.tgz data | ||
+ | rm -rf data/ | ||
+ | </ | ||
+ | Переносим папку '' | ||
+ | < | ||
+ | export PGAPPNAME=db2 | ||
+ | pg_basebackup -h db1 -U repl -p 5432 -D data -R -X stream -C -S db2_replica -c fast -P | ||
+ | </ | ||
+ | >'' | ||
+ | |||
+ | Проверяем, | ||
+ | < | ||
+ | ls -la data/ | ||
+ | </ | ||
+ | Исправим на правильный listen_addresses | ||
+ | Если указывали '' | ||
+ | < | ||
+ | nano / | ||
+ | </ | ||
+ | или | ||
+ | < | ||
+ | nano / | ||
+ | </ | ||
+ | < | ||
+ | listen_addresses = ' | ||
+ | </ | ||
+ | Корректируем правило в '' | ||
+ | Если указывали 10.2.0.0/ | ||
+ | < | ||
+ | nano / | ||
+ | </ | ||
+ | < | ||
+ | host replication | ||
+ | </ | ||
+ | Запустим сервис | ||
+ | < | ||
+ | sudo systemctl start tantor-be-server-16.service | ||
+ | sudo systemctl status tantor-be-server-16.service | ||
+ | </ | ||
+ | На мастере '' | ||
+ | < | ||
+ | sudo -iu postgres psql -c " | ||
+ | </ | ||
+ | На реплике '' | ||
+ | < | ||
+ | sudo -iu postgres psql -c " | ||
+ | SELECT pg_is_in_recovery();" | ||
+ | </ | ||
+ | Проверим репликацию, | ||
+ | < | ||
+ | sudo -iu postgres psql -c " | ||
+ | </ | ||
+ | Проверим на реплике db2 10.2.0.12 | ||
+ | < | ||
+ | sudo -iu postgres psql -c " | ||
+ | </ | ||
+ | ==== Смена лидера. (меняем роли местами мастер -> реплику). ==== | ||
+ | |||
+ | Проверить статус репликации на '' | ||
+ | Должно вернуть '' | ||
+ | < | ||
+ | sudo -iu postgres psql | ||
+ | SELECT pg_is_in_recovery(); | ||
+ | </ | ||
+ | Проверить отставание на '' | ||
+ | < | ||
+ | SELECT pg_last_wal_receive_lsn(), | ||
+ | </ | ||
+ | смотрим статус синхронизации на мастере '' | ||
+ | < | ||
+ | sudo -iu postgres psql | ||
+ | \x | ||
+ | SELECT * FROM pg_stat_replication; | ||
+ | </ | ||
+ | |||
+ | |||
+ | > | ||
+ | |||
+ | Это можно сделать с помощью команды: | ||
+ | < | ||
+ | ALTER SYSTEM SET default_transaction_read_only = ON; | ||
+ | SELECT pg_reload_conf(); | ||
+ | </ | ||
+ | На реплике выполните '' | ||
+ | Относительно видео - скорректировано создание слота репликации '' | ||
+ | < | ||
+ | SELECT pg_promote(); | ||
+ | SELECT pg_is_in_recovery(); | ||
+ | SELECT * FROM pg_create_physical_replication_slot(' | ||
+ | SELECT slot_name, slot_type FROM pg_replication_slots; | ||
+ | </ | ||
+ | Остановить сервис '' | ||
+ | < | ||
+ | sudo systemctl stop tantor-be-server-16.service | ||
+ | </ | ||
+ | выполняем догон '' | ||
+ | Делаем '' | ||
+ | либо при создании УЗ '' | ||
+ | '' | ||
+ | В PostgreSQL доступ к функции pg_read_binary_file ограничен по соображениям безопасности, | ||
+ | Обычно только суперпользователи (superuser) имеют к ней доступ. | ||
+ | < | ||
+ | su - postgres | ||
+ | pg_rewind --target-pgdata=/ | ||
+ | </ | ||
+ | Создайте файл '' | ||
+ | < | ||
+ | touch / | ||
+ | rm -f / | ||
+ | </ | ||
+ | Настроить старый мастер db1 10.2.0.11 как новую реплику. | ||
+ | Отредактируем строчки в файле \\ | ||
+ | '' | ||
+ | '' | ||
+ | < | ||
+ | nano / | ||
+ | </ | ||
+ | |||
+ | |||
+ | > primary_conninfo = ' | ||
+ | > primary_slot_name = ' | ||
+ | |||
+ | |||
+ | Корректируем правило в '' | ||
+ | Если указывали '' | ||
+ | < | ||
+ | nano / | ||
+ | </ | ||
+ | < | ||
+ | host replication | ||
+ | </ | ||
+ | Запустить сервис '' | ||
+ | < | ||
+ | sudo systemctl start tantor-be-server-16.service | ||
+ | </ | ||
+ | Проверим на новом мастере '' | ||
+ | < | ||
+ | sudo -iu postgres psql -c " | ||
+ | </ | ||
+ | На новой реплике '' | ||
+ | < | ||
+ | sudo -iu postgres psql -c " | ||
+ | SELECT pg_is_in_recovery();" | ||
+ | </ | ||
+ | Если мы хотим полностью разделить БД и сделать самостоятельными: | ||
+ | '' | ||
+ | отключает синхронную фиксацию записи данных транзакции на диск, нарушит надежность сохранности данных. | ||
+ | < | ||
+ | SELECT pg_promote(); | ||
+ | alter system set synchronous_standby_names = ''; | ||
+ | SELECT pg_reload_conf(); | ||
+ | SELECT | ||
+ | select pg_drop_replication_slot(' | ||
+ | </ | ||
+ | |||
+ | ===== (этап 6) Вариант сценария проведения нагрузочного тестирования. ===== | ||
+ | |||
+ | |||
+ | > Нагрузочное тестирование предназначено для проверки того, как cистема будет работать под большим количеством пользователей, | ||
+ | > Количество моделируемых пользователей аналогично ожидаемому объему нагрузки пользователей в реальной жизни. | ||
+ | > Проверяется время отклика Системы, | ||
+ | > Тестирование позволяет определить какое количество пользователей может обработать Система, | ||
+ | |||
+ | > TPC-B , TPC-C (OLTP-систем (онлайн-транзакционная обработка)) | ||
+ | > * эталонный тест, используется для стресс-тестирования пиковой пропускной способности базы данных, | ||
+ | |||
+ | > TPC-H (OLAP-систем (онлайн-аналитическая обработка)) | ||
+ | > * эталонный тест, эмулирующий работу приложений бизнес-аналитики, | ||
+ | |||
+ | |||
+ | * pgbench -- программа для запуска эталонных тестов на PostgreSQL, выполняет последовательность команд SQL, вычисляет среднюю скорость транзакций (транзакций в секунду), | ||
+ | |||
+ | * go-tpc -- набор инструментов тестирования рабочих нагрузок на основе тестов TPC для СУБД PostgreSQL, выполняющий тест TPC-H. \\ | ||
+ | [[https:// | ||
+ | |||
+ | * sysbench -- это универсальный инструмент для стресс-тестирования | ||
+ | |||
+ | * HammerDB -- поддерживающее TPC-C, TPC-H и другие сценарии. для само изучения более профессиональный инструмент \\ | ||
+ | [[https:// | ||
+ | [[https:// | ||
+ | |||
+ | ==== Пример использования pgbench. ==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | Создаем пустую БД для тестирования | ||
+ | < | ||
+ | psql -c " | ||
+ | </ | ||
+ | Размер БД может быть изменен согласно запросу Заказчика до необходимого значения, | ||
+ | Наполняем данными 1 гб (по требованию заказчика) \\ | ||
+ | -i – опция инициализации; | ||
+ | -s 68 – параметр scale factor, определяет объём данных. \\ | ||
+ | 100 000 ? 68 = 6 800 000 строк. | ||
+ | < | ||
+ | pgbench -h localhost -d tesdb2 -U postgres -i -s 68 | ||
+ | </ | ||
+ | Проверяем размер создавшейся БД | ||
+ | Можно посмотреть результат в Платформе Tantor. | ||
+ | < | ||
+ | psql -c "\l+ tesdb2" | ||
+ | </ | ||
+ | Выполняем эмуляцию нагрузки | ||
+ | < | ||
+ | pgbench -h localhost -p 5432 -c 90 -j 2 -t 100 tesdb2 ## 90 пользователей, | ||
+ | </ | ||
+ | < | ||
+ | pgbench -c 90 -j 25 -P 60 -T 200 tesdb2 | ||
+ | pgbench -n -c 90 -j 25 -T 200 tesdb2 -b select-only | ||
+ | </ | ||
+ | -c — количество конкурентных подключений | ||
+ | -P — вывод информации каждые * сек | ||
+ | -T — длительность теста в сек | ||
+ | -j — число потоков | ||
+ | -n — не запускать VACUUM перед тестом. | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | ==== Пример использования sysbench. ==== | ||
+ | |||
+ | Установка | ||
+ | < | ||
+ | sudo apt install sysbench | ||
+ | sysbench --help | ||
+ | </ | ||
+ | Создание тестовой БД | ||
+ | < | ||
+ | sudo -iu postgres createdb testdb2 | ||
+ | </ | ||
+ | Инициализация данных в СУБД через локальное соединение: | ||
+ | < | ||
+ | sysbench oltp_common --db-driver=pgsql --pgsql-host=127.0.0.1 --pgsql-port=5432 --pgsql-user=postgres --pgsql-password=postgres --pgsql-db=testdb2 --tables=10 --table-size=100000 prepare | ||
+ | </ | ||
+ | Проведение теста: | ||
+ | Сценарии '' | ||
+ | '' | ||
+ | '' | ||
+ | < | ||
+ | sysbench oltp_read_write --db-driver=pgsql --pgsql-host=127.0.0.1 --pgsql-port=5432 --pgsql-user=postgres --pgsql-password=postgres --pgsql-db=testdb2 --tables=10 --table-size=100000 --threads=10 --time=300 run | ||
+ | </ | ||
+ | Очистка: | ||
+ | < | ||
+ | sysbench oltp_common --db-driver=pgsql --pgsql-host=127.0.0.1 --pgsql-port=5432 --pgsql-user=postgres --pgsql-password=postgres --pgsql-db=testdb2 --tables=10 --table-size=100000 cleanup | ||
+ | </ | ||
+ | |||
+ | ==== Пример использования go-tpc. ==== | ||
+ | |||
+ | Установка [[https:// | ||
+ | Подготовка БД для модели аналитических запросов | ||
+ | < | ||
+ | go-tpc tpch prepare -d postgres -U postgres -p ' | ||
+ | </ | ||
+ | Запуск эмуляции аналитического запроса | ||
+ | < | ||
+ | go-tpc tpch run -d postgres -U postgres -p ' | ||
+ | </ | ||
+ | |||
+ | ===== FAQ доп информация, | ||
+ | |||
+ | ==== Для удобства отображения в psql редактируем содержание файла подсказки .psqlrc (~/.psqlrc) ==== | ||
+ | |||
+ | Рекомендуется также настроить подсказку командного интерпретатора СУБД и вывести информацию по серверу, | ||
+ | Настраиваем вид подсказки в файле .psqlrc в домашнем каталоге пользователя postgres при подключении к СУБД. | ||
+ | переходим под пользователя postgres | ||
+ | < | ||
+ | sudo su - postgres | ||
+ | </ | ||
+ | Редактируем конфигурационный файл | ||
+ | < | ||
+ | nano ~/.psqlrc | ||
+ | </ | ||
+ | Добавляем в файл .psqlrc строку | ||
+ | пример цветной промпт | ||
+ | < | ||
+ | \set PROMPT1 ' | ||
+ | \set PROMPT2 ' | ||
+ | </ | ||
+ | Сохраняем и вызываем psql для проверки | ||
+ | < | ||
+ | psql | ||
+ | </ | ||
+ | если мы работаем из под другого пользователя в системе с правами sudo, то можно подключиться к БД по локальному соединению так | ||
+ | < | ||
+ | sudo -iu postgres psql | ||
+ | </ | ||
+ | Пояснение для подсказки ' | ||
+ | \set PROMPT1 ' | ||
+ | |||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | |||
+ | Пример вывода командной строки с подсказкой для сервера СУБД с IP 10.2.0.11, работающем на порту 5432, для пользователя postgres и БД test | ||
+ | < | ||
+ | 10.2.0.11: | ||
+ | </ | ||
+ | |||
+ | ==== Cписок команд psql которые часто используются. ==== | ||
+ | |||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | |||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | |||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | |||
+ | эти переменные также можно указать в '' | ||
+ | |||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | |||
+ | ==== Доп утилиты в ОС для работы с postgres, которые начинаются на pg* ==== | ||
+ | |||
+ | [[https:// | ||
+ | < | ||
+ | sudo su - postgres | ||
+ | </ | ||
+ | </ | ||
+ | psql | ||
+ | pg_ctl | ||
+ | pg_basebackup --help | ||
+ | pg_dumpall | ||
+ | pg_dump | ||
+ | pg_upgrade | ||
+ | pg_isready | ||
+ | </ | ||
+ | '' | ||
+ | Расширение " | ||
+ | |||
+ | '' | ||
+ | < | ||
+ | ls -la / | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | Если psql не запускается под пользователем postgres (bash: psql: команда не найдена), | ||
+ | значит в переменной окружения path отсутствует путь до / | ||
+ | ---- | ||
+ | |||
+ | редактируем переменную окружения | ||
+ | < | ||
+ | nano ~/.bashrc | ||
+ | </ | ||
+ | добавляем и сохраняем | ||
+ | < | ||
+ | export PATH=/ | ||
+ | </ | ||
+ | Перезапускаем оболочку | ||
+ | < | ||
+ | exec bash | ||
+ | </ | ||
+ | Проверяем подключение, | ||
+ | < | ||
+ | psql -p 5432 -h localhost -U postgres | ||
+ | </ | ||
+ | |||
+ | >!!! При необходимости, | ||
+ | Настройки правил подключения к БД. | ||
+ | Документация по настройке pg_hba.conf: | ||
+ | [[https:// | ||
+ | < | ||
+ | sudo nano / | ||
+ | </ | ||
+ | |||
+ | |||
+ | > !!! При необходимости, | ||
+ | > По умолчанию в параметрах конфигурации в файле postgresql.conf сервера СУБД не настроен вывод системных журналов СУБД в отдельных каталог и нет прямой ссылки на каталог данных. | ||
+ | > Рекомендуется включить возможность вывода системных журналов отдельный каталог и указать прямую ссылку на каталог данных. | ||
+ | < | ||
+ | sudo nano / | ||
+ | </ | ||
+ | Укажем путь сохранения log файлов | ||
+ | < | ||
+ | logging_collector = on; | ||
+ | log_directory = '/ | ||
+ | </ | ||
+ | Применение параметров без перезагрузки сервера СУБД с проверкой | ||
+ | < | ||
+ | sudo -iu postgres psql | ||
+ | SELECT pg_reload_conf(); | ||
+ | SHOW logging_collector; | ||
+ | </ | ||
+ | посмотреть лог БД, пример: | ||
+ | < | ||
+ | less / | ||
+ | </ | ||
+ | |||
+ | > !!! не забудьте скорректировать скрипт Ротация логов. | ||
+ | |||
+ | |||
+ | При проверке системных журналов ОС | ||
+ | < | ||
+ | sudo journalctl -u tantor-be-server-16.service | ||
+ | </ | ||
+ | Утилита сообщает, | ||
+ | Можно посмотреть в каталоге ''/ | ||
+ | |||
+ | ==== Сетевые настройки слушателя и порта инстанса СУБД. ==== | ||
+ | < | ||
+ | sudo nano / | ||
+ | </ | ||
+ | ищем и выставляем параметры | ||
+ | < | ||
+ | listen_addresses = ' | ||
+ | </ | ||
+ | или можно указать прямо через запятую несколько IP сетевых интерфейсов на одном хосте. | ||
+ | < | ||
+ | listen_addresses = ' | ||
+ | |||
+ | port = 5433 | ||
+ | </ | ||
+ | перезагружаем и проверяем | ||
+ | < | ||
+ | sudo systemctl restart tantor-be-server-16 | ||
+ | sudo ss -tulnp | grep postgres | ||
+ | </ | ||
+ | подключаемся к СУБД по новому порту | ||
+ | < | ||
+ | sudo -iu postgres psql -p 5433 -h 10.2.0.11 -U postgres | ||
+ | </ | ||
+ | |||
+ | > !!! При необходимости, | ||
+ | > Можно перенести каталог с данными экземпларя СУБД на отдельный другой католог или точку монтирования (диск) в ОС | ||
+ | |||
+ | |||
+ | Останавливаем службу СУБД | ||
+ | < | ||
+ | sudo -i | ||
+ | systemctl stop tantor-be-server-16.service | ||
+ | </ | ||
+ | Редактируем в '' | ||
+ | < | ||
+ | nano / | ||
+ | </ | ||
+ | Прямая ссылка на новый каталог данных, | ||
+ | < | ||
+ | data_directory = '/ | ||
+ | </ | ||
+ | Переносим data каталог через команду mv или копируем через cp -R в новый каталог | ||
+ | < | ||
+ | cp -R / | ||
+ | </ | ||
+ | Назначаем права на новый каталог | ||
+ | < | ||
+ | sudo chown -R postgres: | ||
+ | </ | ||
+ | Меняем путь в службе | ||
+ | < | ||
+ | sudo nano / | ||
+ | |||
+ | Environment=PGDATA=/ | ||
+ | </ | ||
+ | Запускаем экземпляр | ||
+ | < | ||
+ | sudo systemctl daemon-reload | ||
+ | sudo systemctl start tantor-be-server-16.service | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | > Пакеты в ОС можно устанавливать через команды | ||
+ | < | ||
+ | sudo dpkg -i **.deb \\ | ||
+ | < | ||
+ | > | ||
+ | |||
+ | > При этом инициализация инстанса СУБД не будет производиться автоматически. | ||
+ | |||
+ | > Если нужно создать инстанс СУБД или пересоздать чистую конфигурацию в другой каталог, | ||
+ | |||
+ | ---- | ||
+ | |||
+ | Переходим в УЗ postgres | ||
+ | |||
+ | < | ||
+ | sudo su - postgres | ||
+ | </ | ||
+ | |||
+ | Инициализация нового экземпляра, | ||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | Правим порт, например 5433, если нужно, смотри комментарий ниже. | ||
+ | < | ||
+ | nano / | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | > !!! Если планируется запускать параллельно несколько экземпляров, | ||
+ | > В продуктивных системах это не рекомендуется, | ||
+ | |||
+ | ---- | ||
+ | |||
+ | Для параллельного запуска экземпляров одной и той же версии сборки СУБД создадим отдельный новый файл службы под root. | ||
+ | < | ||
+ | sudo -i | ||
+ | cp / | ||
+ | nano / | ||
+ | </ | ||
+ | Редактируем новый файл службы, | ||
+ | < | ||
+ | Environment=PGDATA=/ | ||
+ | </ | ||
+ | Запустим новую службу | ||
+ | < | ||
+ | systemctl daemon-reload | ||
+ | systemctl enable --now tantor-be-server-16-data2 | ||
+ | systemctl status tantor-be-server-16-data2.service | ||
+ | </ | ||
+ | |||
+ | ==== Ручной запуск инстанса СУБД без службы. ==== | ||
+ | |||
+ | < | ||
+ | sudo su - postgres | ||
+ | |||
+ | / | ||
+ | </ | ||
+ | Останавливаем | ||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | посмотреть все возможности pg_ctl | ||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | |||
+ | > !!! Если планируется установка нескольких версий сборок пакетов СУБД | ||
+ | > Например Tantor 15, Tantor 16 версий, | ||
+ | > Службы для разных версий СУБД после установки пакетов будут разные, | ||
+ | |||
+ | |||
+ | ==== Обновление СУБД tantor по мажорной версии на, пример с 15 на 16. ==== | ||
+ | |||
+ | |||
+ | > **Вариант 1** Возможен только между одинаковыми сборками СУБД. | ||
+ | > '' | ||
+ | > '' | ||
+ | > '' | ||
+ | |||
+ | > В противном случае при проверке будут ошибки, | ||
+ | |||
+ | |||
+ | делаем логический бекап БД, '' | ||
+ | < | ||
+ | pg_dumpall -U postgres > backup.sql | ||
+ | </ | ||
+ | Установите пакет новой версии PostgreSQL c инициализацией новой БД процесс описан в начале файла. | ||
+ | инициализацию можно выполнить руками если вы просто установили пакет. | ||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | обновите права на подкаталоги | ||
+ | < | ||
+ | chown -R postgres: | ||
+ | </ | ||
+ | останавливаем все СУБД (рекомендуется для больших баз) | ||
+ | < | ||
+ | systemctl stop tantor-* | ||
+ | </ | ||
+ | Проверьте совместимость кластеров | ||
+ | < | ||
+ | su - postgres | ||
+ | </ | ||
+ | < | ||
+ | / | ||
+ | --old-datadir / | ||
+ | --new-datadir / | ||
+ | --old-bindir / | ||
+ | --new-bindir / | ||
+ | --check | ||
+ | </ | ||
+ | === Вариант 1 Обновление СУБД через утилиту pg_upgrade. === | ||
+ | |||
+ | Процесс скопирует данные из старого кластера в новый и настроит его для работы | ||
+ | < | ||
+ | / | ||
+ | --old-datadir / | ||
+ | --new-datadir / | ||
+ | --old-bindir / | ||
+ | --new-bindir / | ||
+ | </ | ||
+ | Если обновление успешно, | ||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | |||
+ | > Статистика оптимизатора утилитой pg_upgrade не переносится. | ||
+ | > Запустив новый сервер, | ||
+ | > ''/ | ||
+ | > При запуске этого скрипта будут удалены файлы данных старого кластера: | ||
+ | > '' | ||
+ | |||
+ | |||
+ | Перенесите настройки из старого postgresql.conf и pg_hba.conf в новый кластер, | ||
+ | |||
+ | запускаем кластер | ||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | обновляем статистику | ||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | подключаемся к бд и проверяем | ||
+ | < | ||
+ | psql | ||
+ | select tantor_version(); | ||
+ | SELECT version(); | ||
+ | \l | ||
+ | \q | ||
+ | </ | ||
+ | удаляем старый кластер | ||
+ | < | ||
+ | ./ | ||
+ | </ | ||
+ | или вручную | ||
+ | < | ||
+ | rm -rf / | ||
+ | </ | ||
+ | удаляем старые пакеты | ||
+ | < | ||
+ | apt remove tantor-< | ||
+ | </ | ||
+ | === Вариант 2: pg_dump + pg_restore (если pg_upgrade недоступен из-за ошибо совместимости) === | ||
+ | |||
+ | Перенесите настройки из '' | ||
+ | пример: | ||
+ | < | ||
+ | cd / | ||
+ | cp postgresql.conf postgresql.auto.conf pg_hba.conf / | ||
+ | </ | ||
+ | Запустите кластер новую версию СУБД | ||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | Восстановите данные: | ||
+ | |||
+ | > Если в бэкапе есть ошибки (например, | ||
+ | < | ||
+ | psql -U postgres -f backup.sql | ||
+ | </ | ||
+ | проверяем что все базы на месте, подключаемся к бд и проверяем | ||
+ | < | ||
+ | psql | ||
+ | select tantor_version(); | ||
+ | SELECT version(); | ||
+ | \l | ||
+ | \q | ||
+ | </ | ||
+ | Если обновление успешно, | ||
+ | < | ||
+ | apt remove tantor-< | ||
+ | rm -rf / | ||
+ | </ | ||
+ | ==== Если нужно перенастроить переменные платформы / | ||
+ | например: | ||
+ | переходим в каталог | ||
+ | < | ||
+ | cd / | ||
+ | </ | ||
+ | останавливаем докеры | ||
+ | < | ||
+ | sudo docker-compose --env-file=platform.env down | ||
+ | </ | ||
+ | правим файл c переменными и сохраняем | ||
+ | < | ||
+ | nano platform.env | ||
+ | EMAIL_PORT= | ||
+ | EMAIL_USERNAME= | ||
+ | EMAIL_HOST= | ||
+ | EMAIL_PASSWORD= | ||
+ | </ | ||
+ | поднимаем контейнеры с новыми параметрами | ||
+ | < | ||
+ | docker-compose --env-file platform.env up -d | ||
+ | </ | ||
+ | проверяем платформу через браузер. | ||
+ | |||
+ | |||
+ | ===== удаление платформы ===== | ||
+ | < | ||
+ | sudo docker stop $(docker ps -aq) | ||
+ | sudo docker rm $(docker ps -aq) | ||
+ | sudo docker container prune | ||
+ | docker system prune -a | ||
+ | sudo docker rmi $(docker images -q) | ||
+ | sudo rm -rf /opt/tantor | ||
+ | </ | ||
+ | |||
+ | ==== удаление СУБД и агента ==== | ||
+ | < | ||
+ | sudo apt purge tantor-be-server-16 | ||
+ | sudo rm -rf / | ||
+ | sudo rm -rf / | ||
+ | </ | ||
+ | < | ||
+ | sudo apt purge pmaagent | ||
+ | sudo rm -rf / | ||
</ | </ |
vji/tantor1/start.1753962621.txt.gz · Последнее изменение: 2025/07/31 11:50 — vji