diff --git a/beecloud-docs b/beecloud-docs new file mode 160000 index 0000000..df88416 --- /dev/null +++ b/beecloud-docs @@ -0,0 +1 @@ +Subproject commit df88416247529a85beeef673abd5e6722c4037e4 diff --git a/src/.vitepress/config.mts b/src/.vitepress/config.mts index 5529249..aba06d9 100644 --- a/src/.vitepress/config.mts +++ b/src/.vitepress/config.mts @@ -159,6 +159,25 @@ export default defineConfig({ {text: 'Бесплатный период', link: '/start/trial.md'}, {text: 'Платное использование', link: '/start/organization.md'}, ], + + '/PaaS/': [ + { + text: 'Начало работы в Cloud PostgreSQL', link: '/PaaS/index.md', + }, + { text: 'Cloud PostgreSQL', link: '/PaaS/PostgreSQL/PostgreSQL-index.md', + collapsed: true, + items: [ + {text: 'Обзор сервиса', link: '/PaaS/PostgreSQL/about.md'}, + {text: 'Описание раздела', link: '/PaaS/PostgreSQL/cluster-parameter.md'}, + {text: 'Общая схема подключения', link: '/PaaS/PostgreSQL/connection.md'}, + {text: 'Возможности пользователя', link: '/PaaS/PostgreSQL/user-capabilities.md'}, + {text: 'Веб-интерфейс pgAdmin', link: '/PaaS/PostgreSQL/pgadmin.md'}, + {text: 'Веб-интерфейс Grafana', link: '/PaaS/PostgreSQL/grafana.md'}, + ], + }, + {text: 'Параметры конфигурации IPSEC', link: '/PaaS/IPSEC.md'}, + ], + // '/billing/': [ // ], @@ -299,7 +318,7 @@ export default defineConfig({ { text: 'Управление ВМ', link: '/compute/compute-how-to/compute-servers-manage.md' }, ], }, -{ text: 'Диски', link: '/compute/compute-how-to/compute-disks/compute-disk-index.md', + { text: 'Диски', link: '/compute/compute-how-to/compute-disks/compute-disk-index.md', collapsed: true, items: [ { text: 'Обзор', link: '/compute/compute-how-to/compute-disks/compute-disk-about.md' }, diff --git a/src/PaaS/IPSEC.md b/src/PaaS/IPSEC.md new file mode 100644 index 0000000..cfa441c --- /dev/null +++ b/src/PaaS/IPSEC.md @@ -0,0 +1,144 @@ +# Параметры конфигурации IPsec-соединения + +В данном разделе приведены параметры конфигурации IPsec-соединения, используемого для организации защищенного канала связи между инфраструктурой заказчика и кластерами. Материал описывает настройки этапов установки соединения и передачи данных, включая методы аутентификации, алгоритмы шифрования и хэширования, группы Диффи-Хеллмана, а также параметры времени жизни ключей. + +Ниже приведены основные параметры, задаваемые при развертывании кластера Kafka. Часть параметров определяется клиентом на этапе заказа услуги, часть - фиксирована и не подлежит изменению. + +## Данные о конфигурации IPSEC + +Параметры подключения (имя туннеля, устройство, публичный IP-адрес) заполняются вручную на основании информации, предоставленной заказчиком. + +#### Версия IKE (Internet Key Exchange) + +Версия IKE выбирается из выпадающего списка, который содержит в себе два параметра - **v1** и **v2**. + +- **IKE v1** - более ранняя версия протокола; +- **IKE v2** - более современная версия (обеспечивает более устойчивое соединение и гибкую обработку ошибок). + +Рекомендуется использовать **IKE v2**, если оборудование заказчика это поддерживает. + +## Метод аутентификации + +Метод аутентификации выбирается вручную из выпадающего списка, который содержит два варианта: + +- **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 12** / **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-адресов. diff --git a/src/PaaS/PostgreSQL/PostgreSQL-index.md b/src/PaaS/PostgreSQL/PostgreSQL-index.md new file mode 100644 index 0000000..45b68cc --- /dev/null +++ b/src/PaaS/PostgreSQL/PostgreSQL-index.md @@ -0,0 +1,25 @@ +--- +section_links: + - title: Назначение сервсиа + link: /PaaS/PostgreSQL/about.md + description: Конфигурации и возможности сервиса + - title: Параметры кластера PostgreSQL + link: /PaaS/PostgreSQL/cluster-parameter.md + description: Технические параметры кластера PostgreSQL + - title: Схема подключения + link: /PaaS/PostgreSQL/connection.md + description: Общая схема подключения к Cloud PostgreSQL + - title: Возможности пользователя + link: /PaaS/PostgreSQL/user-capabilities.md + description: Возможности пользователя при создании сервиса + - title: Веб-интерфейс Grafana + link: /PaaS/PostgreSQL/grafana.md + description: Инструкция по работе с Grafana + - title: Веб-интерфейс PgAdmin + link: /PaaS/PostgreSQL/pgadmin.md + description: Инструкция по работе с PgAdmin +--- + +# Cloud PostgreSQL + +В данном разделе представлена документация по управляемому сервису **Cloud PostgreSQL** платформы Beeline Cloud. \ No newline at end of file diff --git a/src/PaaS/PostgreSQL/about.md b/src/PaaS/PostgreSQL/about.md new file mode 100644 index 0000000..380ecaa --- /dev/null +++ b/src/PaaS/PostgreSQL/about.md @@ -0,0 +1,87 @@ +# Cloud PostgreSQL + +## Назначение сервиса + +**Cloud PostgreSQL** - это управляемый облачный сервис реляционной базы данных PostgreSQL. Он позволяет развернуть и использовать отказоустойчивый кластер базы данных без необходимости самостоятельно настраивать серверы, репликацию и механизмы отказоустойчивости. + +PostgreSQL - это современная система управления базами данных, которая поддерживает стандарт SQL и используется для хранения и обработки данных приложений. + +В **Cloud PostgreSQL** все основные операции по управлению кластером выполняются автоматически. + +Сервис самостоятельно: +- управляет ролями серверов базы данных (основной сервер и реплики); +- отслеживает состояние узлов; +- автоматически переключает основной сервер при сбоях. + +Для обеспечения стабильной работы сервиса используется несколько инфраструктурных компонентов: +- **Patroni** - управляет кластером PostgreSQL и автоматическим переключением при отказах; +- **etcd** - хранит состояние кластера и обеспечивает согласованность работы узлов; +- **HAProxy** - обеспечивает единую точку подключения и распределяет клиентские подключения между узлами. + +Подключение к базе данных выполняется через прокси-узлы сервиса. Пользователю не требуется подключаться к отдельным серверам кластера — все операции производятся через единую точку доступа. + +Для управления базами данных и пользователями доступен [web-интерфейс **pgAdmin**](./pgadmin.md), позволяющий выполнять администрирование непосредственно через браузер. + +## Конфигурации кластера + +Сервис **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; +- администрирование баз данных через веб-интерфейс без прямого доступа к серверам кластера. diff --git a/src/PaaS/PostgreSQL/cluster-parameter.md b/src/PaaS/PostgreSQL/cluster-parameter.md new file mode 100644 index 0000000..0519252 --- /dev/null +++ b/src/PaaS/PostgreSQL/cluster-parameter.md @@ -0,0 +1,81 @@ +# Описание раздела + +Данный раздел содержит технические параметры кластера PostgreSQL и порядок их первичной конфигурации. + +Настройка указанных параметров выполняется администратором облачного провайдера на этапе развёртывания сервиса. Пользователь не имеет прямого доступа к их самостоятельной установке. + +Перед созданием кластера клиент предоставляет перечень требуемых параметров менеджеру. Администратор облачного провайдера выполняет конфигурацию в соответствии с согласованными требованиями. + +## Выбор типа и размера дискового хранилища + +Производительность базы данных напрямую зависит от скорости, с которой она может читать и записывать данные на диск. При заказе кластера необходимо выбрать тип дискового хранилища, который определит максимальную скорость работы (IOPS) и время отклика. + +**IOPS (Input/Output Operations Per Second)** — количество операций чтения или записи, которые диск может выполнить за секунду. Чем выше этот показатель, тем быстрее база данных обрабатывает запросы. + +## Доступные типы хранилищ: + +| Название | Лимит IOPS | +| -------------- | ------------------ | +| **Fast SAS** | до 2 IOPS на 1 ГБ | +| **SSD** | до 5 IOPS на 1 ГБ | +| **Fast SSD** | до 10 IOPS на 1 ГБ | +| **Ultra NVMe** | до 25 IOPS на 1 ГБ | + +::: 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-адрес. + +::: + +## Сетевой доступ к кластеру + +Для организации защищенного подключения к кластеру Kafka доступны стандартные механизмы, используемые во всех сервисах платформы: +- **IPsec-подключение** - организация защищенного туннеля между инфраструктурой и кластером PostgreSQL. Подробнее см. [раздел IPsec](../IPSEC.md); +- **Interconnection** - прямое сетевое соединение между сервисами внутри платформы без выхода в интернет. Подробнее см. раздел Interconnection. + +Выбор конкретного способа подключения зависит от архитектуры приложений и требований к безопасности. \ No newline at end of file diff --git a/src/PaaS/PostgreSQL/connection.md b/src/PaaS/PostgreSQL/connection.md new file mode 100644 index 0000000..862ca9a --- /dev/null +++ b/src/PaaS/PostgreSQL/connection.md @@ -0,0 +1,88 @@ +# Общая схема подключения + +Подключение к кластеру **Cloud PostgreSQL** осуществляется через прокси-сервер. Клиентские подключения принимаются прокси, который маршрутизирует трафик к соответствующим узлам кластера (master или replica) в зависимости от выбранного порта. + +Прокси является единой точкой входа для всех клиентских подключений и принимает входящие соединения от приложений, административных инструментов и пользователей. + +В зависимости от выбранного порта прокси автоматически направляет трафик: +- **на активный primary-узел** - для операций чтения и записи +- **на реплики** - для операций только чтения + +::: warning Примечание +Прямое подключение к отдельным узлам базы данных **не используется и не предоставляется**. Взаимодействие с кластером всегда выполняется **через прокси-сервер**. +::: + +## Подключение к базе данных + +Для подключения к базе данных необходимо использовать IP-адрес прокси-сервера, который предоставляется после заказа услуги. + +Этот IP-адрес является единой точкой входа для работы с кластером PostgreSQL. Все подключения к базе данных - как из приложений, так и из клиентских инструментов - выполняются через него. + +Использование других IP-адресов или попытка прямого подключения к отдельным узлам кластера не предусмотрены. + +## Доступные порты + +Для разных типов нагрузки используются разные порты: + +|Порт |Назначение | +|------|-----------------------------------------| +|5432 |Primary (чтение и запись) | +|15432 |Replica (только чтение) | +|6432 |Primary через PgBouncer (чтение и запись)| +|16432 |Replica через PgBouncer (только чтение) | + +#### Особенности работы портов + +- Порты **для чтения и записи** (5432, 6432) всегда направляют трафик на активный primary-узел. При смене primary переключение происходит автоматически; +- Порты **только для чтения** (15432, 16432) направляют трафик на активные реплики. Если реплик несколько, нагрузка распределяется между ними по принципу round-robin; +- Если в кластере **отсутствуют реплики**, порты для чтения не используются - подключение по ним не устанавливается. + +#### Рекомендации по выбору порта + +- Для OLTP-нагрузки и большого количества соединений рекомендуется использовать **порты PgBouncer (6432 или 16432)**; +- Для операций записи используйте **master-порты (5432 или 6432)**; +- Для read-only запросов можно использовать **replica-порты (15432 или 16432)**. + +## Доступ к pgAdmin + +Для администрирования базы данных используется [web-интерфейс pgAdmin](./pgadmin.md). +Доступ осуществляется по DNS-имени, которое нужно прописать локально в инфраструктуре откуда будет происходить доступ к web-интерфейсу сервиса: +`10.X.X.4 .cloud-pg.dfcloud.ru` + +После добавления записи pgAdmin будет доступен по адресу: +`https://.cloud-pg.dfcloud.ru` + +Авторизация выполняется с использованием учётных данных, предоставленных вместе с доступом к сервису. + +::: warning Примечание + +- подключение к базе данных возможно только через указанный прокси-IP; +- в интерфейсе pgAdmin уже добавлен сервер базы данных, созданный для данной инсталляции. Для подключения требуется ввести пароль от учётной записи базы данных; +- pgAdmin предназначен для администрирования и не рекомендуется для выполнения тяжёлых или длительных запросов в production-среде. + +::: + +## Примеры подключения к PostgreSQL + +Подключение к primary: +`psql -h 10.X.X.4 -p 5432 -U -d ` + +Подключение через PgBouncer: +`psql -h 10.X.X.4 -p 6432 -U -d ` + +#### Подключение через DBeaver / DataGrip + +При создании подключения укажите: +- Host: 10.X.X.4; +- Port: 5432 или 6432; +- Database: ``; +- User / Password: согласно выданным доступам; +- Тип подключения: PostgreSQL. + +#### Пример строки подключения + +Primary: +`postgresql://:@10.X.X.4:5432/` + +Через PgBouncer: +`postgresql://:@10.X.X.4:6432/` diff --git a/src/PaaS/PostgreSQL/grafana.md b/src/PaaS/PostgreSQL/grafana.md new file mode 100644 index 0000000..b0e7e35 --- /dev/null +++ b/src/PaaS/PostgreSQL/grafana.md @@ -0,0 +1,104 @@ +# Grafana + +## Инструкция по работе с метриками + +Доступ к метрикам кластера предоставляется после запроса соответствующих прав. После получения доступа можно перейти в систему мониторинга по ссылке: https://metrics.dfcloud.ru. После перехода по ссылке будет представлена главная страница Grafana. + +Для просмотра метрик кластера PostgreSQL выполните следующие шаги: + +1. В левом боковом меню нажмите **Dashboard**; +2. В списке доступных дашбордов выберите **папку Cloud PostgreSQL**; +3. Внутри папки выберите **дашборд Cloud PostgreSQL** — в нём отображаются все метрики кластера. + +## Управление отображаемыми данными + +В верхней части дашборда доступны селекторы для настройки отображения: + +- **InstallationID** - выбор одного опеределенного кластера; +- **Cluster node name** - выбор конкретного нода кластера, в котором значения графиков меняются в зависимости от выбранного хоста (селектор влияет на все графики, кроме блока Patroni); +- **Database** - выбор базы данных, по которым отображаются метрики; +- **Lock table** - выбор типа блокировки для отображения (применим не для всех графиков). + +## Метрики PostgreSQL + +Метрики отображают ключевые параметры конфигурации и текущие показатели работы экземпляра PostgreSQL. + +| Наименование метрики | Описание метрики | +| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------| +| **Version** | Показывает текущую версию PostgreSQL, установленную на кластере. | +| **Current fetch data** | Объем данных, извлеченных из базы за текущий период (операции чтения). | +| **Current insert data** | Объем данных, вставленных в базу (операции записи новых данных). | +| **Current update data** | Объем данных, обновленных в базе. | +| **Seq Page Cost** | Стоимость последовательного чтения страницы данных. Влияет на выбор плана запроса: чем выше значение, тем реже оптимизатор будет выбирать последовательное сканирование таблиц. | +| **Random Page Cost** | Стоимость чтения случайной страницы данных. Низкое значение говорит о том, что в системе используются быстрые диски, и оптимизатор будет чаще выбирать доступ по индексам. | +| **Max Connections** | Максимальное количество одновременных подключений к базе данных, разрешенное на сервере. | +| **Shared Buffers** | Объем оперативной памяти, выделенный под кэш данных PostgreSQL. Здесь хранятся часто используемые данные для ускорения доступа к ним. | +| **Effective Cache** | Предполагаемый размер системного кэша файлов. Используется оптимизатором для оценки вероятности нахождения данных в кэше операционной системы. | +| **Maintenance Work Mem** | Объем памяти для выполнения операций обслуживания. | +| **Work Mem** | Объем памяти, выделяемый для внутренних сортировок и хеш-таблиц при выполнении запросов (на каждую операцию). | +| **Max WAL Size** | Максимальный размер журнала предзаписи, после достижения которого запускается процесс контрольной точки (checkpoint). | +| **Max Worker Processes** | Максимальное количество фоновых процессов, которые могут быть запущены в системе. | +| **Max Parallel Workers** | Максимальное количество параллельных процессов, которые могут быть задействованы при выполнении одного запроса. | + +## Метрики Database Stats + +Метрики отображают текущую нагрузку и состояние баз данных в кластере PostgreSQL. Данные метрики позволяют: +- оценить эффективность работы баз данных; +- отследить скачки нагрузки; +- своевременно среагировать на потенциальные проблемы до того, как они повлияют на работу приложений. + +| Наименование | Описание | +|---------------------------| -------------------| +| **Average CPU Usage** | Показывает время, затраченное на выполнение пользовательских и системных задач, а также, насколько интенсивно используются вычислительные ресурсы сервера базы данных. | +| **Average Memory Usage** | Средний объем оперативной памяти, используемой процессами PostgreSQL за 5-минутные интервалы. Показывает, сколько памяти потребляет база данных в процессе работы. | +| **Open File Descriptors** | Количество открытых файловых дескрипторов процессами PostgreSQL. Метрика показывает среднее (Mean), последнее (Last), максимальное (Max) и минимальное (Min) значение за интервал. | +| **Active sessions** | Показывает, сколько в данный момент выполняется запросов к PostgreSQL. Метрика показывает среднее (Mean), последнее (Last), максимальное (Max) значение. | +| **Transcations** | Количество транзакций в базах данных кластера. Метрика разделена на два типа операций: commits (успешно завершенные транзакции) и rollbacks (откаченные транзакции). | +| **Update data** | Объем данных, обновленных в базах данных кластера. Показывает, сколько данных было изменено в результате выполнения операций UPDATE. | +| **Fetch data (SELECT)** | Объем данных, извлеченных из базы с помощью запросов SELECT. Показывает, сколько данных было считано из базы в результате операций чтения. | +| **Insert data** | Объем данных, вставленных в базы данных кластера. Показывает, сколько данных было добавлено в результате выполнения операций INSERT. | +| **Lock tables** | Количество блокировок таблиц в базах данных кластера. Показывает, сколько раз таблицы были заблокированы для выполнения операций.
AccessShareLock - это блокировка, которая возникает, когда кто-то читает данные из таблицы (делает SELECT). Данная блокировка не мешает операциям чтения, но не дает удалить в этот момент таблицу или изменить ее структуру. | +| **Return data** | Объем данных, возвращаемых клиенту в результате выполнения запросов. Показывает, сколько данных было отправлено обратно клиенту после обработки запросов в базе. | +| **Idle sessions** | Количество бездействующих сессий подключения к базе данных. Показывает, сколько открытых подключений в данный момент не выполняют никаких запросов и просто ждут. | +| **Delete data** | Объем данных, удаленных из базы данных в результате выполнения операций DELETE. Показывает, сколько данных было удалено из таблиц. | +| **Cache Hit Rate** | Показывает процент запросов к данным, которые были удовлетворены из кэша (оперативной памяти), без обращения к диску. Показывает, насколько эффективно используется кэш PostgreSQL. | +| **Buffers (bgwriter)** | Метрика, показывающая активность фонового процесса записи, который занимается синхронизацией данных из оперативной памяти на диск. | +| **Conflicts/Deadlocks** | Метрика, отслеживающая две проблемы при работе с базой данных: конфликты восстановления и взаимоблокировки. | +| **Temp File (Bytes)** | Объем данных, записанных во временные файлы при выполнении запросов в базах данных. PostgreSQL создает временные файлы на диске, когда для выполнения запроса не хватает оперативной памяти. | +| **Checkpoint Stats** | Метрика, показывающая время, затрачиваемое на выполнение checkpoints в PostgreSQL, где:
- **write_time** - время, затраченное на запись данных на диск во время checkpoint (сколько миллисекунд ушло на запись файлов).
- **sync_time** - время, затраченное на синхронизацию файлов с диском (чтобы данные гарантированно сохранились). | + +## Метрики Patroni + +Метрик отображают состояние и конфигурацию кластера PostgreSQL под управлением Patroni. Эти метрики позволяют контролировать отказоустойчивость кластера, отслеживать переключения мастера и убеждаться, что репликация работает штатно. + +| Наименование | Описание | +|------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------| +| **Patroni Leader** | Метрика, которая показывает, какая нода в кластере PostgreSQL в данный момент является master-сервером, принимающим запросы на запись. | +| **Patroni Replica** | Метрика, которая показывает, какие узлы кластера PostgreSQL в данный момент выполняют роль реплики. | +| **Sync Standby** | Метрика, которая показывает, какая из реплик в кластере PostgreSQL назначена синхронной. | +| **PostgreSQL WAL Replay** | Метрика, которая показывает, включена ли на узлах кластера синхронизация данных через WAL. | +| **PostgreSQL Pending Restart** | Метрика, которая показывает, требуется ли перезагрузка PostgreSQL на узлах кластера после изменения конфигурационных параметров. | +| **Patroni Primary Node** | Метрика, которая показывает, какой узел в кластере PostgreSQL в данный момент является основным и принимает запросы на запись. | +| **Patroni Secondary Nodes** | Метрика, которая показывает, какие узлы кластера PostgreSQL в определенные моменты времени выполняли роль реплик. | +| **Replicas Received WAL Location** | Метрика, показывающая объем журналов предзаписи (WAL), полученных каждой репликой кластера. | +| **Primary WAL Location** | Метрика, показывающая объем журналов предзаписи (WAL), на основном сервере кластера PostgreSQL. | +| **Replicas Replayed WAL Location** | Метрика, показывающая объем журналов предзаписи (WAL), которые были не просто получены, а уже применены на репликах кластера. | +| **WAL Replay Paused** | Метрика, которая отслеживает, не приостановлен ли процесс применения WAL-журналов на узлах кластера. Если передача или применение WAL-файлов останавливается, на графике происходит скачок. | + +## Метрики Hosts + +Блок Hosts управляется селектором **Cluster node name**. Метрики отображают состояние и ресурсы серверов, на которых развернут кластер PostgreSQL. Данные метрики позволяют оценить, хватает ли серверу ресурсов для текущей нагрузки, и своевременно обнаружить проблемы с производительностью или нехваткой места на дисках. + +| Наименование | Описание | +| -------------------------------|-------------------------------------------------------------------------------------------------------------------------------| +| **CPU Busy** | Метрика, показывающая общую загруженность всех процессорных ядер на сервере, где работает PostgreSQL. | +| **RAM Used** | Метрика, показывающая процент оперативной памяти, который занят на сервере всеми процессами. | +| **CPU Cores** | Метрика, показывающая общее количество процессорных ядер, доступных на сервере, где работает PostgreSQL. | +| **RAM Total** | Метрика, показывающая общий объем оперативной памяти, установленный на сервере. | +| **DB Disk Total** | Метрика, показывающая общий объем дискового пространства, выделенного для хранения данных базы данных PostgreSQL на сервере. | +| **CPU Basic** | Метрика, которая показывает детальную разбивку загрузки процессора по типам выполняемых задач. Она позволяет увидеть, на что именно тратится процессорное время на сервере. | +| **Memory Basic** | Метрика, которая показывает детальную разбивку использования оперативной памяти на сервере, а также информацию о SWAP. | +| **Disk IOps** | Метрика, показывающая количество операций чтения и записи, выполняемых на диске сервера в секунду. | +| **Disk Space Used Basic** | Метрика, показывающая процент занятого дискового пространства на всех подключенных файловых системах сервера. | +| **Disk R/W Data** | Показывает объем данных в байтах, читаемых с диска и записываемых на диск в секунду. | +| **Filesystem space available** | Метрика, показывающая объем свободного дискового пространства на файловой системе сервера. | diff --git a/src/PaaS/PostgreSQL/pgadmin.md b/src/PaaS/PostgreSQL/pgadmin.md new file mode 100644 index 0000000..b4cdeba --- /dev/null +++ b/src/PaaS/PostgreSQL/pgadmin.md @@ -0,0 +1,67 @@ +# PgAdmin + +После предоставления доступа к сервису **Cloud PostgreSQL** пользователь получает возможность управлять базами данных через веб-интерфейс **pgAdmin**. Ниже приведена инструкция по входу в систему и выполнению основных операций. + +## Вход в pgAdmin + +1. Откройте веб-браузер и перейдите по адресу, предоставленному для доступа к pgAdmin; +2. На странице авторизации введите **логин и пароль от pgAdmin**; +> Учетные данные направляются пользователю на электронную почту при предоставлении доступа. +3. После входа в систему в левой панели навигации откройте раздел **Servers**; +4. Выберите предварительно настроенный сервер с названием **PostgreSQL**; +5. В открывшемся окне введите пароль; +> Важно: на данном этапе необходимо указать **пароль учетной записи базы данных**, а не пароль от pgAdmin. +6. Нажмите **ОК**. + +После успешной аутентификации станет доступен веб-интерфейс СУБД PostgreSQL. + +## Реплики и параметры конфигураций + +pgAdmin позволяет осуществлять мониторинг реплик, входящих в состав кластера. Чтобы просмотреть список реплик необходимо открыть раздел **Replica nodes** в панели навигации. + + +### Просмотр состояния репликаций + +Чтобы проверить состояние репликации: +1. Выберите нужную реплику в разделе **Replica nodes**; +2. Перейдите в подраздел **Replication**; +3. Откройте пункт **Replication stats**; +4. Разверните раздел **Подробности** - в нем отображаются все параметры и текущее состояние репликации. + +Вкладка **Replication** позволяет определить, выполняется ли передача данных на дополнительные узлы кластера. + +### Просмотр конфигураций реплики + +Чтобы просмотреть **параметры конфигурации PostgreSQL**, применённые к конкретной реплике, перейдите в раздел **Конфигурация**, расположенный в блоке **Replica nodes**. + +Раздел **Конфигурация** содержит следующие параметры: +- **Имя** - наименование конфигурационного параметра; +- **Категория** - логическая группа параметра; +- **Значение** - текущее установленное значение; +- **Единицы** - единицы измерения (если применимо); +- **Описание** - краткое пояснение назначения параметра. +> Вкладка **Конфигурация** предназначена для просмотра текущих настроек реплики. + +## Базы данных + +### Просмотр существующих баз данных: + +Чтобы просмотреть существующие базы данных, откройте раздел Базы данных в левой панели навигации. В этом разделе отображается перечень всех созданных баз. + +### Создание новой базы данных: + +1. Щелкните правой кнопкой мыши по разделу **Базы данных**; +2. В контекстном меню выберите **Создать**, затем - **База данных**; +3. Заполните обязательные поля в открывшейся форме; +4. Нажмите **Сохранить**. + +## Роли входа / группы + +В разделе **Роли входа/группы** отображается список пользователей (ролей), имеющих доступ к базам данных кластера. + +### Создание новой роли: + +1. Щелкните правой кнопкой мыши по разделу **Роли входа/группы**; +2. Выберите **Создать**, затем - **Роль входа/группы**; +3. Заполните необходимые параметры в форме создания роли; +4. Нажмите **Сохранить**. \ No newline at end of file diff --git a/src/PaaS/PostgreSQL/user-capabilities.md b/src/PaaS/PostgreSQL/user-capabilities.md new file mode 100644 index 0000000..dca1ef4 --- /dev/null +++ b/src/PaaS/PostgreSQL/user-capabilities.md @@ -0,0 +1,119 @@ +# Возможности пользователя + +Данный раздел описывает права, которые предоставляются пользователю PostgreSQL при создании сервиса **Cloud PostgreSQL**, а также перечень административных операций, доступных ему для самостоятельного выполнения. + +При развертывании сервиса автоматически создаётся пользователь базы данных с преднастроенными атрибутами и привилегиями. Эти права позволяют заказчику самостоятельно управлять своими базами данных, ролями и пользователями в рамках созданного экземпляра PostgreSQL. + + +## Общая информация о пользователе + +При инициализации сервиса автоматически создаётся пользователь: + +```nginx +client +``` + +Данный пользователь является основной учётной записью для административной работы в рамках предоставленного экземпляра PostgreSQL. + +Он предназначен для самостоятельного управления в пределах выданных привилегий: +- базами данных; +- ролями; +- правами доступа. + + +## Выданные права и ограничения + +Пользователю `client` назначается набор атрибутов и привилегий, позволяющих выполнять административные операции в рамках своего экземпляра базы данных. + +#### Атрибуты роли + +Пользователь создаётся со следующими атрибутами: +- `CREATEDB` — разрешено создание и удаление баз данных; +- `CREATEROLE` — разрешено создание ролей и пользователей, а также управление их. + +Атрибут `SUPERUSER` пользователю не предоставляется. Соответственно, доступ к системным операциям уровня кластера и настройкам сервера отсутствует. + +#### Права на системную базу postgres: + +К стандартной базе данных `postgres` пользователю предоставлено только право подключения — `CONNECT` + +**Иные привилегии (создание объектов, изменение схем и т.д.) на данную базу не выдаются.** + + +## Мониторинг и системные представления + +Для выполнения базовых задач мониторинга пользователю дополнительно предоставлены: +- членство в роли `pg_monitor`; +- право `SELECT` на системное представление: +```sql +pg_catalog.pg_stat_replication +``` + +Доступ к системной информации предоставляется исключительно **в режиме чтения**. Изменение системных представлений и параметров сервера недоступно. + + +## Изменение пароля + +После первого подключения к базе данных пользователь `client` обязан выполнить изменения пароля. + +Изменить пароля можно: +- в открытом виде (с передачей нового значения пароля); +- с указанием заранее сгенерированного хэша. + +На сервере используется алгоритм шифрования паролей: + +``` +scram-sha-256 +``` + +При использовании **SCRAM** применяется следующий формат хэша: + +``` +$:$: +``` + +| Операция | Описание | Команда SQL | +|----------|----------|-------------| +|Смена пароля в открытом виде | Для смены пароля в открытом виде | ```ALTER USER client WITH PASSWORD 'new_strong_password';``` | +|Смена пароля с указанием хэша | Рекомендуется использовать сложный уникальный пароль, соответствующий требованиям информационной безопасности, и хранить его в защищённом хранилище | ```ALTER USER client WITH ENCRYPTED PASSWORD '$4096:...';``` | +|Создание новой базы данных | Для создания базы данных | ```CREATE DATABASE app_db;``` | +|Создание базы данных с указанием владельца | Пользователь, указанный как владелец, будет иметь полный контроль над базой данных, включая права на её удаление и изменение. По умолчанию владельцем создаваемой базы данных является пользователь, который её создает | ```CREATE DATABASE app_db OWNER client;``` | + + +## Создание пользователей и ролей + +Пользователь `client` имеет право создавать новые роли и пользователей для приложений, а также управлять их правами доступа. + +| Операция | Описание | Команда SQL | +|----------|----------|-------------| +|Создание роли без логина | Для входа в базу данных (например, для организации прав доступа) | ```CREATE ROLE app_role; ```| +|Создание пользователя с паролем | Для создания пользователя с паролем. После выполнения этой команды новый пользователь `app_user` будет иметь возможность входа в базу данных, используя указанный пароль. | ```CREATE USER app_user WITH PASSWORD 'app_password';``` | +|Назначение роли пользователю | Для назначения роли пользователю. Данная команда позволяет управлять правами пользователя в рамках определённой роли. После выполнения этой команды пользователь `app_user` станет членом роли `app_role`, и будет наследовать все права, связанные с этой ролью. | ```GRANT app_role TO app_user; ``` | + + +## Управление правами доступа + +После создания пользователей и ролей необходимо назначить им соответствующие права доступа. + +| Операция | Описание | Команда SQL | +|----------|----------|-------------| +|Передача владельца базы данных | Для передачи прав владения базой данных другому пользователю. После выполнения этой команды база данных `app_db` будет принадлежать пользователю `app_user`, и он будет иметь полный контроль над ней.| ```ALTER DATABASE app_db OWNER TO app_user;``` | +|Выдача прав на подключение к базе данных | Для предоставления прав к подключению к базе данных. После выполнения этой команды пользователь может `app_user` подключаться к базе данных `app_db`. | ```GRANT CONNECT ON DATABASE app_db TO app_user;```| +|Предоставление прав на схему public | Для предоставления прав на использование схемы `public`. После выполнения этой команды пользователь `app_user` может использовать объекты в схеме `public`, а также создавать новые объекты внутри неё. | ```GRANT USAGE, CREATE ON SCHEMA public TO app_user;```| +|Предоставление прав на существующие таблицы | Для предоставления доступа пользователю к существующим таблицам в схеме `public`. После выполнения этой команды пользователь `app_user` может выполнять операции чтения, вставки, обновления и удаления данных в существующих таблицах схемы `public`.| ```GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_user;``` | +|Предоставление прав на будущие таблицы | Если необходимо автоматически предоставить пользователю права на новые таблицы, создаваемые в схеме `public`. После выполнения этой команды все будущие таблицы, создаваемые в схеме `public`, будут автоматически иметь права для пользователя `app_user` на чтение, вставку, обновление и удаление данных. | ```ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_user;```| + + +## Мониторинг репликации + +Пользователь `client` имеет доступ к системным представлениям для мониторинга состояния репликации в кластере PostgreSQL. + +| Операция | Описание | Команда SQL | +|----------|----------|-------------| +|Просмотр состояния репликации | Для просмотра текущего статуса репликации. Этот запрос возвращает информацию о всех репликах, подключённых к основному (primary) серверу. |```SELECT * FROM pg_stat_replication;```| + +::: warning Ограничения доступа реплкации + +Пользователь `client` имеет доступ к данным в представлении `pg_stat_replication` только в режиме **read-only**. Это означает, что он может просматривать состояние репликации, но не может изменять или вмешиваться в процесс репликации. + +::: \ No newline at end of file diff --git a/src/PaaS/index.md b/src/PaaS/index.md new file mode 100644 index 0000000..933c9aa --- /dev/null +++ b/src/PaaS/index.md @@ -0,0 +1,12 @@ +--- +section_links: + - title: Cloud PostgreSQL + link: /PaaS/PostgreSQL/PostgreSQL-index.md + description: Обзор сервиса PostgreSQL + - title: IPSEC + link: /PaaS/IPSEC.md + description: Параметры конфигурации IPSEC + +--- + +# Начало работы в Cloud PostgreSQL diff --git a/src/index.md b/src/index.md index 5fc2dea..8b05e0e 100644 --- a/src/index.md +++ b/src/index.md @@ -91,7 +91,7 @@ services: - title: Резервное копирование description: Создание, хранение и восстановление копии виртуальных машин icon: refresh - link: /backups/index + link: /backups/index - title: Базы данных articles: - title: ClickHouse @@ -100,6 +100,10 @@ services: - title: MongoDB description: В работе icon: database + - title: PostgreSQL + description: Объектно-реляционная СУБД с открытым кодом, обеспечивающая высокую надёжность и масштабируемость + icon: database + link: /PaaS/index - title: Аналитика articles: - title: Визуализация и анализ данных