Введение
В инфраструктуре medikt используются управляемые облачные базы данных и поисковые системы, развернутые с помощью Terraform манифестов в директории terraform/prod-infra.
MongoDB 8.0 Кластер (Yandex StoreDoc)
Обзор кластера
| Параметр | Значение |
|---|
| Название кластера | medikt-net-mdb8 |
| Версия MongoDB | 8.0 |
| Окружение | PRODUCTION |
| Инстанс-тип | c3-c4-m8 |
Конфигурация ресурсов
| Компонент | RAM | Disk Size | Disk Type |
|---|
| mongod | 8 GB | 64 GB | network-ssd |
| mongos | 8 GB | 14 GB | network-ssd |
| mongocfg | 8 GB | 14 GB | network-ssd |
Настройки сети
- VPC:
module.vpc.vpc_id
- Subnet:
module.vpc.subnet_id
- Allowed CIDR:
172.16.50.0/24
- Public IP: не назначается (TODO: написать статью про подключене к внутренней сети медикт через wg0.medikt.net)
Maintenance Window
Так как yandex storedoc - управляемая база данных, у нее есть фиксированное окно обслуживания. Яндекс отправляет предупреждения о предстоящем обслуживании (обновления и т. п.)
- Тип: WEEKLY
- День: SAT
- Час: 3:00 (UTC)
Базы данных MongoDB
Все базы данных (кроме directorydb) развернуты в едином кластере MongoDB medikt-net-mdb8. Приложения используют Kubernetes secret для подключения к БД.
userdb
База данных пользователей и администраторов.
| Параметр | Значение |
|---|
| Имя базы | userdb |
| Имя пользователя | userdb |
| Kubernetes secret | userdb-connection-string |
| Namespace | prod |
| Terraform модуль | mongo-dbs |
contentdb
Хранит данные по загружаемому на портал контенту.
| Параметр | Значение |
|---|
| Имя базы | contentdb |
| Имя пользователя | contentdb |
| Kubernetes secret | contentdb-connection-string |
| Namespace | prod |
| Terraform модуль | mongo-dbs |
transcoderapi
Необходима для реализации функций по обработке видео.
| Параметр | Значение |
|---|
| Имя базы | transcoderapi |
| Имя пользователя | transcoderapi |
| Kubernetes secret | transcoder-api-db-connection-string |
| Namespace | prod |
| Terraform модуль | mongo-dbs |
trancodercomposer
| Параметр | Значение |
|---|
| Имя базы | trancodercomposer |
| Имя пользователя | trancodercomposer |
| Kubernetes secret | transcoder-composer-db-connection-string |
| Namespace | prod |
| Terraform модуль | mongo-dbs |
notificationdb
Используется микросервисом notification-api для рассылки уведомлений.
| Параметр | Значение |
|---|
| Имя базы | notificationdb |
| Имя пользователя | notificationdb |
| Kubernetes secret | notificationdb-connection-string |
| Namespace | prod |
| Terraform модуль | mongo-dbs |
featbit
featbit - стороннее приложение, используемое для включения-выключения функций, находящихся в разработке. Использует MongoDB в кластере medikt-net-mdb8.
| Параметр | Значение |
|---|
| Имя базы | featbit |
| Имя пользователя | featbit |
| Kubernetes secret | (внутренний используется featbit) |
| Namespace | featbit |
| Terraform модуль | featbit |
directorydb
Статический справочник, разворачивается как Helm-чарт (не через Terraform MongoDB модуль).
| Параметр | Значение |
|---|
| Имя базы | directorydb |
| Имя пользователя | directorydb |
| Kubernetes secret | directorydb-connection-string |
| Namespace | prod |
| Деплоймент | Helm-чарт directory-db |
OpenSearch Кластер
Обзор кластера
Nosql-СУБД, используемая content-api для хранения индексов, используемых при полнотекстовом поиске. content-indexer переиндексирует данные из MongoDB для поддержания индексов в актуальном состоянии.
| Параметр | Значение |
|---|
| Название кластера | opensearch-mini |
| Окружение | PRODUCTION |
| Версия | 1.8 |
| Terraform модуль | opensearch-headless |
Конфигурация узла
| Параметр | Значение |
|---|
| Предустановка | s2.micro |
| Количество узлов | 1 |
Плагины OpenSearch
- analysis-icu
- yandex-lemmer
opensearch-mini maintenance window
- Тип: WEEKLY
- День: SAT
- Час: 3:00 (UTC)
Учетные данные
Основные модули
| Модуль | Назначение | Расположение |
|---|
mongodb-cluster | Создание кластера MongoDB | terraform/modules/mongodb-cluster/ |
mongo-dbs | Создание отдельных баз данных в кластере | terraform/modules/mongo-dbs/ |
featbit | Развертывание featbit и создание MongoDB базы | terraform/modules/featbit/ |
directorydb_vars | Создание Kubernetes secret для directorydb | terraform/modules/directorydb_vars/ |
opensearch-headless | Создание кластера OpenSearch | terraform/modules/opensearch-headless/ |
k8s-secret | Создание Kubernetes secrets | terraform/modules/k8s-secret/ |
k8s-namespaces | Создание Kubernetes namespaces | terraform/modules/k8s_namespaces/ |