С помощью этого руководства вы сконфигурируете Managed Kafka® как брокер сообщений для микросервисной архитектуры, связав сервисы создания заказа и оповещений с API, работающими на виртуальной машине Ubuntu 22.04. Вы будете работать с демо-проектом микросервисной архитектуры с открытым исходным кодом, написанный на Nest.JS.
Вы будете использовать следующие сервисы:
«Виртуальные машины» — сервис, в рамках которого предоставляется виртуальная машина.
Managed Kafka® — сервис для развертывания и управления кластерами Kafka®.
«Публичные IP» — сервис для организации доступа — для доступа к сервису через интернет.
VPC — изолированная виртуальная сеть для создания безопасной инфраструктуры.
Docker — система контейнеризации.
Docker Compose — инструмент для запуска и управления Docker-контейнерами.
Шаги:
Перед началом работы
-
Если вы уже зарегистрированы, войдите под своей учетной записью.
1. Разверните необходимые ресурсы в облаке
Создайте виртуальную сеть с названием microservices-VPC.
Создайте подсеть со следующими параметрами:
Название — microservices-subnet.
Адрес — 10.10.1.0/24.
VPC — microservices-VPC.
DNS-серверы — 8.8.8.8.
Создайте виртуальную машину со следующими параметрами:
Название — microservices.
Образ — на вкладке Публичные выберите образ Ubuntu 22.04.
Метод аутентификации — SSH-ключ и пароль.
SSH-ключ — ваш SSH-ключ.
Пароль — ваш пароль.
Имя хоста — microservices.
Подключить публичный IP — оставьте опцию включенной.
Тип IP-адреса — Прямой.
Группы безопасности — SSH-access_ru.AZ-1.
Подсеть — microservices-subnet.
Гарантированная доля vCPU — 10%.
vCPU — 2.
RAM — 4.
Создайте кластер Managed Kafka® со следующими параметрами:
Название — microservices.
Версия Kafka — 3.9.0.
Брокеры — 1.
vCPU — 2.
RAM — 4.
Подсеть — microservices-subnet.
Убедитесь, что ресурсы созданы и отображаются в личном кабинете:
На странице сервиса VPC:
отображается сеть microservices-VPC;
количество подсетей — 1;
подсеть microservices-subnet доступна.
На странице сервиса «Виртуальные машины» отображается виртуальная машина microservices со статусом «Запущена».
На странице сервиса Managed Kafka® отображается кластер microservices со статусом «Доступен».
2. Настройте окружение на виртуальной машине
Подключитесь к виртуальной машине microservices через серийную консоль.
Обновите систему:
sudo apt update && sudo apt upgrade -yУстановите Docker и Docker Compose:
# Add Docker's GPG keycurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# Add Docker repositoryecho "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 Dockersudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-compose# Add user to docker groupsudo usermod -aG docker $USERnewgrp dockerПроверьте, что Docker установлен корректно:
docker --versiondocker compose version
3. Разверните микросервисы в Docker Compose
Создайте директорию service и перейдите в нее:
mkdir servicecd serviceСклонируйте репозиторий с микросервисной архитектурой:
git clone https://github.com/cloud-ru/evo-managed-kafka-microservices.gitСоздайте файл .env с помощью команды:
nano .envСкопируйте код в файл:
API_PORT=3000NODE_ENV=productionKAFKA_BROKERS=<kafka_broker_ip>KAFKA_CLIENT_ID_API=api-serviceKAFKA_CLIENT_ID_ORDERS=orders-serviceKAFKA_CLIENT_ID_NOTIFICATIONS=notifications-serviceKAFKA_TOPIC_ORDERS=orders-topicKAFKA_USERNAME=<kafka_writer_username>KAFKA_PASSWORD=<kafka_writer_password>KAFKA_SASL_MECHANISM=scram-sha-512KAFKA_SSL=falseГде:
<kafka_broker_ip> — IP-адрес кластера Managed Kafka®.
<kafka_writer_username> — логин пользователя с ролью Writer.
<kafka_writer_password> — пароль пользователя с ролью Writer.
IP-адрес, логин и пароль можно найти на странице информации о кластере в блоке Данные для подключения.
Запустите микросервисную архитектуру:
docker-compose up -d
4. Протестируйте работу микросервисной архитектуры с Managed Kafka®
Запустите просмотр логов микросервисов:
docker-compose logs -fОткройте новое окно терминала, не закрывая текущий терминал.
Создайте заказ c помощью curl-запроса:
curl -X POST http://localhost:3000/orders \-H "Content-Type: application/json" \-d '{"email": "customer@example.com","goodId": "12345","count": 5}'Переключитесь обратно на терминал 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": 5kafka-orders-service | }kafka-notifications-service | Message received: {kafka-notifications-service | "email": "customer@example.com",kafka-notifications-service | "goodId": "prod-123",kafka-notifications-service | "count": 5kafka-notifications-service | }
5. Удалите доступ по SSH для виртуальной машины
Для повышения безопасности удалите доступ по SSH для вашей виртуальной машины, так как он больше не требуется.
В личном кабинете перейдите в сервис «Виртуальные машины» и выберите машину microservices, созданную на первом шаге.
Перейдите в раздел Сетевые параметры.
Нажмите Изменить группы безопасности для публичного IP-адреса.
Удалите группу «SSH-access_ru».
Нажмите Сохранить.
Убедитесь, что доступа нет — попробуйте подключиться к виртуальной машине по SSH.
Результат
Вы сконфигурировали Managed Kafka® как брокер для общения микросервисов, связали его с сервисами микросервисной архитектуры, работающими на виртуальной машине. Вы получили опыт работы с очередями сообщений и безопасным доступом.