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

Использование Managed Kafka® как брокер сообщений для микросервисной архитектуры

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

С помощью этого руководства вы сконфигурируете Managed Kafka® как брокер сообщений для микросервисной архитектуры, связав сервисы создания заказа и оповещений с API, работающими на виртуальной машине Ubuntu 22.04. Вы будете работать с демо-проектом микросервисной архитектуры с открытым исходным кодом, написанный на Nest.JS.

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

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

  • Managed Kafka® — сервис для развертывания и управления кластерами Kafka®.

  • «Публичные IP» — сервис для организации доступа — для доступа к сервису через интернет.

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

  • Docker — система контейнеризации.

  • Docker Compose — инструмент для запуска и управления Docker-контейнерами.

Шаги:

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

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

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

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

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

    • Названиеmicroservices-subnet.

    • Адрес10.10.1.0/24.

    • VPCmicroservices-VPC.

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

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

    • Названиеmicroservices.

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

    • Метод аутентификацииSSH-ключ и пароль.

    • SSH-ключ — ваш SSH-ключ.

    • Пароль — ваш пароль.

    • Имя хостаmicroservices.

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

    • Тип IP-адресаПрямой.

    • Группы безопасностиSSH-access_ru.AZ-1.

    • Подсетьmicroservices-subnet.

    • Гарантированная доля vCPU10%.

    • vCPU2.

    • RAM4.

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

    • Названиеmicroservices.

    • Версия Kafka3.9.0.

    • Брокеры1.

    • vCPU2.

    • RAM4.

    • Подсетьmicroservices-subnet.

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

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

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

      • количество подсетей — 1;

      • подсеть microservices-subnet доступна.

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

    3. На странице сервиса Managed Kafka® отображается кластер microservices со статусом «Доступен».

2. Настройте окружение на виртуальной машине

  1. Подключитесь к виртуальной машине microservices через серийную консоль.

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

    sudo apt update && sudo apt upgrade -y
  3. Установите Docker и Docker Compose:

    # Add Docker's GPG key
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    # Add Docker repository
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    # Install Docker
    sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-compose
    # Add user to docker group
    sudo usermod -aG docker $USER
    newgrp docker
  4. Проверьте, что Docker установлен корректно:

    docker --version
    docker compose version

3. Разверните микросервисы в Docker Compose

  1. Создайте директорию service и перейдите в нее:

    mkdir service
    cd service
  2. Склонируйте репозиторий с микросервисной архитектурой:

    git clone https://github.com/cloud-ru/evo-managed-kafka-microservices.git
  3. Создайте файл .env с помощью команды:

    nano .env
  4. Скопируйте код в файл:

    API_PORT=3000
    NODE_ENV=production
    KAFKA_BROKERS=<kafka_broker_ip>
    KAFKA_CLIENT_ID_API=api-service
    KAFKA_CLIENT_ID_ORDERS=orders-service
    KAFKA_CLIENT_ID_NOTIFICATIONS=notifications-service
    KAFKA_TOPIC_ORDERS=orders-topic
    KAFKA_USERNAME=<kafka_writer_username>
    KAFKA_PASSWORD=<kafka_writer_password>
    KAFKA_SASL_MECHANISM=scram-sha-512
    KAFKA_SSL=false

    Где:

    • <kafka_broker_ip> — IP-адрес кластера Managed Kafka®.

    • <kafka_writer_username> — логин пользователя с ролью Writer.

    • <kafka_writer_password> — пароль пользователя с ролью Writer.

    IP-адрес, логин и пароль можно найти на странице информации о кластере в блоке Данные для подключения.

  5. Запустите микросервисную архитектуру:

    docker-compose up -d

4. Протестируйте работу микросервисной архитектуры с Managed Kafka®

  1. Запустите просмотр логов микросервисов:

    docker-compose logs -f
  2. Откройте новое окно терминала, не закрывая текущий терминал.

  3. Создайте заказ c помощью curl-запроса:

    curl -X POST http://localhost:3000/orders \
    -H "Content-Type: application/json" \
    -d '{
    "email": "customer@example.com",
    "goodId": "12345",
    "count": 5
    }'
  4. Переключитесь обратно на терминал 1 и проверьте, что сообщение успешно обработано сервисами notifications-service и orders-service — в логах выведено сообщение о получении данных:

    kafka-orders-service | Order received: {
    kafka-orders-service | "email": "customer@example.com",
    kafka-orders-service | "goodId": "prod-123",
    kafka-orders-service | "count": 5
    kafka-orders-service | }
    kafka-notifications-service | Message received: {
    kafka-notifications-service | "email": "customer@example.com",
    kafka-notifications-service | "goodId": "prod-123",
    kafka-notifications-service | "count": 5
    kafka-notifications-service | }

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

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

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

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

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

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

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

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

Результат

Вы сконфигурировали Managed Kafka® как брокер для общения микросервисов, связали его с сервисами микросервисной архитектуры, работающими на виртуальной машине. Вы получили опыт работы с очередями сообщений и безопасным доступом.