Azure подход к многорегиональной архитектуре API с Kubernetes - PullRequest
1 голос
/ 24 апреля 2020

Я пытаюсь отойти от нашего устаревшего локального развертывания. NET каркаса на Azure многорегиональную архитектуру (. NET Core Web API), в основном из-за требований к задержке и масштабированию (и позже , суверенитет данных). В настоящее время мы выполняем около 40-80 запросов / сек c, в основном базовую c активность CRUD с JSON в качестве транспортных данных (в среднем 1 КБ, максимум 3-4 КБ на запрос). Наш текущий стек составляет NGINX LB (+ ModSe c WAF)> 4x IIS> MongoDB + SQL.

Я погружался в K8S / Docker и Azure / GCP / AWS и пытаюсь настроить некоторые демонстрационные проекты, чтобы я мог узнать как можно больше. Я все еще немного борюсь с некоторыми деталями, было бы приятно, если бы вы, ребята, взглянули на мою предложенную архитектуру.

enter image description here

У меня довольно несколько вопросов (после того, как их сильно запутали разные ответы из-за отсутствия постоянно меняющейся документации):

  • Полностью управляемое развертывание контейнера без сервера

    • Кажется, не могу найти это решение в Azure, кроме ACI (Azure Container Instances), который кажется незрелым, не поддерживает автоматическое масштабирование (AFAIK), нет многоадресного развертывания и т.д. c. Я попробовал Google Cloud Run, и он кажется идеальным, но цены на Google BigTable безумно дороги (470 долларов США как базовая цена!), Поэтому мне пришлось отказаться от этого направления. Я также попробовал AWS ECS Fargate, но документации так не хватало, полной устаревшей / неправильной информации даже для простых демонстрационных проектов, и я тоже отказался. Пока я пишу. NET Core C# и документация Azure выглядят лучше всего из 3 больших CSP, я думаю, что это хороший выбор.
  • Azure Передняя дверь (Global Load Balancer)

    • Получу ли я один stati c IP? если да, то как бы он обслуживал ответы с низкой задержкой по всему миру? или он сам управляет DNS и создает несколько глобальных экземпляров и работает в режиме LBR (задержка на основе маршрутизации)? Если он управляет DNS, должен ли я переместить свой DNS на Azure?
    • Он нацелен на "eu.api.test.com" и "na.api.test.com", предполагая, что я не Если вы хотите, чтобы эти имена хостов были опубликованы c, могу ли я каким-то образом связать Azure Парадную дверь с внутренним DNS?
  • VLAN / Подсети

    • Можно ли таким образом изолировать VLAN? Одна из моих проблем - это непосредственный доступ к кластеру K8S для inte rnet. Я также хотел бы создать другую, еще более чувствительную VLAN, которая хранит данные. Можно ли ограничить интерфейс Azure CosmosDB только для связи с этим указанным c VLAN?
    • При активации многозонной репликации Cosmos DB (активно-активно), мне нужно настроить новую VLAN что связывает оба региона? или это выполняется автоматически с помощью Azure?
  • Kubernetes и AGI C - контроллер входа шлюза приложений

    • AFAIK, AGI C - это просто еще одна служба K8S, размещенная в узле, который обменивается данными с Azure диспетчером ресурсов, который, в свою очередь, обращается к шлюзу приложений, чтобы сообщить, какие модули могут обслуживать обратные запросы. , Рекомендуется ли размещать AGI C в другом «пуле узлов», чем пул узлов приложений?
    • Лучше ли устанавливать в каждом регионе совершенно отдельный кластер K8S или мне следует управлять всеми глобальными узлами из одного региона?
    • Полезно ли создавать отдельный пул узлов системы K8S и пул узлов приложений?
    • Как узнать, какая конфигурация (процессор + память + скорость диска) подходит как для пула системных узлов, так и для пула узлов моего приложения? Я пытаюсь понять баланс между количеством узлов и емкостью одного узла (с точки зрения затрат).
    • Какова наилучшая практика в отношении количества модулей на узел (мое намерение - разместить только одно приложение). - никакие другие микросервисы не нужны), разумно ли настроить 1 Pod на узел со 100% назначенными ему ресурсами?
    • Как настроить автоматическое масштабирование? Должен ли я масштабировать узлы (экземпляры виртуальной машины) и модули внутри каждого узла?

Большое спасибо!

...