Облачная платформаEvolution

Подключение кластера Managed PostgreSQL® к локальной IDE

Эта статья полезна?

С помощью этого руководства вы настроите подключение с локальной IDE DBeaver с сервисом Managed PostgreSQL®.

Вы выполните развертывание виртуальной машины Ubuntu 22.04, настройку сетей и групп безопасности, создание кластера PostgreSQL, установку и конфигурирование сервера nginx для подключения к базе данных с локальной IDE.

Данная конфигурация позволит подключиться с любой IDE, например: VS Code, DataGrip, DBeaver.

Вы будете использовать следующие сервисы:

  • Виртуальные машины — сервис, в рамках которого предоставляется виртуальная машина.

  • Публичный IP-адрес — для доступа к базе данных через интернет.

  • Managed PostgreSQL — управляемая база данных PostgreSQL.

  • VPC — изолированная виртуальная сеть для создания безопасной инфраструктуры.

  • Nginx — веб-сервер для проксирования запросов и организации защищeнного HTTPS-доступа к приложению.

  • DBeaver — универсальный клиент баз данных для управления и администрирования SQL и NoSQL СУБД.

Шаги:

Перед началом работы

Если вы уже зарегистрированы, войдите под своей учетной записью.

1. Разверните ресурсы в облаке

  1. Создайте виртуальную сеть с названием ide-connection-VPC.

  2. Создайте подсеть со следующими параметрами:

    1. Названиеide-connection-subnet.

    2. Адрес10.10.1.0/24.

    3. VPCide-connection-VPC.

    4. DNS-серверы8.8.8.8.

  3. Создайте новую группу безопасности со следующими параметрами:

    1. Зону доступности — укажите ту же зону доступности, что выбрана для сети.

    2. Названиеide-connection.

    3. Добавьте правила входящего трафика:

      • ПротоколTCP.

      • Порт55432.

      • Тип источникаIP-адрес.

      • Источник<ip-address>/0, где <ip-address> — IP-адрес, с которого вы будете подключаться.

  4. Создайте виртуальную машину со следующими параметрами:

    • Названиеide-connection.

    • Образ — на вкладке Публичные выберите образ Ubuntu 22.04.

    • Подключить публичный IP — оставьте опцию включенной. Для виртуальной машины будет арендован и назначен прямой публичный IP.

    • Группы безопасностиide-connection.

    • Логинuser1.

    • Метод аутентификацииПубличный ключ.

    • Сетевой интерфейс — выберите тип Подсеть с публичным IP.

    • Сетевые настройки— выберите подсеть ide-connection-subnet.

    • Имя хостаide-connection.

  5. Создайте кластер Managed PostgreSQL со следующими параметрами:

    • Название кластераide-connection.

    • Название базы данныхdefault.

    • Версия PostgreSQL16.

    • РежимСтандарт.

    • ТипSingle.

    • Подсетьide-connection-subnet.

  6. Убедитесь, что ресурсы созданы и отображаются в личном кабинете:

    1. На странице сервиса VPC:

      • отображается сеть ide-connection-VPC;

      • в списке подсетей отображается ide-connection-subnet.

    2. На странице сервиса «Группы безопасности» отображается группа безопасности ide-connection со статусом «Создана».

    3. На странице сервиса «Виртуальные машины» отображается виртуальная машина ide-connection со статусом «Запущена».

    4. На странице сервиса Managed PostgreSQL® отображается кластер ide-connection со статусом «Доступен».

2. Настройте nginx для проксирования запросов к базе данных

На этом шаге вы настроите систему и nginx-сервер для настройки подключения к базе данных.

  1. Обновите систему:

    sudo apt update && sudo apt upgrade -y
  2. Установите nginx:

    sudo apt install nginx -y
  3. Настройте сетевой фильтр:

    sudo ufw allow OpenSSH
    sudo ufw allow 55432
    sudo ufw enable
  4. Проверьте установку nginx и ufw:

    nginx -v
    sudo ufw status
  5. Создайте каталог для stream-конфигураций:

    sudo mkdir -p /etc/nginx/streams
  6. Создайте файл конфигурации:

    sudo nano /etc/nginx/streams/postgres-proxy.conf
  7. Вставьте конфигурацию в файл:

    server {
    listen 55432;
    proxy_pass <db_private_ip>:5432;
    proxy_connect_timeout 5s;
    proxy_timeout 600s;
    }

    Где <db_private_ip> — IP-адрес кластера Managed PostgreSQL®.

  8. Откройте файл конфигурации nginx для подключения stream-блока:

    sudo nano /etc/nginx/nginx.conf
  9. Добавьте блок перед блоком http:

    stream {
    log_format basic
    '$remote_addr:$remote_port -> $server_addr:$server_port '
    'upstream: $upstream_addr status: $status';
    access_log /var/log/nginx/postgres-proxy-access.log basic;
    error_log /var/log/nginx/postgres-proxy-error.log;
    include /etc/nginx/streams/*.conf;
    }
  10. Примените конфигурацию nginx:

    sudo nginx -t
    sudo systemctl restart nginx
  11. Проверьте, что nginx слушает порт:

sudo ss -tulpn | grep 55432

3. Протестируйте подключение с локальной IDE DBeaver

На этом шаге вы подключитесь с локальной IDE к кластеру Managed PostgreSQL®.

  1. Откройте DBeaver или другую IDE для работы с базами данных.

  2. Создайте новое подключение к базе данных со следующими параметрами:

    1. Host — публичный IP-адрес виртуальной машины.

    2. Port55432.

    3. Database — название базы данных.

    4. Username — имя пользователя кластера Managed PostgreSQL®.

    5. Password — пароль пользователя кластера Managed PostgreSQL®.

  3. Сохраните соединение.

4. Удалите доступ по SSH для виртуальной машины

Для повышения безопасности удалите доступ по SSH для вашей виртуальной машины, так как он больше не требуется.

  1. В личном кабинете перейдите в сервис «Виртуальные машины» и выберите машину ide-connection-VPC, созданную на первом шаге.

  2. Перейдите на вкладку Сетевые параметры.

  3. Нажмите Изменить группы безопасности для публичного IP-адреса.

  4. Удалите группу SSH-access_ru.

  5. Нажмите Сохранить.

  6. Убедитесь, что доступа нет — попробуйте подключиться к виртуальной машине по SSH.

Результат

Вы настроили безопасное подключение к управляемому кластеру PostgreSQL из локальной IDE DBeaver через облачную инфраструктуру с использованием nginx в качестве прокси-сервера.

Полученные навыки помогут организовывать удаленный доступ к облачным базам данных из различных IDE, настраивать сетевую безопасность и группы доступа, а также использовать nginx для проксирования подключений к управляемым сервисам баз данных.