Merge branch 'feature/PaaS-PostgreSQL' of ssh://git.vimpelcom.ru:1122/common/lk-beecloud/beecloud-docs into feature/PaaS-PostgreSQL

This commit is contained in:
Yana Ishkhanova
2026-03-12 17:19:21 +03:00
6 changed files with 345 additions and 280 deletions
+87
View File
@@ -0,0 +1,87 @@
# Cloud PostgreSQL
## Назначение сервиса
**Cloud PostgreSQL** - это управляемый облачный сервис реляционной базы данных PostgreSQL. Он позволяет развернуть и использовать отказоустойчивый кластер базы данных без необходимости самостоятельно настраивать серверы, репликацию и механизмы отказоустойчивости.
PostgreSQL - это современная система управления базами данных, которая поддерживает стандарт SQL и используется для хранения и обработки данных приложений.
В **Cloud PostgreSQL** все основные операции по управлению кластером выполняются автоматически.
Сервис самостоятельно:
- управляет ролями серверов базы данных (основной сервер и реплики);
- отслеживает состояние узлов;
- автоматически переключает основной сервер при сбоях.
Для обеспечения стабильной работы сервиса используется несколько инфраструктурных компонентов:
- **Patroni** - управляет кластером PostgreSQL и автоматическим переключением при отказах;
- **etcd** - хранит состояние кластера и обеспечивает согласованность работы узлов;
- **HAProxy** - обеспечивает единую точку подключения и распределяет клиентские подключения между узлами.
Подключение к базе данных выполняется через прокси-узлы сервиса. Пользователю не требуется подключаться к отдельным серверам кластера — все операции производятся через единую точку доступа.
Для управления базами данных и пользователями доступен web-интерфейс **pgAdmin**, позволяющий выполнять администрирование непосредственно через браузер.
## Конфигурации кластера
Сервис Cloud PostgreSQL поддерживает версии СУБД с 13 по 17 включительно.
Кластер предоставляется в архитектуре Primary–Standby, которая обеспечивает:
- синхронную репликацию данных;
- повышенную отказоустойчивость.
В рамках данной конфигурации создаётся кластер из виртуальных серверов, включающий:
- **Primary** (основной сервер) — обязательный узел, на котором выполняются операции записи данных;
- **Replica** (реплики) — дополнительные узлы (от 0 до 4), создаваемые по желанию пользователя.
Реплики являются полноценными участниками кластера PostgreSQL и могут использоваться для выполнения запросов, не изменяющих данные (например, SELECT).
В многоузловой конфигурации серверы кластера размещаются на разных физических хостах гипервизора, что повышает устойчивость сервиса к отказам оборудования.
## Режимы репликации
По умолчанию фиксация изменений выполняется в **синхронном режиме**. Это означает, что операция записи считается завершённой только после того, как данные будут зафиксированы как на основном сервере, так и на одной из реплик.
Если в кластере настроено несколько реплик, синхронный режим применяется только к одной из них. Остальные реплики работают в асинхронном режиме — изменения передаются на них без ожидания подтверждения.
При необходимости режим репликации может быть изменён на полностью **асинхронный**. В этом случае изменения сначала фиксируются на основном сервере, а затем передаются на реплики с задержкой.
## Доступ к серверам и оптимизация соединений
Прямой доступ к серверам кластера (например, по протоколу SSH) не предоставляется. Пользователь взаимодействует с базой данных исключительно через точки подключения, предоставленные сервисом.
На каждом узле кластера установлен пулер соединений **PgBouncer**, который может использоваться для ускорения работы приложений за счёт оптимизации подключений к базе данных.
::: warning Примечание
Использование PgBouncer не является обязательным - подключение возможно как напрямую к PostgreSQL, так и через пулер, а также одновременно обоими способами.
:::
## Возможности сервиса
**Cloud PostgreSQL** предоставляет набор возможностей, позволяющих использовать PostgreSQL в облаке без необходимости самостоятельного администрирования инфраструктуры.
Сервис обеспечивает:
- автоматическое управление кластером PostgreSQL;
- высокую доступность за счёт репликации и автоматического переключения primary-узла;
- единую точку подключения к базе данных через прокси;
- автоматическое переключение при отказе узлов кластера без вмешательства пользователя;
- web-доступ к управлению базами данных и пользователями через pgAdmin;
- совместимость со стандартными клиентскими инструментами PostgreSQL;
- возможность установки расширений PostgreSQL в базу данных.
## Сценарии использования сервиса
**Cloud PostgreSQL** подходит для использования в системах, где требуется надёжное хранение данных и упрощённое управление инфраструктурой базы данных.
Сервис может применяться в следующих сценариях:
- размещение production-баз данных с высокими требованиями к доступности;
- использование PostgreSQL в микросервисной архитектуре с единой точкой подключения к базе данных;
- хранение критичных данных с минимальным временем простоя при отказах инфраструктуры;
- быстрое развёртывание PostgreSQL-кластера без необходимости ручной настройки репликации и failover;
- администрирование баз данных через веб-интерфейс без прямого доступа к серверам кластера.
+205
View File
@@ -0,0 +1,205 @@
# О разделе
Данный раздел содержит описание технических параметров кластера PostgreSQL и порядок их первичной конфигурации.
Настройка указанных параметров выполняется администратором облачного провайдера на этапе развёртывания сервиса. Пользователь не имеет прямого доступа к их самостоятельной установке.
Перед созданием кластера клиент предоставляет перечень требуемых параметров менеджеру. Администратор облачного провайдера выполняет конфигурацию в соответствии с согласованными требованиями.
## Выбор типа и размера дискового хранилища
Производительность базы данных напрямую зависит от скорости, с которой она может читать и записывать данные на диск. При заказе кластера необходимо выбрать тип дискового хранилища, который определит максимальную скорость работы (IOPS) и время отклика.
**IOPS (Input/Output Operations Per Second)** — количество операций чтения или записи, которые диск может выполнить за секунду. Чем выше этот показатель, тем быстрее база данных обрабатывает запросы.
## Доступные типы хранилищ:
| Название | Лимит IOPS | Время отклика |
| ---------------| ------------------ | ------------- |
| **Fast SAS** | до 2 IOPS на 1 ГБ | до 10 мс |
| **SSD** | до 5 IOPS на 1 ГБ | до 7 мс |
| **Fast SSD** | до 10 IOPS на 1 ГБ | до 5 мс |
| **Ultra NVMe** | до 25 IOPS на 1 ГБ | до 3 мс |
::: warning Примечание
После выбора типа диска необходимо указать объем дискового хранилища, который будет выделен под данные кластера PostgreSQL. Минимальный объем - 50 ГБ.
:::
## Конфигурация вычислительных ресурсов
В данном разделе определяются вычислительные мощности кластера: процессорные ресурсы, оперативная память и количество серверов (нод), из которых будет состоять кластер PostgreSQL.
### Количество нод в кластере
Количество нод определяет отказоустойчивость кластера и возможность распределять запросы на чтение между репликами. Чем больше нод, тем выше надёжность и производительность операций чтения.
Количество нод выбирается в диапазоне **от 1 до 5**.
### Процессор (CPU)
Процессор — это вычислительная мощность, выделяемая каждой ноде кластера. Количество vCPU определяет, насколько быстро база данных сможет:
- обрабатывать запросы;
- выполнять сложные операции (сортировки, объединения таблиц);
- обслуживать одновременные подключения.
Доступный диапазон: **от 2 до 24 vCPU** на ноду.
### Оперативная память (RAM)
Оперативная память — один из ключевых ресурсов для производительности базы данных. Данные, помещающиеся в RAM, обрабатываются максимально быстро, без обращения к диску.
Доступный диапазон: **от 4 до 768 ГБ RAM** на ноду.
### Доступ в интернет
При заказе сервиса можно выбрать пропускную способность канала связи, через который будет осуществляться доступ к кластеру PostgreSQL из сети интернет.
**Доступные варианты скорости:**
- 50 Мбит/с;
- 100 Мбит/с;
- 200 Мбит/с;
- 300 Мбит/с;
- 400 Мбит/с;
- 500 Мбит/с;
- 1000 Мбит/с (1 Гбит/с).
::: warning Примечание
Для выбранного канала предоставляется статический белый IP-адрес.
:::
## Параметры конфигурации IPSEC
Ниже приведены основные параметры, задаваемые при развёртывании кластера PostgreSQL. Часть параметров определяется клиентом на этапе заказа услуги, часть — фиксирована и не подлежит изменению.
### Данные о конфигурации IPSEC
Параметры подключения (имя туннеля, устройство, публичный IP-адрес) заполняются вручную на основании информации, предоставленной заказчиком.
### Версия IKE (Internet Key Exchange)
Версия IKE выбирается из выпадающего списка, который содержит два значения:
- **IKE v1** — более ранняя версия протокола;
- **IKE v2** — более современная версия, обеспечивающая лучшую устойчивость соединения и более гибкую обработку ошибок.
Рекомендуется использовать IKE v2, если оборудование заказчика это поддерживает.
### Метод аутентификации
Метод аутентификации выбирается из выпадающего списка, который содержит два варианта:
- **PSK** (Pre-Shared Key) — аутентификация с использованием заранее согласованного общего ключа;
- **Certificate** (сертификат) — аутентификация с использованием цифровых сертификатов.
## Этап 1 - установка защищенного соединения
На данном этапе задаются параметры шифрования и аутентификации для защищённого канала связи. Все параметры выбираются вручную из выпадающих списков.
### Алгоритм хэширования
Определяет алгоритм хэширования для защиты управляющего канала. Параметр заполняется вручную из выпадающего списка:
- **SHA1** — формирует хэш длиной 160 бит, имеет коллизии (уязвимости), в современных системах считается устаревшим, используется только для совместимости со старым оборудованием.
- **SHA2-256** — формирует хэш длиной 256 бит, существенно более устойчив к атакам, оптимальный баланс между безопасностью и производительностью.
- **SHA2-384** — длина хэша составляет 384 бита, имеет повышенную криптостойкость, требует больше вычислительных ресурсов, чем SHA-1 и SHA2-256. Используется в средах с повышенными требованиями к безопасности.
- **SHA2-512** — длина хэша составляет 512 бит, обеспечивает самый высокий уровень стойкости из перечисленных, создает наибольшую нагрузку на процессор. Обычно применяется в системах с повышенными требованиями к криптографии.
### Шифрование (Hash)
Определяет алгоритм симметричного шифрования. Параметр заполняется вручную из выпадающего списка:
AES 128 — использует 128-битный ключ, обеспечивает быстрое шифрование, имеет достаточный уровень безопасности для большинства задач.
AES 256 — использует 256-битный ключ, обеспечивает более высокую криптостойкость, оказывает немного большую нагрузку на CPU.
AES GCM 128 / AES GCM 192 / AES GCM 256 — данные алгоритмы совмещают шифрование и контроль целостности, обладают более современным режимом работы, считаются более эффективными по производительности, рекомендуются в современных конфигурациях. Разница между алгоритмами — в длине ключа.
### DH Group (группа Диффи — Хеллмана)
Механизм Diffie-Hellman используется для безопасной генерации общего секретного ключа между сторонами туннеля без передачи этого ключа по сети. Чем выше номер группы и длина ключа, тем выше криптографическая стойкость соединения.
Параметр заполняется вручную из выпадающего списка:
group 2;
group 5;
group 14;
group 15;
group 16;
group 19;
group 20;
group 21.
### IKE Mode (только для IKEv1)
Параметр **IKE Mode** определяет способ установления соединения на этапе 1 при использовании протокола IKEv1.
Доступны два режима: Main и Aggressive. Они отличаются количеством сообщений при установке соединения и уровнем защиты идентификационных данных.
- **Main Mode** — стандартный и более безопасный режим работы IKEv1;
- **Aggressive Mode** — упрощённый и ускоренный режим установления соединения с более низким уровнем защиты данных.
### Время жизни (Lifetime)
Параметр определяет, как долго действуют согласованные ключи в рамках первой фазы. После истечения времени выполняется повторная генерация ключей.
## Этап 2 - передача данных
Этап 2 IPsec-соединения отвечает за шифрование и защиту пользовательского трафика после того, как защищённый канал был установлен на этапе 1. Этот этап регулирует передачу данных между сторонами через безопасный туннель, который обеспечивает конфиденциальность и целостность данных.
### Алгоритм хэширование (Hash)
Аналогично этапу 1, параметр Hash используется для защиты целостности передаваемых данных. Он обеспечивает проверку того, что данные не были изменены при передаче. Доступны следующие алгоритмы:
- SHA1;
- SHA2-256;
- SHA2-384;
- SHA2-512.
## Шифрование
Этап 2 отвечает за шифрование пользовательского трафика. Это важнейший параметр, который защищает данные при их передаче по сети. Доступны следующие алгоритмы:
- AES 128;
- AES 256;
- AES GCM 128;
- AES GCM 192;
- AES GCM 256.
### PFS
**Enable perfect forward secrecy (PFS)** - параметр, активирующий генерацию нового ключа на этапе 2. При включенном PFS группа Diffie-Hellman (DH) будет такая же как и на 1-й фазе.
Данный параметр представлен в виде чекбокса. При его включении:
- на этапе 2 выполняется дополнительный обмен ключами DH;
- для каждой новой IPsec-сессии формируется новый независимый криптографический секрет;
- ключи шифрования пользовательского трафика не зависят от ключей этапа 1.
### DH Group (группа Диффи — Хеллмана)
Группа DH определяет параметры обмена ключами между сторонами. Чем выше номер группы, тем выше криптографическая стойкость и безопасность обмена.
Данный параметр так же содержит в себе выпадающий список, состоящий из следующих значений:
- group 2;
- group 5;
- group 14;
- group 15;
- group 16;
- group 19;
- group 20;
- group 21.
### Время жизни (Lifetime)
Определяет, как долго действуют согласованные ключи в рамках второй фазы.
- рекомендуемое значение: 3600 секунд (1 час);
- после истечения времени выполняется повторная генерация ключей.
### Префиксы локальной сети заказчика
Этот параметр определяет, какие сети на стороне заказчика будут маршрутизироваться через **IPsec-туннель**. Префиксы задаются в формате `192.168.1.0/24`, который позволяет указать диапазон IP-адресов.
@@ -1,15 +1,15 @@
## Общая схема подключения # Общая схема подключения
Доступ к кластеру PostgreSQL осуществляется через прокси. Клиентские подключения принимаются прокси, который маршрутизирует трафик к соответствующим узлам кластера (master или replica) в зависимости от выбранного порта. Прямое подключение к узлам базы данных не используется. Доступ к кластеру PostgreSQL осуществляется через прокси. Клиентские подключения принимаются прокси, который маршрутизирует трафик к соответствующим узлам кластера (master или replica) в зависимости от выбранного порта. Прямое подключение к узлам базы данных не используется.
Подключение к кластеру Cloud PostgreSQL осуществляется через прокси-сервер. Подключение к кластеру **Cloud PostgreSQL** осуществляется через прокси-сервер. Прокси является единой точкой входа для всех клиентских подключений и принимает входящие соединения от приложений, административных инструментов и пользователей.
Прокси является единой точкой входа для всех клиентских подключений и принимает входящие соединения от приложений, административных инструментов и пользователей. В зависимости от выбранного порта прокси автоматически направляет трафик:
В зависимости от выбранного порта прокси автоматически направляет трафик:
- на активный primary-узел - для операций чтения и записи - на активный primary-узел - для операций чтения и записи
- на реплики - для операций только чтения - на реплики - для операций только чтения
Прямое подключение к отдельным узлам базы данных не используется и не предоставляется. Взаимодействие с кластером всегда выполняется через прокси-сервер. Прямое подключение к отдельным узлам базы данных не используется и не предоставляется. Взаимодействие с кластером всегда выполняется через прокси-сервер.
------
## Подключение к базе данных ## Подключение к базе данных
Для подключения к базе данных необходимо использовать IP-адрес прокси-сервера, который предоставляется после заказа услуги. Для подключения к базе данных необходимо использовать IP-адрес прокси-сервера, который предоставляется после заказа услуги.
@@ -18,29 +18,29 @@
Использование других IP-адресов или попытка прямого подключения к отдельным узлам кластера не предусмотрены. Использование других IP-адресов или попытка прямого подключения к отдельным узлам кластера не предусмотрены.
------
## Доступные порты ## Доступные порты
Для разных типов нагрузки используются разные порты: Для разных типов нагрузки используются разные порты:
|Порт |Назначение | |Порт |Назначение |
|---|---| |------|-----------------------------------------|
|5432 |Primary (чтение и запись) | |5432 |Primary (чтение и запись) |
|15432 |Replica (только чтение) | |15432 |Replica (только чтение) |
|6432 |Primary через PgBouncer (чтение и запись)| |6432 |Primary через PgBouncer (чтение и запись)|
|16432 |Replica через PgBouncer (только чтение) | |16432 |Replica через PgBouncer (только чтение) |
### Особенности работы портов ### Особенности работы портов
- Порты для чтения и записи (5432, 6432) всегда направляют трафик на активный primary-узел. При смене primary переключение происходит автоматически. - Порты для чтения и записи (5432, 6432) всегда направляют трафик на активный primary-узел. При смене primary переключение происходит автоматически;
- Порты только для чтения (15432, 16432) направляют трафик на активные реплики. Если реплик несколько, нагрузка распределяется между ними по принципу round-robin. - Порты только для чтения (15432, 16432) направляют трафик на активные реплики. Если реплик несколько, нагрузка распределяется между ними по принципу round-robin;
- Если в кластере отсутствуют реплики, порты для чтения не используются - подключение по ним не устанавливается. - Если в кластере отсутствуют реплики, порты для чтения не используются - подключение по ним не устанавливается.
### Рекомендации по выбору порта ### Рекомендации по выбору порта
- Для OLTP-нагрузки и большого количества соединений рекомендуется использовать порты PgBouncer (6432 или 16432). - Для OLTP-нагрузки и большого количества соединений рекомендуется использовать **порты PgBouncer (6432 или 16432)**;
- Для операций записи используйте master-порты (5432 или 6432). - Для операций записи используйте **master-порты (5432 или 6432)**;
- Для read-only запросов можно использовать replica-порты (15432 или 16432). - Для read-only запросов можно использовать **replica-порты (15432 или 16432)**.
------
## Доступ к pgAdmin ## Доступ к pgAdmin
Для администрирования базы данных используется web-интерфейс pgAdmin. Для администрирования базы данных используется web-интерфейс pgAdmin.
@@ -52,13 +52,14 @@
Авторизация выполняется с использованием учётных данных, предоставленных вместе с доступом к сервису. Авторизация выполняется с использованием учётных данных, предоставленных вместе с доступом к сервису.
### Важно ::: warning Важно
- Подключение к базе данных возможно только через указанный прокси-IP. - подключение к базе данных возможно только через указанный прокси-IP;
- В интерфейсе pgAdmin уже добавлен сервер базы данных, созданный для данной инсталляции. Для подключения требуется ввести пароль от учётной записи базы данных. - в интерфейсе pgAdmin уже добавлен сервер базы данных, созданный для данной инсталляции. Для подключения требуется ввести пароль от учётной записи базы данных;
- pgAdmin предназначен для администрирования и не рекомендуется для выполнения тяжёлых или длительных запросов в production-среде. - pgAdmin предназначен для администрирования и не рекомендуется для выполнения тяжёлых или длительных запросов в production-среде.
------ :::
## Примеры подключения к PostgreSQL ## Примеры подключения к PostgreSQL
Подключение к primary: Подключение к primary:
@@ -66,14 +67,16 @@
Подключение через PgBouncer: Подключение через PgBouncer:
`psql -h 10.X.X.4 -p 6432 -U <username> -d <database>` `psql -h 10.X.X.4 -p 6432 -U <username> -d <database>`
### Подключение через DBeaver / DataGrip ### Подключение через DBeaver / DataGrip
При создании подключения укажите: При создании подключения укажите:
- Host: 10.X.X.4 - Host: 10.X.X.4;
- Port: 5432 или 6432 - Port: 5432 или 6432;
- Database: `<database>` - Database: `<database>`;
- User / Password: согласно выданным доступам - User / Password: согласно выданным доступам;
- Тип подключения: PostgreSQL - Тип подключения: PostgreSQL.
### Пример строки подключения ### Пример строки подключения
Primary: Primary:
@@ -1,8 +1,9 @@
Данный раздел описывает права, которые предоставляются пользователю PostgreSQL при создании сервиса Cloud PostgreSQL, а также перечень административных операций, доступных ему для самостоятельного выполнения. # Создание сервиса Cloud PostgreSQL
Данный раздел описывает права, которые предоставляются пользователю PostgreSQL при создании сервиса **Cloud PostgreSQ**L**, а также перечень административных операций, доступных ему для самостоятельного выполнения.
При развертывании сервиса автоматически создаётся пользователь базы данных с преднастроенными атрибутами и привилегиями. Эти права позволяют заказчику самостоятельно управлять своими базами данных, ролями и пользователями в рамках созданного экземпляра PostgreSQL. При развертывании сервиса автоматически создаётся пользователь базы данных с преднастроенными атрибутами и привилегиями. Эти права позволяют заказчику самостоятельно управлять своими базами данных, ролями и пользователями в рамках созданного экземпляра PostgreSQL.
------
## Общая информация о пользователе ## Общая информация о пользователе
При инициализации сервиса автоматически создаётся пользователь: При инициализации сервиса автоматически создаётся пользователь:
@@ -13,10 +14,10 @@ client
Данный пользователь является основной учётной записью для административной работы в рамках предоставленного экземпляра PostgreSQL. Он предназначен для самостоятельного управления базами данных, ролями и правами доступа в пределах выданных привилегий. Данный пользователь является основной учётной записью для административной работы в рамках предоставленного экземпляра PostgreSQL. Он предназначен для самостоятельного управления базами данных, ролями и правами доступа в пределах выданных привилегий.
------
## Выданные права и ограничения ## Выданные права и ограничения
Пользователю `client` назначается набор атрибутов и привилегий, позволяющих выполнять административные операции в рамках своего экземпляра базы данных. Пользователю `client` назначается набор атрибутов и привилегий, позволяющих выполнять административные операции в рамках своего экземпляра базы данных.
### Атрибуты роли ### Атрибуты роли
Пользователь создаётся со следующими атрибутами: Пользователь создаётся со следующими атрибутами:
@@ -24,11 +25,13 @@ client
- `CREATEROLE` — разрешено создание ролей и пользователей, а также управление их. - `CREATEROLE` — разрешено создание ролей и пользователей, а также управление их.
Атрибут `SUPERUSER` пользователю не предоставляется. Соответственно, доступ к системным операциям уровня кластера и настройкам сервера отсутствует. Атрибут `SUPERUSER` пользователю не предоставляется. Соответственно, доступ к системным операциям уровня кластера и настройкам сервера отсутствует.
### Права на системную базу postgres: ### Права на системную базу postgres:
К стандартной базе данных `postgres` пользователю предоставлено только право подключения: К стандартной базе данных `postgres` пользователю предоставлено только право подключения:
- `CONNECT` - `CONNECT`
Иные привилегии (создание объектов, изменение схем и т.д.) на данную базу не выдаются. Иные привилегии (создание объектов, изменение схем и т.д.) на данную базу не выдаются.
### Мониторинг и системные представления: ### Мониторинг и системные представления:
Для выполнения базовых задач мониторинга пользователю дополнительно предоставлены: Для выполнения базовых задач мониторинга пользователю дополнительно предоставлены:
@@ -40,7 +43,6 @@ pg_catalog.pg_stat_replication
Доступ к системной информации предоставляется исключительно в режиме чтения. Изменение системных представлений и параметров сервера недоступно. Доступ к системной информации предоставляется исключительно в режиме чтения. Изменение системных представлений и параметров сервера недоступно.
------
## Обязательная смена пароля ## Обязательная смена пароля
После первого подключения к базе данных пользователь `client` обязан выполнить смену пароля. После первого подключения к базе данных пользователь `client` обязан выполнить смену пароля.
@@ -74,10 +76,10 @@ ALTER USER client WITH ENCRYPTED PASSWORD '$4096:...';
Рекомендуется использовать сложный уникальный пароль, соответствующий требованиям информационной безопасности, и хранить его в защищённом хранилище. Рекомендуется использовать сложный уникальный пароль, соответствующий требованиям информационной безопасности, и хранить его в защищённом хранилище.
------
## Создание новой базы данных ## Создание новой базы данных
Пользователь `client` имеет право создавать новые базы данных в рамках своего экземпляра PostgreSQL. Пользователь `client` имеет право создавать новые базы данных в рамках своего экземпляра PostgreSQL.
### Пример создания базы данных ### Пример создания базы данных
Для создания базы данных используется стандартная команда: Для создания базы данных используется стандартная команда:
@@ -87,6 +89,7 @@ CREATE DATABASE app_db;
``` ```
Если необходимо назначить владельца базы данных, можно указать соответствующего пользователя. По умолчанию владельцем создаваемой базы данных является пользователь, который её создает. Если необходимо назначить владельца базы данных, можно указать соответствующего пользователя. По умолчанию владельцем создаваемой базы данных является пользователь, который её создает.
### Пример создания базы данных с указанием владельца ### Пример создания базы данных с указанием владельца
```sql ```sql
@@ -95,10 +98,10 @@ CREATE DATABASE app_db OWNER client;
В этом примере база данных `app_db` будет принадлежать пользователю `client`. Пользователь, указанный как владелец, будет иметь полный контроль над базой данных, включая права на её удаление и изменение. В этом примере база данных `app_db` будет принадлежать пользователю `client`. Пользователь, указанный как владелец, будет иметь полный контроль над базой данных, включая права на её удаление и изменение.
------
## Создание пользователей и ролей ## Создание пользователей и ролей
Пользователь `client` имеет право создавать новые роли и пользователей для приложений, а также управлять их правами доступа. Пользователь `client` имеет право создавать новые роли и пользователей для приложений, а также управлять их правами доступа.
### Создание роли без логина ### Создание роли без логина
Если требуется создать роль, которая не будет иметь возможности входа в базу данных (например, для организации прав доступа), можно использовать команду: Если требуется создать роль, которая не будет иметь возможности входа в базу данных (например, для организации прав доступа), можно использовать команду:
@@ -106,6 +109,7 @@ CREATE DATABASE app_db OWNER client;
```sql ```sql
CREATE ROLE app_role; CREATE ROLE app_role;
``` ```
### Создание пользователя с паролем ### Создание пользователя с паролем
Для создания пользователя с паролем используется команда: Для создания пользователя с паролем используется команда:
@@ -115,6 +119,7 @@ CREATE USER app_user WITH PASSWORD 'app_password';
``` ```
После этого новый пользователь `app_user` будет иметь возможность входа в базу данных, используя указанный пароль. После этого новый пользователь `app_user` будет иметь возможность входа в базу данных, используя указанный пароль.
### Назначение роли пользователю ### Назначение роли пользователю
Для назначения роли пользователю используется команда `GRANT`. Это позволяет управлять правами пользователя в рамках определённой роли: Для назначения роли пользователю используется команда `GRANT`. Это позволяет управлять правами пользователя в рамках определённой роли:
@@ -124,6 +129,7 @@ GRANT app_role TO app_user;
``` ```
После выполнения этой команды пользователь `app_user` станет членом роли `app_role`, и будет наследовать все права, связанные с этой ролью. После выполнения этой команды пользователь `app_user` станет членом роли `app_role`, и будет наследовать все права, связанные с этой ролью.
### Передача владельца базы данных ### Передача владельца базы данных
Если необходимо передать право владения базой данных другому пользователю, это можно сделать с помощью следующей команды: Если необходимо передать право владения базой данных другому пользователю, это можно сделать с помощью следующей команды:
@@ -133,9 +139,11 @@ ALTER DATABASE app_db OWNER TO app_user;
``` ```
Теперь база данных `app_db` будет принадлежать пользователю `app_user`, и он будет иметь полный контроль над ней. Теперь база данных `app_db` будет принадлежать пользователю `app_user`, и он будет иметь полный контроль над ней.
### Управление правами доступа ### Управление правами доступа
После создания пользователей и ролей необходимо назначить им соответствующие права доступа. После создания пользователей и ролей необходимо назначить им соответствующие права доступа.
### Выдача прав на подключение к базе данных ### Выдача прав на подключение к базе данных
Для того чтобы пользователь мог подключаться к базе данных, нужно предоставить ему соответствующие права: Для того чтобы пользователь мог подключаться к базе данных, нужно предоставить ему соответствующие права:
@@ -155,6 +163,7 @@ GRANT USAGE, CREATE ON SCHEMA public TO app_user;
``` ```
Эти права позволяют пользователю `app_user` использовать объекты в схеме `public`, а также создавать новые объекты внутри неё. Эти права позволяют пользователю `app_user` использовать объекты в схеме `public`, а также создавать новые объекты внутри неё.
### Права на существующие таблицы ### Права на существующие таблицы
Чтобы предоставить пользователю доступ к существующим таблицам в схеме `public`, можно использовать команду: Чтобы предоставить пользователю доступ к существующим таблицам в схеме `public`, можно использовать команду:
@@ -164,6 +173,7 @@ GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_user;
``` ```
Эта команда позволяет пользователю `app_user` выполнять операции чтения, вставки, обновления и удаления данных в существующих таблицах схемы `public`. Эта команда позволяет пользователю `app_user` выполнять операции чтения, вставки, обновления и удаления данных в существующих таблицах схемы `public`.
### Права на будущие таблицы ### Права на будущие таблицы
Если необходимо автоматически предоставить пользователю права на новые таблицы, создаваемые в схеме `public`, используйте команду: Если необходимо автоматически предоставить пользователю права на новые таблицы, создаваемые в схеме `public`, используйте команду:
@@ -175,10 +185,10 @@ GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_user;
Эта команда обеспечит, что все будущие таблицы, создаваемые в схеме `public`, будут автоматически иметь права для пользователя `app_user` на чтение, вставку, обновление и удаление данных. Эта команда обеспечит, что все будущие таблицы, создаваемые в схеме `public`, будут автоматически иметь права для пользователя `app_user` на чтение, вставку, обновление и удаление данных.
------
## Мониторинг репликации ## Мониторинг репликации
Пользователь `client` имеет доступ к системным представлениям для мониторинга состояния репликации в кластере PostgreSQL. Пользователь `client` имеет доступ к системным представлениям для мониторинга состояния репликации в кластере PostgreSQL.
### Просмотр состояния репликации ### Просмотр состояния репликации
Для того чтобы просмотреть текущий статус репликации, пользователь может выполнить запрос к системному представлению: Для того чтобы просмотреть текущий статус репликации, пользователь может выполнить запрос к системному представлению:
@@ -187,6 +197,7 @@ GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_user;
SELECT * FROM pg_stat_replication; SELECT * FROM pg_stat_replication;
``` ```
Этот запрос возвращает информацию о всех репликах, подключённых к основному (primary) серверу. Этот запрос возвращает информацию о всех репликах, подключённых к основному (primary) серверу.
### Ограничения доступа ### Ограничения доступа
Пользователь `client` имеет доступ к данным в представлении `pg_stat_replication` только в режиме **read-only**. Это означает, что он может просматривать состояние репликации, но не может изменять или вмешиваться в процесс репликации. Пользователь `client` имеет доступ к данным в представлении `pg_stat_replication` только в режиме **read-only**. Это означает, что он может просматривать состояние репликации, но не может изменять или вмешиваться в процесс репликации.
@@ -1,173 +0,0 @@
## О разделе
Данный раздел описывает технические параметры кластера PostgreSQL и порядок их первичной конфигурации.
Настройка указанных параметров выполняется администратором облачного провайдера на этапе развертывания сервиса. Пользователь не имеет прямого доступа к их самостоятельной установке.
Перед созданием кластера клиент предоставляет перечень требуемых параметров менеджеру. Администратор облачного провайдера выполняет конфигурацию в соответствии с согласованными требованиями.
-----
## Выбор типа и размера дискового хранилища
Производительность базы данных напрямую зависит от скорости, с которой она может читать и записывать данные на диск. При заказе кластера необходимо выбрать тип дискового хранилища, который определит максимальную скорость работы (IOPS) и время отклика.
_IOPS_ - количество операций чтения или записи, которые диск может выполнить за секунду. Чем выше этот показатель, тем быстрее база данных обрабатывает запросы.
### Доступные типы хранилищ:
| Название | Лимит IOPS | Время отклика |
| -------------- | ------------------ | ------------- |
| **Fast SAS** | до 2 IOPS на 1 ГБ | до 10 мс |
| **SSD** | до 5 IOPS на 1 ГБ | до 7 мс |
| **Fast SSD** | до 10 IOPS на 1 ГБ | до 5 мс |
| **Ultra NVMe** | до 25 IOPS на 1 ГБ | до 3 мс |
**После выбора типа диска необходимо указать объем дискового хранилища, который будет выделен под данные кластера PostgreSQL. Минимальный объем - 50 ГБ.**
## Конфигурация вычислительных ресурсов
В данном разделе определяются вычислительные мощности кластера: процессорные ресурсы, оперативная память и количество серверов (нод), из которых будет состоять кластер PostgreSQL.
### Количество нод в кластере
Количество нод определяет отказоустойчивость кластера и возможность распределять запросы на чтение между репликами. Чем больше нод, тем выше надежность и производительность чтения. Количество нод выбирается в диапазоне от 1 до 5.
### Процессор (CPU)
Процессор - это вычислительная мощность, которая выделяется каждой ноде кластера. Количество vCPU определяет, насколько быстро база данных сможет обрабатывать запросы, выполнять сложные операции (сортировки, объединения таблиц) и обслуживать одновременные подключения. Доступный диапазон выбора процессора: от 2 шт до 24 шт.
### Оперативная память (RAM)
Оперативная память - один из ключевых ресурсов для производительности. Данные, помещающиеся в RAM, обрабатываются максимально быстро, без обращения к диску. Доступный диапазон выбора оперативной памяти: от 4 ГБ до 768 ГБ.
## Интернет
При заказе сервиса можно выбрать пропускную способность канала связи, через который будет осуществляться доступ к кластеру PostgreSQL из сети интернет.
**Доступные варианты скорости:**
- 50 Мбит/с
- 100 Мбит/с
- 200 Мбит/с
- 300 Мбит/с
- 400 Мбит/с
- 500 Мбит/с
- 1000 Мбит/с (1 Гбит/с)
*Для выбранного канала предоставляется статический белый IP-адрес.*
-----
## Параметры конфигурации IPSEC
Ниже приведены основные параметры, задаваемые при развертывании кластера PostgreSQL. Часть параметров определяется клиентом на этапе заказа услуги, часть - фиксирована и не подлежит изменению.
### Данные о конфигурации IPSEC
Параметры подключения (имя туннеля, устройство, публичный IP-адрес) заполняются вручную на основании информации, предоставленной заказчиком.
### Версия IKE (Internet Key Exchange)
Версия IKE выбирается из выпадающего списка, который содержит в себе два параметра - _v1_ и _v2_. Разница заключается в том, что _IKE v1_ - более ранняя версия протокола.
_IKE v2_ - более современная версия, обеспечивающая лучшую устойчивость соединения и более гибкую обработку ошибок. Рекомендуется использовать IKE v2, если оборудование заказчика это поддерживает.
### Метод аутентификации
Метод аутентификации выбирается вручную из выпадающего списка, который содержит два варианта: _PSK_ (Pre-Shared Key) и _Certificate_ (Сертификат).
- _PSK (Pre-Shared Key)_ - метод аутентификации, при котором используется заранее согласованный общий ключ.
- _Certificate_ - аутентификация с использованием цифровых сертификатов.
------
## Этап 1 - установка защищенного соединения
### Hash
Определяет алгоритм хэширования для защиты управляющего канала. Данный параметр заполняется вручную из выпадающего списка следующего содержания:
- _SHA 1_ - Формирует хэш длиной 160 бит, имеет коллизии (уязвимости), в современных системах считается устаревшим, используется только для совместимости со старым оборудованием.
- _SHA 2 - 256_ - Формирует хэш длиной 256 бит, существенно более устойчив к атакам, оптимальный баланс между безопасностью и производительностью, а также, на сегодняшний день, является стандартом по умолчанию в большинстве систем.
- _SHA 2 - 384_ - Длина хэша составляет 384 бита, имеет повышенную криптостойкость, требует больше вычислительных ресурсов, чем SHA-1 и SHA 2-256. Используется в средах с повышенными требованиями к безопасности.
- _SHA 2 - 512_ - Длина хэша составляет 512 бит, осуществляет самый высокий уровень стойкости из перечисленных, а также создает большую нагрузку на процессор. Обычно применяется в системах с повышенными требованиями к криптографии.
### Шифрование
Определяет алгоритм симметричного шифрования. Данный параметр заполняется вручную из выпадающего списка следующего содержания:
- _AES 128_ - имеет 128-битный ключ, обеспечивает быстрое шифрование, имеет достаточный уровень безопасности для большинства задач.
- _AES 256_ - имеет 256-битный ключ, обеспечивает более высокую криптостойкость, оказывает немного большую нагрузку на CPU.
- _AES GCM 128_ / _AES GCM 192_ / _AES GCM 256_ - данные алгоритмы совмещают шифрование и контроль целостности, обладают более современным режимом работы, считаются более эффективными по производительности, а также рекомендуются в современных конфигурациях. Разница между этими тремя алгоритмами лишь в длине ключа.
### DH Group - группа Деффи Хеллмана
Механизм Diffie-Hellman используется для безопасной генерации общего секретного ключа между сторонами туннеля без передачи этого ключа по сети.
Чем выше номер группы и длина ключа - тем выше криптографическая стойкость соединения.
Данный параметр так же содержит в себе выпадающий список, состоящий из следующих значений:
- _group 2_
- _group 5_
- _group 14_
- _group 15_
- _group 16_
- _group 19_
- _group 20_
- _group 21_
### IKE Mode (только для IKEv1)
Параметр IKE Mode определяет способ установления соединения на этапе 1 при использовании протокола IKEv1.
Доступны два режима: _Main_ и _Aggressive_. Они отличаются количеством сообщений при установке соединения и уровнем защиты идентификационных данных.
- Main Mode - является стандартным и более безопасным режимом работы IKEv1.
- Aggressive Mode - упрощённый и ускоренный режим установления соединения. (более низкий уровень защиты данных)
### Время жизни
Определяет, как долго действуют согласованные ключи в рамках первой фазы.
- Рекомендуемое значение: 86400 секунд (24 часа).
- После истечения времени выполняется повторная генерация ключей.
------
## Этап 2 - передача данных
Этап 2 IPsec-соединения отвечает за шифрование и защиту пользовательского трафика после того, как защищённый канал был установлен на этапе 1. Этот этап регулирует передачу данных между сторонами через безопасный туннель, который обеспечивает конфиденциальность и целостность данных.
## Hash
Аналогично этапу 1, параметр Hash используется для защиты целостности передаваемых данных. Он обеспечивает проверку, что данные не были изменены при передаче. Содержит такой же перечень элементов для выбора:
- _SHA 1_
- _SHA 2 - 256_
- _SHA 2 - 384_
- _SHA 2 - 512_
## Шифрование
Этап 2 отвечает за шифрование пользовательского трафика. Это важнейший параметр, который защищает данные при их передаче по сети. Доступны следующие алгоритмы:
- _AES 128_
- _AES 256_
- _AES GCM 128_
- _AES GCM 192_
- _AES GCM 256_
### PFS
_Enable perfect forward secrecy (PFS)_ - параметр, активирующий генерацию нового ключа на этапе 2. При включенном PFS группа DH будет такая же как и на 1-й фазе.
Данный параметр представлен в виде чекбокса. При его включении:
- На этапе 2 выполняется дополнительный обмен ключами Diffie-Hellman.
- Для каждой новой IPsec-сессии формируется новый независимый криптографический секрет.
- Ключи шифрования пользовательского трафика не зависят от ключей этапа 1.
### DH Group - группа Деффи Хеллмана
Группа DH определяет параметры обмена ключами между сторонами. Чем выше номер группы, тем выше криптографическая стойкость и безопасность обмена.
Данный параметр так же содержит в себе выпадающий список, состоящий из следующих значений:
- _group 2_
- _group 5_
- _group 14_
- _group 15_
- _group 16_
- _group 19_
- _group 20_
- _group 21_
### Время жизни (в секундах)
Определяет, как долго действуют согласованные ключи в рамках второй фазы.
- Рекомендуемое значение: 3600 секунд (1 час).
- После истечения времени выполняется повторная генерация ключей.
### Префиксы локальной сети заказчика
Этот параметр определяет, какие сети на стороне заказчика будут маршрутизироваться через IPsec-туннель. Префиксы задаются в формате `192.168.1.0/24`, который позволяет указать диапазон IP-адресов.
@@ -1,68 +0,0 @@
## Cloud PostgreSQL
## О сервисе
Cloud PostgreSQL - это управляемый облачный сервис реляционной базы данных PostgreSQL. Он позволяет развернуть и использовать отказоустойчивый кластер базы данных без необходимости самостоятельно настраивать серверы, репликацию и механизмы отказоустойчивости.
PostgreSQL - это современная система управления базами данных, которая поддерживает стандарт SQL и используется для хранения и обработки данных приложений.
В Cloud PostgreSQL все основные операции по управлению кластером выполняются автоматически.
Сервис самостоятельно:
- управляет ролями серверов базы данных (основной сервер и реплики)
- отслеживает состояние узлов
- автоматически переключает основной сервер при сбоях
Для обеспечения стабильной работы сервиса используется несколько инфраструктурных компонентов:
- **Patroni** - управляет кластером PostgreSQL и автоматическим переключением при отказах
- **etcd** - хранит состояние кластера и обеспечивает согласованность работы узлов
- **HAProxy** - обеспечивает единую точку подключения и распределяет клиентские подключения между узлами
Подключение к базе данных выполняется через прокси-узлы сервиса. Пользователю не требуется подключаться к отдельным серверам кластера.
Для управления базами данных и пользователями в сервисе доступен web-интерфейс **pgAdmin**, который позволяет выполнять администрирование через браузер.
---
## Конфигурации кластера
Сервис Cloud PostgreSQL поддерживает версии PostgreSQL с 13 по 17.
Сервис предоставляется в виде кластера базы данных в конфигурации Primary–Standby, которая обеспечивает репликацию данных и повышенную отказоустойчивость.
В рамках данной конфигурации создаётся кластер из виртуальных серверов, включающий:
- Primary (основной сервер) - обязательный узел, на котором выполняются операции записи данных
- Replica (реплики) - дополнительные узлы, которые создаются по желанию пользователя
Количество реплик может составлять от 0 до 4. Реплики являются частью кластера PostgreSQL и могут использоваться для выполнения запросов, не изменяющих данные (например, SELECT). В многонодовой конфигурации серверы кластера размещаются на разных хостах гипервизора, что повышает устойчивость сервиса к отказам.
По умолчанию фиксация изменений выполняется в синхронном режиме репликации. Это означает, что операция записи считается завершённой только после того, как данные будут зафиксированы как на основном сервере, так и на реплике.
При наличии нескольких реплик синхронный режим применяется только к одной из них, для остальных используется асинхронный режим.
При необходимости режим репликации может быть изменён на асинхронный. В этом случае изменения сначала фиксируются на основном сервере, а затем передаются на реплики с задержкой, без ожидания подтверждения от них.
Прямой доступ к серверам кластера (например, по протоколу SSH) не предоставляется. Пользователь взаимодействует с базой данных исключительно через предоставленные сервисом точки подключения.
На каждом узле кластера установлен пулер соединений PgBouncer, который может использоваться для ускорения работы приложений за счёт оптимизации подключений к базе данных. Использование PgBouncer не является обязательным - подключение возможно как напрямую к PostgreSQL, так и через пулер, а также одновременно обоими способами.
---
## Возможности сервиса
Cloud PostgreSQL предоставляет набор возможностей, позволяющих использовать PostgreSQL в облаке без необходимости самостоятельного администрирования инфраструктуры.
Сервис обеспечивает:
- автоматическое управление кластером PostgreSQL
- высокую доступность за счёт репликации и автоматического переключения primary-узла
- единую точку подключения к базе данных через прокси
- автоматическое переключение при отказе узлов кластера без вмешательства пользователя
- web-доступ к управлению базами данных и пользователями через pgAdmin
- совместимость со стандартными клиентскими инструментами PostgreSQL
- возможность установки расширений PostgreSQL в базу данных
---
## Сценарии использования сервиса
Cloud PostgreSQL подходит для использования в системах, где требуется надёжное хранение данных и упрощённое управление инфраструктурой базы данных.
Сервис может применяться в следующих сценариях:
- размещение production-баз данных с высокими требованиями к доступности
- использование PostgreSQL в микросервисной архитектуре с единой точкой подключения к базе данных
- хранение критичных данных с минимальным временем простоя при отказах инфраструктуры
- быстрое развёртывание PostgreSQL-кластера без необходимости ручной настройки репликации и failover
- администрирование баз данных через web-интерфейс без прямого доступа к серверам кластера