Установка и настройка образа Tantor DB Special Edition 15 в Яндекс.Облако
Для начала работы с TantorDB в Яндекс.Облако на основании образа СУБД создаётся виртуальная машина. Яндекс позволяет это делать различными способами:
- через веб интерфейс на https://console.cloud.yandex.ru;
- с помощью CLI утилиты YC;
- посредством Terraform через своего провайдера.
Ниже будет дан пример по созданию виртуальной машины в Яндекс.Облако с помощью консольной утилиты YC CLI. Для исследования других вариантов рекомендуем обратиться к официальной документации:
https://cloud.yandex.ru/docs/compute/operations/vm-create/create-linux-vm
https://cloud.yandex.ru/docs/cli/cli-ref/managed-services/vpc/
https://cloud.yandex.ru/docs/cli/cli-ref/managed-services/compute/
Обязательным шагом при создании ВМ в Яндекс.Облако является указание логина и ssh-ключа пользователя, который будет создан на виртуальной машине. В дальнейшем, при необходимости, будем упоминать этого пользователя как yc-user, его ключ как tdb-yc-key и IP адрес ВМ как host-ip.
1. Создание виртуальной машины
Генерируем ключевую пару ssh для последующего использования:
ssh-keygen -a 100 -t ed25519 -f ~/.ssh/tdb-yc-key -C "$(whoami)@$(uname -n)-$(date +'%m%d%Y')"
Устанавливаем переменные среды, которые будем использовать при создании сетевого окружения и самой виртуальной машины. Все указанные идентификаторы являются примерами, реальные данные уточняйте в личном кабинете:
VM_NAME=tantordb-test-instance-01
IMG_FOLDER=somefolderid
IMG_ID=someimageid
NET=tdb-test
Создаём отдельную сеть в Yandex.Cloud:
yc vpc network create \
--name $NET \
--description "test network for tantordb"
Создаём подсеть внутри сети с указанием региона размещения и диапазона адресов:
yc vpc subnet create \
--name $NET-subnet-a \
--description "primary subnet for tantordb testing" \
--zone ru-central1-a \
--range 10.128.100.0/24 \
--network-name $NET
Создаём саму виртуальную машину, пробрасывая в неё сгенерированный ранее ключ. Ключ будет добавлен создаваемому cloud-init пользователю yc-user. Если требуется более тонкая настройка - передавайте параметры в виде cloud-config через ключ "user-data" флага --metadata:
yc compute instance create \
--name $VM_NAME \
--hostname $VM_NAME \
--zone ru-central1-a \
--create-boot-disk name=$VM_NAME-boot,type=network-ssd,size=20GB,image-folder-
id=$IMG_FOLDER,image-id=$IMG_ID \
--network-interface subnet-name=$NET-subnet-a,nat-ip-version=ipv4 \
--cores 2 \
--memory 2 \
--platform standard-v3 \
--ssh-key ~/.ssh/tdb-yc-key.pub
После завершения работы можно использовать следующие команды для удаления созданной инфраструктуры:
yc compute instance delete $VM_NAME
yc vpc subnet delete $NET-subnet-a
yc vpc network delete $NET
2. Подключение к виртуальной машине
Команда создания ВМ после завершения работы вернёт данные о виртуальной машине, в том числе и IP адрес. Также его узнать можно через веб интерфейс или используя команду ниже (нам нужен публичный адрес):
yc compute instance list | grep $VM_NAME
После запуска ВМ к ней можно подключиться используя сгенерированный ранее ключ и указав её IP адрес:
ssh -i ~/.ssh/tdb-yc-key yc-user@host-ip
3. Проверка статуса службы TantorDB
Проверяем статус сервиса:
sudo systemctl status tantor-se-server-15
Сделаем тестовый запрос в базу данных:
sudo su - postgres -c 'psql -c "select tantor_version(), tantor_edition(), tantor_build();"'
Для остановки/запуска/перезагрузки сервиса используем следующие команды:
sudo systemctl stop tantor-se-server-15
sudo systemctl start tantor-se-server-15
sudo systemctl restart tantor-se-server-15
4. Подключение к TantorDB
Войдя в систему как yc-user используем следующую команду для подключения:
sudo -iu postgres psql
Для выхода из psql можно использовать комбинацию клавиш Ctrl+D и команды \q или exit
5. Внешнее подключение к TantorDB
Для подключения к базе данных снаружи необходимо провести предварительную настройку. В данном образе пакет iptables не установлен, как и надстройки над ним типа ufw или firewalld. Для обеспечения сетевой безопасности установите и настройте необходимые утилиты, не забыв открыть доступ для TantorDB (по умолчанию - порт 5432). Последующие действия не следует рассматривать как рекомендацию - скорее как пример. Руководствуйтесь принятой у вас политикой безопасности и вашими потребностями, обращайтесь к официальной документации:
https://www.postgresql.org/docs/current/index.html
Устанавливаем ожидание подключения на всех TCP/IP адресах (по умолчанию это только "localhost"). IPv6 сюда тоже входит - если это нежелательно, то можно выставить "0.0.0.0":
sudo -iu postgres psql -c "ALTER SYSTEM SET listen_addresses = '*'"
Задаём пароль для пользователя postgres (ввод отображаться не будет):
sudo -iu postgres psql -c "\password"
Настраиваем pg_hba.conf для разрешения подключения с любого адреса к любой базе данных любым пользователем по паролю:
sudo bash -c 'echo "host all all all scram-sha-256" >> /var/lib/postgresql/tantor-se-15/data/pg_hba.conf'
Перезапускаем сервис чтобы внесённые изменения вступили в силу
sudo systemctl restart tantor-se-server-15
Проверить что служба ожидает подключения на необходимом порту можно таким образом (с удалённой машины):
nc -vz host-ip 5432
Само подключение к базе данных с удалённого хоста осуществляется таким образом:
psql -h host-ip -U postgres -d postgres