Изолирующее решение высокой доступности в среде микросервисов

Микросервисы

Вообще говоря, процесс корпоративных исследований и разработок обычно выглядит следующим образом: сначала разрабатывают и тестируют функции в тестовой среде, затем в оттенках серого и, наконец, выпускают в производственную среду. Кроме того, чтобы стабилизировать производственную среду, тестовая среда должна быть изолирована от производственной среды; необходимо столкнуться с проблемой: проблемой нескольких сред, то есть как изолировать данные нескольких сред (таких как тестовая среда и производственная среда)? Как изящно изолировать (не требуя каких-либо изменений со стороны пользователя).

Практический опыт Nacos по изоляции окружающей среды

что такое окружающая среда

Когда дело доходит до изоляции от окружающей среды, мы должны сначала выяснить, что такое окружающая среда. В настоящее время нет единого определения слова «среда», некоторые компании называют его средой, в облаке Alibaba — регионом, в архитектуре Kubernetes — пространством имен и так далее. В данной работе считается, что среда — это логически или физически независимый набор систем, в который входят все компоненты (шлюз, инфраструктура служб, реестр микросервисов, центр конфигурации, система сообщений, кэш, база данных и т. д.), обрабатывающие запросы пользователей. обрабатывать запросы указанной категории. Например, на многих веб-сайтах существует концепция идентификатора пользователя, который можно разделить в соответствии с идентификатором пользователя.Запросы с идентификаторами пользователей, оканчивающимися на четное число, обрабатываются одной системой, а запросы, оканчивающиеся на нечетное число, обрабатываются другой системой. Как показано ниже. Изоляция среды, о которой мы здесь говорим, относится к физической изоляции, то есть разные среды относятся к разным машинным кластерам.

Какая польза от изоляции от окружающей среды

Концепция среды: система, содержащая все необходимые компоненты для обработки запросов пользователей для обработки запросов определенного класса. Каковы преимущества изоляции от окружающей среды? Как видно из определения концепции, изоляция от окружающей среды имеет как минимум три преимущества:

  • локализация отказов
  • Восстановление
  • Тест оттенков серого

локализация отказов

В первую очередь потому, что среда — это самостоятельная компонентная единица, которая может обрабатывать запросы пользователей, то есть, какой бы длинной ни была линия обработки запросов пользователей, она не выскочит из заданного машинного кластера. Даже если эта часть машины выйдет из строя, это повлияет только на некоторых пользователей, таким образом изолируя неисправность в пределах указанного диапазона. Если мы разделим все машины на десять сред в соответствии с идентификатором пользователя, то при возникновении проблемы в одной среде влияние на пользователя уменьшится до одной десятой, что значительно повысит доступность системы.

Восстановление

Еще одним важным преимуществом изоляции от окружающей среды является возможность быстрого восстановления после сбоев. Когда возникает проблема со службами определенной среды, направление маршрутизации пользовательских запросов может быть быстро изменено путем доставки конфигурации, а запрос может быть перенаправлен в другую среду для обеспечения восстановления после сбоя второго уровня. Конечно, для этого требуется поддержка мощной распределенной системы, особенно мощного центра конфигурации (такого как Nacos), которому необходимо быстро передавать данные конфигурации правил маршрутизации в прикладные процессы всей сети.

Тест оттенков серого

Тестирование в оттенках серого — неотъемлемая часть процесса НИОКР. В традиционном процессе НИОКР тестирование и ссылки в градациях серого требуют, чтобы студенты-испытатели выполняли различные настройки, такие как привязка хостов, настройка параметров jvm, переменных среды и т. д., что довольно хлопотно. После многих лет практики внутреннее тестирование Alibaba и оттенки серого очень удобны для разработки и тестирования.Функция изоляции среды используется для обеспечения обработки запросов в выделенном машинном кластере.Для разработки и тестирования не требуется настройка, что значительно повышает эффективность исследований и разработок. . . .

