Skip to main content
Version: 1.12-grodno (current)

Базы данных и СУБД

Введение

В инфраструктуре medikt используются управляемые облачные базы данных и поисковые системы, развернутые с помощью Terraform манифестов в директории terraform/prod-infra.

MongoDB 8.0 Кластер (Yandex StoreDoc)

Обзор кластера

ПараметрЗначение
Название кластераmedikt-net-mdb8
Версия MongoDB8.0
ОкружениеPRODUCTION
Инстанс-типc3-c4-m8

Конфигурация ресурсов

КомпонентRAMDisk SizeDisk Type
mongod8 GB64 GBnetwork-ssd
mongos8 GB14 GBnetwork-ssd
mongocfg8 GB14 GBnetwork-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 secretuserdb-connection-string
Namespaceprod
Terraform модульmongo-dbs

contentdb

Хранит данные по загружаемому на портал контенту.

ПараметрЗначение
Имя базыcontentdb
Имя пользователяcontentdb
Kubernetes secretcontentdb-connection-string
Namespaceprod
Terraform модульmongo-dbs

transcoderapi

Необходима для реализации функций по обработке видео.

ПараметрЗначение
Имя базыtranscoderapi
Имя пользователяtranscoderapi
Kubernetes secrettranscoder-api-db-connection-string
Namespaceprod
Terraform модульmongo-dbs

trancodercomposer

ПараметрЗначение
Имя базыtrancodercomposer
Имя пользователяtrancodercomposer
Kubernetes secrettranscoder-composer-db-connection-string
Namespaceprod
Terraform модульmongo-dbs

notificationdb

Используется микросервисом notification-api для рассылки уведомлений.

ПараметрЗначение
Имя базыnotificationdb
Имя пользователяnotificationdb
Kubernetes secretnotificationdb-connection-string
Namespaceprod
Terraform модульmongo-dbs

featbit

featbit - стороннее приложение, используемое для включения-выключения функций, находящихся в разработке. Использует MongoDB в кластере medikt-net-mdb8.

ПараметрЗначение
Имя базыfeatbit
Имя пользователяfeatbit
Kubernetes secret(внутренний используется featbit)
Namespacefeatbit
Terraform модульfeatbit

directorydb

Статический справочник, разворачивается как Helm-чарт (не через Terraform MongoDB модуль).

ПараметрЗначение
Имя базыdirectorydb
Имя пользователяdirectorydb
Kubernetes secretdirectorydb-connection-string
Namespaceprod
Деплоймент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)

Учетные данные

ПараметрЗначение
Admin Useradmin
Passwordиз secrets (ossadmin_passwd)
URLhttps://rc1d-ecamgl4rt4sgudef.mdb.yandexcloud.net:9200

Структура манифестов Terraform

Основные модули

МодульНазначениеРасположение
mongodb-clusterСоздание кластера MongoDBterraform/modules/mongodb-cluster/
mongo-dbsСоздание отдельных баз данных в кластереterraform/modules/mongo-dbs/
featbitРазвертывание featbit и создание MongoDB базыterraform/modules/featbit/
directorydb_varsСоздание Kubernetes secret для directorydbterraform/modules/directorydb_vars/
opensearch-headlessСоздание кластера OpenSearchterraform/modules/opensearch-headless/
k8s-secretСоздание Kubernetes secretsterraform/modules/k8s-secret/
k8s-namespacesСоздание Kubernetes namespacesterraform/modules/k8s_namespaces/