Как Nacos изолирует окружающую среду

Nacos изолирован в несколько физических кластерных сред, и клиенту nacos не нужно вносить какие-либо изменения в код для реализации автоматической маршрутизации среды.

принцип

Прежде чем мы начнем, давайте сделаем некоторые ограничения:

Приложения, развернутые на одном компьютере, находятся в одной среде; В процессе приложения по умолчанию подключена только одна среда Nacos; Каким-то образом можно получить ip машины, на которой находится клиент; У пользователя есть план для сетевого сегмента машины; Вот краткое введение в основные принципы:

Мы знаем, что 32-битный ipv4 в сети можно разделить на множество сетевых сегментов, таких как 192.168.1.0/24, и, как правило, более крупные компании будут иметь планирование сетевых сегментов, а сетевые сегменты будут разделены в соответствии с определенными целями. Мы можем использовать этот принцип для изоляции среды, то есть IP-адреса разных сегментов сети принадлежат разным средам, например, 192.168.1.0/24 принадлежит среде A, 192.168.2.0/24 принадлежит среде B и т. д. Те, кто использовал Nacos, должны знать, что существует два способа инициализации экземпляра клиента Nacos: один — напрямую сообщить клиенту IP-адрес сервера nacos; другой — сообщить клиенту конечную точку, и клиент запрашивает сервер nacos. через HTTP-запрос к списку IP-адресов конечной точки. Мы используем второй метод инициализации Nacos. Расширьте функциональность конечных точек. Настройте отношение сопоставления между сегментом сети и средой на стороне конечной точки.После того как конечная точка получит запрос клиента, она вычислит среду, к которой принадлежит клиент, на основе сегмента сети, к которому принадлежит исходный IP-адрес клиента, а затем найдет список IP-адресов соответствующей среды и возвращает его клиенту. Как показано ниже

Пример сервера изоляции среды

Выше упоминались ограничения и основные принципы изоляции среды на основе IP-сегментов, так как же реализовать адресный сервер? Самый простой способ — реализовать на основе nginx, использовать геомодуль nginx для сопоставления IP-стороны и среды, а затем использовать nginx для возврата содержимого статических файлов.

  • установить нгинкс
  • Настроить геомаппинг в nginx-proxy.conf
geo $env {
  default        "";
  192.168.1.0/24 -env-a;
  192.168.2.0/24 -env-b;
}
  • Настройте корневой путь nginx и правила переадресации, здесь нужно просто вернуть содержимое статического файла;
# 在http模块中配置根路径
root                    /tmp/htdocs;
# 在server模块中配置
location / {
  rewrite ^(.*)$  /$1$env break;
}
  • Настройте файл конфигурации списка IP-адресов сервера Nacos и настройте файл, заканчивающийся именем среды, в каталоге /tmp/hotdocs/nacos.Содержимое файла — IP-адрес, по одному в строке.
$ll /tmp/hotdocs/nacos/
total 0
-rw-r--r-- 1 user1 users 0 Mar  5 08:53 serverlist
-rw-r--r-- 1 user1 users 0 Mar  5 08:53 serverlist-env-a
-rw-r--r-- 1 user1 users 0 Mar  5 08:53 serverlist-env-b

$cat /tmp/hotdocs/nacos/serverlist
192.168.1.2
192.168.1.3
  • проверять
curl 'localhost:8080/nacos/serverlist'
192.168.1.2
192.168.1.3

До сих пор может работать простой пример изоляции среды на основе сегмента IP-сети.Клиенты Nacos в разных сегментах сети будут автоматически получать разные списки IP-адресов серверов Nacos для достижения изоляции среды. Преимущество этого метода заключается в том, что пользователю не нужно настраивать какие-либо параметры, а код и конфигурация каждой среды одинаковы, но учащиеся, предоставляющие базовые услуги, должны выполнять планирование сети и соответствующую настройку.