Архитектура микрослужб в Azure Service FabricMicroservices architecture on Azure Service Fabric

В этой эталонной архитектуре показана архитектура микрослужб, развернутая в Azure Service Fabric.This reference architecture shows a microservices architecture deployed to Azure Service Fabric. В нем показана базовая конфигурация кластера, которая может быть отправной точкой для большинства развертываний.It shows a basic cluster configuration that can be the starting point for most deployments.

Логотип GitHub . Эталонная реализация этой архитектуры доступна на сайте GitHub.GitHub logo A reference implementation of this architecture is available on GitHub.

Эталонная архитектура Service Fabric

Примечание

Эта статья посвящена модели программирования Reliable Services для Service Fabric.This article focuses on the Reliable Services programming model for Service Fabric. Использование Service Fabric для развертывания контейнеров и управления ими выходит за рамки этой статьи.Using Service Fabric to deploy and manage containers is beyond the scope of this article.

ArchitectureArchitecture

Архитектура состоит из следующих компонентов:The architecture consists of the following components. Другие термины см. в разделе Service Fabric Описание терминологии.For other terms, see Service Fabric terminology overview.

Кластер Service Fabric.Service Fabric cluster. Набор виртуальных машин, подключенных к сети, в которые развертываются и управляются микрослужбы.A network-connected set of virtual machines (VMs) into which your microservices are deployed and managed.

Масштабируемые наборы виртуальных машин.Virtual machine scale sets. Масштабируемые наборы виртуальных машин позволяют создавать и администрировать группы идентичных, балансировки нагрузки и автомасштабирования виртуальных машин.Virtual machine scale sets allow you to create and manage a group of identical, load balanced, and autoscaling VMs. Он также предоставляет домены сбоя и обновления.It also provides the fault and upgrade domains.

Узлы.Nodes. Узлы — это виртуальные машины, принадлежащие кластеру Service Fabric.The nodes are the VMs that belong to the Service Fabric cluster.

Типы узлов.Node types. Тип узла представляет масштабируемый набор виртуальных машин, который развертывает коллекцию узлов.A node type represents a virtual machine scale set that deploys a collection of nodes. Кластер Service Fabric имеет по крайней мере один тип узла.A Service Fabric cluster has at least one node type. В кластере с несколькими типами узлов один должен быть объявлен как Тип первичного узла.In a cluster with multiple node types, one must be declared the Primary node type. Тип первичного узла в кластере выполняет Service Fabric системных служб.The primary node type in the cluster runs the Service Fabric system services. Эти службы предоставляют возможности платформы Service Fabric.These services provide the platform capabilities of Service Fabric. Тип первичного узла также выступает в качестве начальных узлов кластера, которые являются узлами, поддерживающими доступность базового кластера.The primary node type also acts as the seed nodes for the cluster, which are the nodes that maintain the availability of the underlying cluster. Настройте Дополнительные типы узлов для запуска служб.Configure additional node types to run your services.

Службы.Services. Служба выполняет автономную функцию, которая может запускаться и запускаться независимо от других служб.A service performs a standalone function that can start and run independently of other services. Экземпляры служб развертываются на узлах в кластере.Instances of services get deployed to nodes in the cluster. В Service Fabric есть два вида служб:There are two varieties of service in Service Fabric:

  • Служба без отслеживания состояния.Stateless service. Служба без отслеживания состояния не сохраняет состояние в службе.A stateless service does not maintain state within the service. Если требуется сохранение состояния, то состояние записывается в хранилище и извлекается из внешнего хранилища, например Azure Cosmos DB.If state persistence is required, then state is written to and retrieved from an external store, such as Azure Cosmos DB.
  • Служба с отслеживанием состояния.Stateful service. Состояние службы хранится в самой службе.The service state is kept within the service itself. Большинство служб с отслеживанием состояния реализуют это с помощью надежных коллекцийService Fabric.Most stateful services implement this through Service Fabric's Reliable Collections.

Service Fabric Explorer.Service Fabric Explorer. Service Fabric Explorer — это средство с открытым исходным кодом для проверки кластеров Service Fabric и управления ими.Service Fabric Explorer is an open-source tool for inspecting and managing Service Fabric clusters.

Azure Pipelines.Azure Pipelines. Конвейеры являются частью Azure DevOps Services и выполняет автоматические сборки, тесты и развертывания.Pipelines is part of Azure DevOps Services and runs automated builds, tests, and deployments. Вы также можете использовать сторонние решения для CI/CD, такие как Jenkins.You can also use third-party CI/CD solutions such as Jenkins.

Azure Monitor.Azure Monitor. Azure Monitor собирает и сохраняет метрики и журналы, включая метрики платформы для служб Azure в телеметрии решения и приложения.Azure Monitor collects and stores metrics and logs, including platform metrics for the Azure services in the solution and application telemetry. С помощью этих данных можно отслеживать приложения, настраивать оповещения и панели мониторинга, а также анализировать первопричины сбоев.Use this data to monitor the application, set up alerts and dashboards, and perform root cause analysis of failures. Azure Monitor интегрируется с Service Fabric для сбора метрик из контроллеров, узлов и контейнеров, а также журналов контейнеров и журналов главного узла.Azure Monitor integrates with Service Fabric to collect metrics from controllers, nodes, and containers, as well as container logs and master node logs.

Azure Key Vault.Azure Key Vault. Используйте Key Vault , чтобы хранить секреты приложений, используемые микрослужбами, например строки подключения.Use Key Vault to store any application secrets used by the microservices, such as connection strings.

Управление API Azure.Azure API Management. В этой архитектуре служба управления API выступает в качестве шлюза API, который принимает запросы от клиентов и направляет их в службы.In this architecture, API Management acts as an API gateway that accepts requests from clients and routes them to your services.

Рекомендации по проектированиюDesign considerations

Эта Эталонная архитектура ориентирована на архитектуры микрослужб.This reference architecture is focused on microservices architectures. Микрослужба — это небольшая, независимое от версии модуль кода.A microservice is a small, independently versioned unit of code. Она обнаруживается с помощью механизмов обнаружения служб и может взаимодействовать с другими службами через API-интерфейсы.It is discoverable through service discovery mechanisms and can communicate with other services over APIs. Каждая служба является самодостаточной и должна реализовывать возможности одной компании.Each service is self-contained and should implement a single business capability. Дополнительные сведения о том, как разбить домен приложения на микрослужбы, см. в разделе Использование анализа доменов для моделирования микрослужб.For more information about how to decompose your application domain into microservices, see Using domain analysis to model microservices.

Service Fabric предоставляет инфраструктуру для эффективного создания, развертывания и обновления микрослужб.Service Fabric provides an infrastructure to build, deploy, and upgrade microservices efficiently. Он также предоставляет варианты автоматического масштабирования, управления состоянием, наблюдения за работоспособностью и перезапуска служб в случае сбоя.It also provides options for auto scaling, managing state, monitoring health, and restarting services in case of failure.

Service Fabric соответствует модели приложения, в которой приложение является коллекцией микрослужб.Service Fabric follows an application model where an application is a collection of microservices. Приложение описывается в файле манифеста приложения , который определяет различные типы служб, содержащихся в этом приложении, и указатели на независимые пакеты служб.The application is described in an application manifest file that defines the different types of service contained in that application, and pointers to the independent service packages. Пакет приложения также обычно содержит параметры, которые служат переопределениями для определенных параметров, используемых службами.The application package also usually contains parameters that serve as overrides for certain settings used by the services. У каждого пакета службы есть файл манифеста, описывающий физические файлы и папки, необходимые для запуска этой службы, включая двоичные файлы, файл конфигурации и данные только для чтения для этой службы.Each service package has a manifest file that describes the physical files and folders that are necessary to run that service, including binaries, configuration files, and read-only data for that service. Службы и приложения имеют независимое управление версиями и обновляемые.Services and applications are independently versioned and upgradable.

При необходимости манифест приложения может описывать службы, автоматически подготовленные при создании экземпляра приложения.Optionally, the application manifest can describe services that are automatically provisioned when an instance of the application is created. Они называются службами по умолчанию.These are called default services. В этом случае манифест приложения также описывает, как следует создавать эти службы, включая имя службы, число экземпляров, политику безопасности/изоляции и ограничения на размещение.In this case, the application manifest also describes how these services should be created, including the service's name, instance count, security/isolation policy, and placement constraints.

Примечание

Избегайте использования служб по умолчанию, если требуется управлять временем жизни служб.Avoid using default services if you want to control the life time of your services. Службы по умолчанию создаются при создании приложения и выполняются при условии, что приложение выполняется.Default services are created when the application is created, and run as long as the application is running.

Дополнительные сведения о Service Fabric см . в разделе что нужно узнать о Service Fabric?For more information about understanding Service Fabric, see So you want to learn about Service Fabric?

Выбор модели упаковки приложения в службуChoose an application-to-service packaging model

Принцип микрослужб заключается в том, что каждая служба может быть развернута независимо.A tenet of microservices is that each service can be independently deployed. В Service Fabric, если все службы группируются в один пакет приложения и одна служба не может обновиться, выполняется откат всего обновления приложения, что предотвращает обновление другой службы.In Service Fabric, if you group all of your services into a single application package, and one service fails to upgrade, the entire application upgrade gets rolled back, which prevents other service from being upgraded.

По этой причине в архитектуре микрослужб рекомендуется использовать несколько пакетов приложений.For that reason, in a microservices architecture, we recommend using multiple application packages. Помещайте один или несколько тесно связанных типов служб в один тип приложения.Put one or more closely related service types into a single application type. Если ваша команда отвечает за набор служб, выполняющихся в течение одной и той же длительности и требующих одновременного обновления, имеющих одинаковый жизненный цикл или общий доступ к ресурсам, таким как зависимости или конфигурация, поместите эти типы служб в один и тот же тип приложения.If your team is responsible for a set of services that run for the same duration and need to be updated at the same time, have the same lifecycle, or share resources such as dependencies or configuration, then place those services types in the same application type.

Модели программирования Service FabricService Fabric programming models

При добавлении микрослужбы в Service Fabricное приложение решите, имеет ли оно состояние или данные, которые необходимо сделать высокодоступными и надежными.When you add a microservice to a Service Fabric application, decide whether it has state or data that needs to be made highly available and reliable. Если да, может ли он хранить данные извне или данные, содержащиеся в составе службы?If so, can it store data externally or is the data contained as part of the service? Выберите службу без отслеживания состояния, если не требуется хранить данные или хранить данные во внешнем хранилище.Choose a stateless service if you don't need to store data or want to store data in external storage. Если вы хотите сохранить состояние или данные как часть службы (например, требуется, чтобы данные находились в памяти, близком к коду) или не допускают зависимость от внешнего хранилища, рассмотрите возможность выбора службы с отслеживанием состояния.If you want to maintain state or data as part of the service (for example, you need that data to reside in memory close to the code), or cannot tolerate a dependency on an external store, consider choosing a stateful service.

Если у вас есть код, который необходимо запустить на Service Fabric, можно запустить его в качестве гостевого исполняемого файла, который является произвольным исполняемым файлом, который выполняется как служба.If you have existing code that you want to run on Service Fabric, you can run it as a guest executable, which is an arbitrary executable that runs as a service. Кроме того, можно упаковать исполняемый файл в контейнер со всеми зависимостями, необходимыми для развертывания.Alternatively, you can package the executable in a container that has all the dependencies needed for deployment. Service Fabric моделирует как контейнеры, так и гостевые исполняемые файлы как службы без отслеживания состояния.Service Fabric models both containers and guest executables as stateless services. Рекомендации по выбору модели см. в разделе Общие сведения о модели программирования Service Fabric.For guidance about choosing a model, see Service Fabric programming model overview.

С помощью гостевых исполняемых файлов вы несете ответственность за поддержание среды, в которой он выполняется.With guest executables, you are responsible of maintaining the environment in which it runs. Например, предположим, что для гостевого исполняемого файла требуется Python.For example, suppose that a guest executable requires Python. Если исполняемый объект не является автономным, необходимо убедиться, что требуемая версия Python предварительно установлена в среде.If the executable is not self-contained, you need to make sure that the required version of Python is pre-installed in the environment. Service Fabric не управляет средой.Service Fabric does not manage the environment. Azure предлагает несколько механизмов настройки среды, включая пользовательские образы виртуальных машин и расширения.Azure offers multiple mechanisms to set up the environment, including custom virtual machine images and extensions.

Чтобы получить доступ к гостевому исполняемому файлу через обратный прокси-сервер, убедитесь, что вы добавили атрибут урисчеме в элемент Endpoint в манифесте службы гостевого исполняемого файла.To access a guest executable through a reverse proxy, make sure you have added the UriScheme attribute to the Endpoint element in the guest executable's service manifest.

    <Endpoints>
      <Endpoint Name="MyGuestExeTypeEndpoint" Port="8090" Protocol="http" UriScheme="http" PathSuffix="api" Type="Input"/>
    </Endpoints>

Если служба имеет дополнительные маршруты, укажите маршруты в значении пассуффикс .If the service has additional routes, specify the routes in the PathSuffix value. Значение не должно быть префиксом или суффиксом "/".The value should not be prefixed or suffixed with '/'. Другой способ — добавить маршрут в имя службы.Another way is to add the route in the service name.

    <Endpoints>
      <Endpoint Name="MyGuestExeTypeEndpoint" Port="8090" Protocol="http" PathSuffix="api" Type="Input"/>
    </Endpoints>

Дополнительные сведения см. в разделе:For more information, see:

Шлюз APIAPI gateway

Шлюз API (входящий) располагается между внешними клиентами и микрослужбами.An API gateway (ingress) sits between external clients and the microservices. Он выполняет роль обратного прокси-сервера, который перенаправляет запросы от клиентов к микрослужбам.It acts as a reverse proxy, routing requests from clients to microservices. Он также может выполнять такие специализированные задачи, как аутентификация, завершение SSL-запросов и ограничение частоты.It may also perform various cross-cutting tasks such as authentication, SSL termination, and rate limiting.

Для большинства сценариев рекомендуется использовать службу управления API Azure, но траефик — это популярная альтернатива с открытым исходным кодом.Azure API Management is recommended for most scenarios, but Traefik is a popular open-source alternative. Оба варианта технологий интегрируются с Service Fabric.Both technology options are integrated with Service Fabric.

  • Служба управления API предоставляет общедоступный IP-адрес и направляет трафик в службы.API Management exposes a public IP address and routes traffic to your services. Он выполняется в выделенной подсети в той же виртуальной сети, что и кластер Service Fabric.It runs in a dedicated subnet in the same virtual network as the Service Fabric cluster. Он может получить доступ к службам в типе узла, который предоставляется через подсистему балансировки нагрузки с частным IP-адресом.It can access services in a node type that is exposed through a load balancer with a private IP address. Этот параметр доступен только на уровнях "Премиум" и "Разработчик" для управления API.This option is only available in the Premium and Developer tiers of API Management. Для рабочих нагрузок в рабочей среде используйте уровень Premium.For production workloads, use the Premium tier. Сведения о ценах описаны в разделе цены на управление API.Pricing information is described in API Management pricing. Дополнительные сведения см. в статье Service Fabric со службой управления API Azure.For more information, see Service Fabric with Azure API Management overview.
  • Траефик поддерживает такие функции, как маршрутизация, трассировка, журналы и метрики.Traefik supports features such as routing, tracing, logs, and metrics. Траефик работает как служба без отслеживания состояния в кластере Service Fabric.Traefik runs as a stateless service in the Service Fabric cluster. Управление версиями службы поддерживается посредством маршрутизации.Service versioning can be supported through routing. Сведения о настройке Траефик для входных данных службы и в качестве обратных прокси-серверов в кластере см. в статье поставщик Service Fabric Azure.For information on how to set up Traefik for service ingress and as the reverse proxy within the cluster, see Azure Service Fabric Provider. Дополнительные сведения об использовании Траефик с Service Fabric см. в статье интеллектуальная маршрутизация в Service Fabric с помощью траефик (запись блога).For more information about using Traefik with Service Fabric, see Intelligent routing on Service Fabric with Traefik (blog post).

Траефик, в отличие от управления API Azure, не имеет функций для разрешения секции службы с отслеживанием состояния (с более чем одной секцией), к которой перенаправляется запрос.Traefik, unlike Azure API Management, does not have functionality to resolve the partition of a stateful service (with more than one partition) to which a request is routed. Дополнительные сведения см. в разделе Добавление сопоставления для служб секционирования.For more information, see Add a matcher for partitioning services.

Другие варианты управления API включают шлюз приложений Azure и переднюю дверцу Azure.Other API management options include Azure Application Gateway and Azure Front Door. Эти службы можно использовать совместно с управлением API для выполнения таких задач, как маршрутизация, завершение SSL и брандмауэр.These services can be used in conjunction with API Management to perform tasks such as routing, SSL termination, and firewall.

Обмен данными между службамиInterservice communication

Для облегчения взаимодействия между службами рекомендуется использовать протокол HTTP в качестве протокола связи.To facilitate service-to-service communication, consider using HTTP as the communication protocol. В качестве базовых показателей для большинства сценариев рекомендуется использовать службу обратных прокси-серверов для обнаружения служб.As a baseline for most scenarios, we recommend using the reverse proxy service for service discovery.

  • Протокол связи.Communication protocol. В архитектуре микрослужб службы должны взаимодействовать друг с другом с минимальной взаимозависимостью во время выполнения.In a microservices architecture, services need to communicate with each other with minimum coupling at runtime. Чтобы обеспечить независимый от языка обмен данными, HTTP — это промышленный стандарт с широким набором средств и серверов HTTP, доступных на разных языках, которые поддерживаются Service Fabric.To enable language-agnostic communication, HTTP is an industry-standard with a wide range of tools and HTTP servers that are available in different languages, all supported by Service Fabric. Поэтому для большинства рабочих нагрузок рекомендуется использовать HTTP вместо встроенной службы удаленного взаимодействия служб Service Fabric.Therefore, using HTTP instead of Service Fabric's built-in service remoting is recommended for most workloads.
  • Обнаружение служб.Service discovery. Для взаимодействия с другими службами в кластере клиентская служба должна разрешить текущее расположение целевой службы.To communicate with other services within a cluster, a client service needs to resolve the target service's current location. В Service Fabric службы могут перемещаться между узлами, что приводит к динамическому изменению конечных точек службы.In Service Fabric, services can move between nodes, causing the service endpoints to change dynamically. Чтобы избежать подключения к устаревшим конечным точкам, Service Fabric Служба именования можно использовать для получения обновленных сведений о конечной точке.To avoid connections to stale endpoints, Service Fabric's Naming Service can be used to retrieve updated endpoint information. Однако Service Fabric также предоставляет встроенную службу обратных прокси-серверов , которая абстрагирует службу именования.However, Service Fabric also provides a built-in reverse proxy service that abstracts the naming service. Этот вариант проще в использовании и приводит к упрощению кода.This option is easier to use and results in simpler code.

Другие варианты взаимодействия между службами:Other options for interservice communication include,

  • Траефик для расширенной маршрутизации.Traefik for advanced routing.
  • DNS для сценариев совместимости, когда служба ОЖИДАЕТ использования DNS.DNS for compatibility scenarios where a service expects to use DNS.
  • Сервицепартитионклиент < Класс > ткоммуникатионклиент .ServicePartitionClient<TCommunicationClient> class. Класс кэширует конечные точки службы и может обеспечить лучшую производительность, так как вызовы переходят между службами без промежуточных или пользовательских протоколов.The class caches service endpoints and can enable better performance, as calls go directly between services without intermediaries or custom protocols.

Вопросы масштабируемостиScalability considerations

Service Fabric поддерживает масштабирование этих сущностей кластера:Service Fabric supports scaling these cluster entities:

  • Масштабирование количества узлов для каждого типа узла.Scaling the number of nodes for each node type.
  • Масштабирование служб.Scaling services.

В этом разделе описывается Автомасштабирование.This section is focused on autoscaling. Можно выбрать масштаб вручную в ситуациях, когда это необходимо.You can choose to manually scale in situations where appropriate. Например, ситуация, когда требуется вмешательство вручную для задания количества экземпляров.For example, a situation where manual intervention is required to set the number of instances.

Первоначальная конфигурация кластера для масштабируемостиInitial cluster configuration for scalability

При создании кластера Service Fabric подготавливает типы узлов в соответствии с требованиями к безопасности и масштабируемости.When you create a Service Fabric cluster, provision the node types based on your security and scalability needs. Каждый тип узла сопоставляется с масштабируемым набором виртуальных машин и может масштабироваться независимо.Each node type is mapped to a virtual machine scale set and can be scaled independently.

  • Создайте тип узла для каждой группы служб с разными требованиями к масштабируемости или ресурсам.Create a node type for each group of services that have different scalability or resource requirements. Начните с подготовки типа узла (который станет основным типом узла) для системных служб Service Fabric.Start by provisioning a node type (which becomes the primary node type) for the Service Fabric system services. Затем создайте отдельные типы узлов для запуска общедоступных или интерфейсных служб, а также другие типы узлов, необходимые для серверной и частной или изолированной служб.Then create separate node types to run your public or front-end services, and other node types as necessary for your backend and private or isolated services. Укажите ограничения на размещение , чтобы службы развертывались только на предполагаемых типах узлов.Specify placement constraints so that the services are only deployed to the intended node types.
  • Укажите уровень устойчивости для каждого типа узла.Specify the durability tier for each node type. Уровень устойчивости представляет возможность Service Fabric влияния на обновления масштабируемого набора виртуальных машин и на операции обслуживания.The durability tier represents the ability for Service Fabric to influence virtual machine scale set updates and maintenance operations. Для рабочих нагрузок выберите уровень устойчивости "серебро" или "выше".For production workloads, choose the Silver or higher durability tier. Сведения о каждом уровне см. в разделе характеристики устойчивости кластера.For information about each tier, see The durability characteristics of the cluster.
  • При использовании уровня устойчивости бронзовой для некоторых операций требуются ручные действия.If using the Bronze durability tier, certain operations require manual steps. Для типов узлов с уровнем устойчивости для бронзовых требуются дополнительные шаги во время масштабирования в.For node types with Bronze durability tier additional steps are required during scale in. Дополнительные сведения об операциях масштабирования см. в этом руководстве.For more information on scaling operations, see this guide.

Масштабирование узловScaling nodes

Service Fabric поддерживает Автомасштабирование для масштабирования и масштабирования. Для каждого типа узла можно настроить автоматическое масштабирование независимо друг от друга.Service Fabric supports autoscaling for scale-in and scale-out. Each node type can be configured for autoscaling independently.

Каждый тип узла может иметь не более 100 узлов.Each node type can have a maximum of 100 nodes. Начните с меньшего набора узлов и добавьте дополнительные узлы в зависимости от нагрузки.Start with a smaller set of nodes and add more nodes depending on your load. Если требуется более 100 узлов в типе узла, необходимо добавить дополнительные типы узлов.If you require more than 100 nodes in a node type, you will need to add more node types. Дополнительные сведения см. в статье Service Fabric планировании емкости кластера.For details, see Service Fabric cluster capacity planning considerations. Масштабируемый набор виртуальных машин не масштабируется мгновенно, поэтому учитывайте этот фактор при настройке правил автомасштабирования.A virtual machine scale set does not scale instantaneously, so consider that factor when you set up autoscale rules.

Для поддержки автоматического масштабирования настройте тип узла на уровень устойчивости "серебро" или "Gold".To support automatic scale-in, configure the node type to have the Silver or Gold durability tier. Это гарантирует, что масштабирование откладывается до тех пор, пока Service Fabric не завершит перемещение служб и что масштабируемые наборы виртуальных машин сообщают Service Fabric о том, что виртуальные машины удалены, а не просто временно.This makes sure that scaling in is delayed until Service Fabric is finished relocating services and that the virtual machine scale sets inform Service Fabric that the VMs are removed, not just down temporarily.

Дополнительные сведения о масштабировании на уровне узла или кластера см. в разделе масштабирование кластеров Azure Service Fabric.For more information about scaling at the node/cluster level, see Scaling Azure Service Fabric clusters.

Масштабирование службScaling services

Службы без отслеживания состояния и с отслеживанием состояния применяют различные подходы к масштабированию.Stateless and stateful services apply different approaches to scaling.

Автомасштабирование для служб без отслеживания состоянияAutoscaling for stateless services

  • Используйте триггер среднего показателя загрузки секции.Use the average partition load trigger. Этот триггер определяет, когда служба масштабируется, в зависимости от порогового значения нагрузки, указанного в политике масштабирования.This trigger determines when the service is scaled in or out, based on a load threshold value specified in the scaling policy. Можно также задать частоту проверки триггера.You can also set how often the trigger is checked. См. раздел среднее значение триггера загрузки секций с масштабированием на основе экземпляра.See Average partition load trigger with instance-based scaling. Это позволяет масштабировать масштаб до количества доступных узлов.This allows you to scale up to the number of available nodes.
  • Задайте для InstanceCount значение-1 в манифесте службы, что указывает Service Fabric запускать экземпляр службы на каждом узле.Set InstanceCount to -1 in the service manifest, which tells Service Fabric to run an instance of the service on every node. Такой подход позволяет службе динамически масштабироваться по мере масштабирования кластера.This approach enables the service to scale dynamically as the cluster scales. По мере изменения числа узлов в кластере Service Fabric автоматически создает и удаляет экземпляры службы для сопоставления.As the number of nodes in the cluster changes, Service Fabric automatically creates and deletes service instances to match.

Примечание

В некоторых случаях может потребоваться ручное масштабирование службы.In some cases, you might want to manually scale your service. Например, при наличии службы, считывающей данные из концентраторов событий, может потребоваться, чтобы выделенный экземпляр мог считывать данные из каждой секции концентратора событий, чтобы избежать параллельного доступа к секции.For example, if you have a service that reads from Event Hubs, you might want a dedicated instance to read from each event hub partition, to avoid concurrent access to the partition.

Масштабирование для служб с отслеживанием состоянияScaling for stateful services

Для службы с отслеживанием состояния масштабирование регулируется числом секций, размером каждой секции и количеством разделов или реплик, выполняющихся на данном компьютере.For a stateful service, scaling is controlled by the number of partitions, the size of each partition, and the number of partitions/replicas running on a given machine.

  • При создании секционированных служб убедитесь, что каждый узел получает соответствующие реплики для равномерного распределения рабочей нагрузки, не вызывая конфликтов ресурсов.If you are creating partitioned services, make sure each node gets adequate replicas for even distribution of the workload without causing resource contentions. Если добавляются дополнительные узлы, по умолчанию Service Fabric распределяет рабочие нагрузки на новые компьютеры.If more nodes are added, Service Fabric distributes the workloads onto the new machines by default. Например, если имеется 5 узлов и 10 секций, по умолчанию Service Fabric будет размещать две первичные реплики на каждом узле.For example, if there are 5 nodes and 10 partitions, by default Service Fabric will place two primary replicas on each node. При масштабировании узлов можно добиться большей производительности, так как работа равномерно распределяется по большему объему ресурсов.If you scale out the nodes, you can achieve greater performance, because the work is evenly distributed across more resources. Сведения о сценариях, использующих эту стратегию, см. в разделе масштабирование в Service Fabric.For information about scenarios that take advantage of this strategy, see Scaling in Service Fabric.
  • Добавление или удаление секций плохо поддерживается.Adding or removing partitions is not well supported. Другим вариантом, который обычно используется для масштабирования, является динамическое создание или удаление служб или всего экземпляра приложения.Another option commonly used to scale is to dynamically create or delete services or whole application instances. Пример этого шаблона описан в разделе масштабирование путем создания или удаления новых именованных служб.An example of that pattern is described in Scaling by creating or removing new named services.

Дополнительные сведения см. в разделе:For more information, see:

Использование метрик для балансировки нагрузкиUsing metrics to balance load

В зависимости от того, как вы разрабатываете секцию, у вас могут быть узлы с репликами, которые получают больше трафика, чем другие.Depending on how you design the partition, you might have nodes with replicas that get more traffic than others. Чтобы избежать такой ситуации, разбейте состояние службы так, чтобы она была распределена по всем секциям.To avoid this situation, partition the service state so that it is distributed across all partitions. Используйте схему секционирования по диапазону с хорошим алгоритмом хэширования.Use the range partitioning scheme with a good hash algorithm. См. раздел Начало работы с секционированием.See Get started with partitioning.

Service Fabric использует метрики, чтобы понять, как разместить и сбалансировать службы в кластере.Service Fabric uses metrics to know how to place and balance services within a cluster. При создании этой службы можно указать загрузку по умолчанию для каждой метрики, связанной со службой.You can specify a default load for each metric associated with a service when that service is created. Затем Service Fabric выполняет эту загрузку в учетную запись при размещении службы или при необходимости перемещения службы (например, во время обновления), чтобы попытаться сбалансировать узлы в кластере.Service Fabric then takes that load into account when placing the service, or whenever the service needs to move (for example, during upgrades) to try to balance the nodes in the cluster.

Изначально заданная загрузка по умолчанию для службы не будет изменена в течение времени существования службы.The initially specified default load for a service will not change over the lifetime of the service. Чтобы записать изменяющиеся метрики для данной службы, рекомендуется отслеживать службу, а затем динамически отправлять отчет о нагрузке.To capture changing metrics for a given service, we recommend that you monitor your service and then report the load dynamically. Это позволяет Service Fabric настраивать распределение на основе указанной нагрузки в заданный момент времени.This allows Service Fabric to adjust the allocation based on the reported load at a given time. Используйте метод исервицепартитион. ReportLoad , чтобы сообщить о пользовательских метриках.Use the IServicePartition.ReportLoad method to report custom metrics. Дополнительные сведения см. в разделе Динамическая загрузка.For more information, see Dynamic load.

Вопросы доступностиAvailability considerations

Разместите службы в типе узла, отличном от типа первичного узла.Place your services in a node type other than the primary node type. Service Fabric системные службы всегда развертываются в типе первичного узла.The Service Fabric system services are always deployed to the primary node type. Если службы развернуты в типе первичного узла, они могут конкурировать с системными службами для ресурсов и влиять на системные службы.If your services are deployed to the primary node type, they might compete with system services for resources and interfere with the system services. Если тип узла должен размещать службы с отслеживанием состояния, убедитесь, что имеется по крайней мере пять экземпляров узлов и выбран уровень устойчивости "серебро" или "Gold".If a node type is expected to host stateful services, make sure there are at least five node instances and you select the Silver or Gold Durability tier.

Попробуйте ограничить ресурсы служб.Consider constraining the resources of your services. См. раздел механизм управления ресурсами.See Resource governance mechanism.

  • Не смешивать ресурсы, управляемые ресурсами и неуправляемых ресурсами, в одном типе узла.Do not mix resource governed and resource non-governed services on the same node type. Неуправляемые службы могут потреблять слишком много ресурсов, влияя на службы, управляемые ресурсами.The non-governed services might consume too many resources, affecting the resource governed services. Укажите ограничения на размещение , чтобы убедиться, что эти типы служб не работают на одном и том же множестве узлов.Specify placement constraints to make sure that those types of services do not run on the same set of nodes. См. раздел Указание управления ресурсами.See Specify resource governance. (Это пример шаблона отсеков.)(This is an example of the Bulkhead pattern.)
  • Укажите ядра ЦП и объем памяти, резервируемый для экземпляра службы.Specify the CPU cores and memory to reserve for a service instance. Сведения об использовании и ограничениях политик управления ресурсами см. в разделе Управление ресурсами.For information about usage and limitations of resource governance policies, see Resource governance.

Убедитесь, что каждый целевой экземпляр службы или число реплик больше 1, чтобы избежать единой точки отказа (SPOF).Make sure every service's target instance or replica count is greater than 1 to avoid a single point of failure (SPOF). Максимальное число, которое можно использовать в качестве числа экземпляров службы или реплик, равно числу узлов, на которые ограничена служба.The largest number that you can use as service instance or replica count equals the number nodes that to which the service is constrained.

Убедитесь, что у каждой службы с отслеживанием состояния есть по крайней мере две активные вторичные реплики.Make sure every stateful service has at least two active secondary replicas. Для рабочих нагрузок рекомендуется использовать пять реплик.Five replicas are recommended for production workloads.

Дополнительные сведения см. в разделе доступность служб Service Fabric Services.For more information, see Availability of Service Fabric services.

Замечания по безопасностиSecurity considerations

Ниже приведены некоторые ключевые моменты для защиты приложения на Service Fabric.Here are some key points for securing your application on Service Fabric:

Виртуальная сетьVirtual network

Рассмотрите возможность определения границ подсети для каждого масштабируемого набора виртуальных машин, чтобы управлять потоком обмена данными.Consider defining subnet boundaries for each virtual machine scale set to control the flow of communication. Каждый тип узла имеет свой собственный масштабируемый набор виртуальных машин в подсети в виртуальной сети кластера Service Fabric.Each node type has its own virtual machine scale set in a subnet within the Service Fabric cluster's virtual network. Группы безопасности сети (группы безопасности сети) можно добавить в подсети, чтобы разрешить или отклонить сетевой трафик.Network Security Groups (NSGs) can be added to the subnets to allow or reject network traffic. Например, с внешними и внутренними типами узлов можно добавить NSG в подсеть серверной части, чтобы принимать входящий трафик только из интерфейсной подсети.For example, with front-end and back-end node types, you can add an NSG to the backend subnet to accept inbound traffic only the front-end subnet.

При вызове внешних служб Azure из кластера используйте конечные точки службы виртуальной сети , если служба Azure поддерживает ее.When calling external Azure Services from the cluster, use Virtual Network service endpoints if the Azure service supports it. Использование конечной точки службы обеспечивает безопасность службы только для виртуальной сети кластера.Using a service endpoint secures the service to only the cluster's Virtual Network. Например, если вы используете Cosmos DB для хранения данных, настройте учетную запись Cosmos DB с конечной точкой службы, чтобы разрешить доступ только из определенной подсети.For example, if you are using Cosmos DB to store data, configure the Cosmos DB account with a service endpoint to allow access only from a specific subnet. См. статью доступ к ресурсам Azure Cosmos DB из виртуальных сетей.See Access Azure Cosmos DB resources from virtual networks.

Конечные точки и взаимодействие между службамиEndpoints and interservice communication

Не создавайте незащищенный кластер Service Fabric.Do not create an unsecured Service Fabric cluster. Если кластер предоставляет конечные точки управления для общедоступного Интернета, анонимные пользователи могут подключаться к нему.If the cluster exposes management endpoints to the public internet, anonymous users can connect to it. Незащищенные кластеры нельзя использовать для выполнения производственных задач.Unsecured clusters are not supported for production workloads. См. раздел сценарии безопасности кластера Service Fabric.See: Service Fabric cluster security scenarios.

Чтобы защитить взаимодействие между службами:To secure your interservice communications:

  • Рассмотрите возможность включения конечных точек HTTPS в ASP.NET Core или веб-службах Java.Consider enabling HTTPS endpoints in your ASP.NET Core or Java web services.
  • Установите безопасное подключение между обратным прокси-сервером и службами.Establish a secure connection between the reverse proxy and services. Дополнительные сведения см. в разделе Подключение к защищенной службе.For details, see Connect to a secure service.

При использовании шлюза APIможно выполнить разгрузку проверки подлинности на шлюз.If you are using an API gateway, you can offload authentication to the gateway. Убедитесь, что отдельные службы не могут быть доступны напрямую (без шлюза API), если не требуется дополнительная защита для проверки подлинности сообщений независимо от того, приходят ли они от шлюза.Make sure that the individual services cannot be reached directly (without the API gateway) unless additional security is in place to authenticate messages whether they come from the gateway.

Не предоставляйте Service Fabric обратный прокси-сервер в открытом виде.Do not expose the Service Fabric reverse proxy publicly. Это приводит к тому, что все службы, которые предоставляют конечные точки HTTP, будут доступны из-за пределов кластера, что повлечет за собой уязвимости и потенциально предоставлять дополнительные сведения вне кластера.Doing so causes all services that expose HTTP endpoints to be addressable from outside the cluster, introducing security vulnerabilities and potentially exposing additional information outside the cluster unnecessarily. Если вы хотите использовать службу в общедоступном виде, используйте шлюз API.If you want to access a service publicly, use an API gateway. Некоторые параметры приведены в разделе шлюз API .Some options are mentioned in the API gateway section.

Удаленный рабочий стол полезен для диагностики и устранения неполадок, но не оставляет его открытым, в противном случае это вызывает брешь в системе безопасности.Remote desktop is useful for diagnostic and troubleshooting, but make sure not to leave it open otherwise it causes a security hole.

Сертификаты и секретыSecrets and certificates

Храните секреты, такие как строки подключения, в хранилищах данных в Azure Key Vault.Store secrets such as connection strings to data stores in Azure Key Vault. Key Vault должен находиться в том же регионе, что и масштабируемый набор виртуальных машин.The Key Vault must be in the same region as the virtual machine scale set. Вам потребуется:You will need to:

  • Проверка подлинности доступа службы к Key Vault.Authenticate the service's access to the Key Vault.

    Включите управляемое удостоверение в масштабируемом наборе виртуальных машин, на котором размещена служба.Enable managed identity on the virtual machine scale set that hosts the service.

  • Храните секреты в Key Vault.Store your secrets in the Key Vault.

    Добавьте секреты в формате, который можно преобразовать в пару "ключ-значение".Add secrets in a format that can be translated to a key-value pair. Например, CosmosDB--AuthKey.For example, CosmosDB--AuthKey. При сборке конфигурации "--" преобразуется в ":".When the configuration is built, "--" is converted into ":".

  • Доступ к этим секретам в службе.Access those secrets in your service.

    Добавьте Key Vault URI в appSettings.js.Add the Key Vault URI in your appSettings.json. В службе добавьте поставщик конфигурации, который считывает данные из Key Vault, создает конфигурацию и обращается к секрету из созданной конфигурации.In your service, add the configuration provider that reads from the Key Vault, builds the configuration, and accesses the secret from the built configuration.

Ниже приведен пример, в котором служба рабочего процесса хранит секрет в Key Vault в формате "CosmosDB--Database".Here's an example where the Workflow service stores a secret in the Key Vault in the format "CosmosDB--Database".

namespace Fabrikam.Workflow.Service
{
    public class ServiceStartup
    {
        public static void ConfigureServices(StatelessServiceContext context, IServiceCollection services)
        {
            var preConfig = new ConfigurationBuilder()
                …
                .AddJsonFile(context, "appsettings.json");

            var config = preConfig.Build();

            if (config["AzureKeyVault:KeyVaultUri"] is var keyVaultUri && !string.IsNullOrWhiteSpace(keyVaultUri))
            {
                preConfig.AddAzureKeyVault(keyVaultUri);
                config = preConfig.Build();
            }
    }
}

Чтобы получить доступ к секрету, укажите имя секрета в созданной конфигурации.To access the secret, specify the secret name in the built config.

       if(builtConfig["CosmosDB:Database"] is var database && !string.IsNullOrEmpty(database))
       {
            // Use the secret.
       }

Не используйте сертификаты клиента для доступа к Service Fabric Explorer.Do not use client certificates to access Service Fabric Explorer. Вместо этого используйте Azure Active Directory (Azure AD).Instead, use Azure Active Directory (Azure AD). См. также службы Azure, поддерживающие аутентификацию Azure AD.Also see, Azure services that support Azure AD authentication.

Не используйте самозаверяющие сертификаты для рабочей среды.Do not use self-signed certificates for production.

Защита неактивных данныхData at rest protection

Если диски данных подключены к масштабируемым наборам виртуальных машин кластера Service Fabric и службы сохраняют данные на этих дисках, необходимо зашифровать диски.If you have attached data disks to the virtual machine scale sets of the Service Fabric cluster and your services save data on those disks, you must encrypt the disks. Дополнительные сведения см. в разделе Шифрование дисков операционной системы и подключенных к данным дисках данных в масштабируемом наборе виртуальных машин с помощью Azure PowerShell (Предварительная версия).For more information, see Encrypt OS and attached data disks in a virtual machine scale set with Azure PowerShell (Preview).

Дополнительные сведения о защите Service Fabric см. в следующих статьях:For more information about securing Service Fabric, see:

Рекомендации по обеспечению устойчивостиResiliency considerations

Для восстановления после сбоев и поддержания полностью работоспособного состояния приложение должно реализовать определенные шаблоны устойчивости.To recover from failures and maintain a fully functioning state, the application must implement certain resiliency patterns. Ниже приведены некоторые распространенные шаблоны.Here are some common patterns:

  • Шаблон повторных попыток: чтобы обрабатывать ошибки, которые должны быть временными, например временно недоступные ресурсы.Retry pattern: To handle errors that are expected to be transient, such as resources being temporarily unavailable.
  • Автоматическое выключение : дляустранения ошибок, для которых может потребоваться больше времени для исправления.Circuit breaker: To address faults that might need longer to fix.
  • Шаблон отсеков: изоляция ресурсов для каждой службы.Bulkhead pattern: To isolate resources per service.

Эта эталонная реализация использует Polly— параметр с открытым исходным кодом для реализации всех этих шаблонов.This reference implementation uses Polly, an open-source option, to implement all of those patterns.

Рекомендации по мониторингуMonitoring considerations

Перед изучением параметров мониторинга рекомендуется ознакомиться с этой статьей, посвященной диагностике распространенных сценариев с Service Fabric.Before you explore the monitoring options, we recommend you read this article about diagnosing common scenarios with Service Fabric. Данные мониторинга можно рассматривать в следующих наборах:You can think of monitoring data in these sets:

Ниже приведены два основных варианта анализа этих данных.These are the two main options for analyzing that data:

  • Application InsightsApplication Insights
  • Log AnalyticsLog Analytics

Azure Monitor можно использовать для настройки панелей мониторинга для мониторинга и отправки предупреждений операторам.You can use Azure Monitor to set up dashboards for monitoring and to send alerts to operators. Существуют также некоторые средства мониторинга сторонних производителей, интегрированные с Service Fabric, например dynaTrace.There are also some third-party monitoring tools that are integrated with Service Fabric, such as Dynatrace. Дополнительные сведения см. в статье партнеры по мониторингу Service Fabric Azure.For details, see Azure Service Fabric Monitoring Partners.

Метрики и журналы приложенияApplication metrics and logs

Данные телеметрии приложений предоставляют сведения о службе, которые могут помочь в мониторинге работоспособности службы и выявление проблем.Application telemetry provides data about your service that can help you monitor the health of your service and identify issues. Чтобы добавить в службу трассировки и события, выполните следующие действия.To add traces and events in your service:

Application Insights предоставляет множество встроенных данных телеметрии: запросы, трассировки, события, исключения, метрики, зависимости.Application Insights provides a lot of built-in telemetry: requests, traces, events, exceptions, metrics, dependencies. Если служба предоставляет конечные точки HTTP, включите Application Insights, вызвав метод расширения UseApplicationInsights для Microsoft. AspNetCore. Hosting. ивебхостбуилдер.If your service exposes HTTP endpoints, enable Application Insights by calling the UseApplicationInsights extension method for Microsoft.AspNetCore.Hosting.IWebHostBuilder. Сведения о инструментировании службы для Application Insights см. в следующих статьях:For information about instrumenting your service for Application Insights, see these articles:

Чтобы просмотреть трассировки и журналы событий, используйте Application Insights в качестве одного из приемников для структурированного ведения журнала.To view the traces and event logs, use Application Insights as one of sinks for structured logging. Настройте Application Insights с помощью ключа инструментирования, вызвав метод расширения аддаппликатионинсигхтс .Configure Application Insights with your instrumentation key by calling the AddApplicationInsights extension method. В этом примере ключ инструментирования хранится в виде секрета в Key Vault.In this example, the instrumentation key is stored as a secret in the Key Vault.

    .ConfigureLogging((hostingContext, logging) =>
        {
            logging.AddApplicationInsights(hostingContext.Configuration ["ApplicationInsights:InstrumentationKey"]);
        })

Если служба не предоставляет конечные точки HTTP, необходимо написать пользовательское расширение, которое отправляет трассировки в Application Insights.If your service does not expose HTTP endpoints, you need to write a custom extension that sends traces to Application Insights. Пример см. в описании службы рабочего процесса в эталонной реализации.For an example, see the Workflow service in the reference implementation.

ASP.NET Core Services используют интерфейс ILogger для ведения журнала приложений.ASP.NET Core services use the ILogger interface for application logging. Чтобы сделать эти журналы приложений доступными в Azure Monitor, отправьте ILogger события в Application Insights.To make these application logs available in Azure Monitor, send the ILogger events to Application Insights. Дополнительные сведения см. в разделе ILogger в приложении ASP.NET Core.For more information, see ILogger in an ASP.NET Core application. Application Insights может добавлять свойства корреляции в события ILogger, что полезно для визуализации распределенной трассировки.Application Insights can add correlation properties to ILogger events, useful for visualizing distributed tracing.

Дополнительные сведения см. в разделе:For more information, see:

Service Fabric данных о работоспособности и событияхService Fabric health and event data

Service Fabric телеметрии включают метрики работоспособности и события, связанные с работой и производительностью Service Fabric кластера и его сущностей: его узлы, приложения, службы, секции и реплики.Service Fabric telemetry includes health metrics and events about the operation and performance of a Service Fabric cluster and its entities: its nodes, applications, services, partitions, and replicas.

  • Евентсторе.EventStore. Системная служба с отслеживанием состояния, собирающая события, связанные с кластером и его сущностями.A stateful system service that collects events related to the cluster and its entities. Service Fabric использует Евентсторе для записи событий Service Fabric для предоставления сведений о кластере и может использоваться для обновления состояния, устранения неполадок, мониторинга.Service Fabric uses EventStore to write Service Fabric events to provide information about your cluster and can be used for status updates, troubleshooting, monitoring. Он также может сопоставлять события из разных сущностей в определенный момент времени для обнаружения проблем в кластере.It can also correlate events from different entities at a given time to identify issues in the cluster. Служба предоставляет эти события через REST API.The service exposes those events through a REST API. Сведения о том, как выполнять запросы к API-интерфейсам Евентсторе, см. в разделе запросы API евентсторе для событий кластера.For information about how to query the EventStore APIs, see Query EventStore APIs for cluster events. Вы можете просмотреть события из Евентсторе в Log Analytics, настроив кластер с помощью расширения WAD.You can view the events from EventStore in Log Analytics by configuring your cluster with WAD extension.
  • Хеалссторе.HealthStore. Предоставляет моментальный снимок текущей работоспособности кластера.Provides a snapshot of the current health of the cluster. Служба с отслеживанием состояния, которая выполняет статистическую обработку всех данных о работоспособности, сообщаемых сущностями в иерархии.A stateful service that aggregates all health data reported by entities in a hierarchy. Данные выявляются визуализацией в Service Fabric Explorer.The data is visualized in Service Fabric Explorer. Хеалссторе также отслеживает обновления приложений.The HealthStore also monitors application upgrades. Вы можете использовать запросы о работоспособности в PowerShell, приложении .NET или интерфейсах API для других приложений.You can use health queries in PowerShell, a .NET application, or REST APIs. См. статью Общие сведения о Service Fabric наблюдении за работоспособностью.See, Introduction to Service Fabric health monitoring.
  • Рассмотрите возможность реализации внутренних пользовательских служб наблюдения.Consider implementing internal custom watchdog services. Эти службы могут периодически сообщать о пользовательских данных о работоспособности, например о сбоях в работе служб.Those services can periodically report custom health data such as faulty states of running services. Дополнительные сведения см. в разделе пользовательские отчеты о работоспособности.For more information, see Custom health reports. Просмотреть отчеты о работоспособности можно с помощью обозревателя Service Fabric.You can read the health reports using the Service Fabric explorer.

Метрики и журналы инфраструктурыInfrastructure metrics and logs

Метрики инфраструктуры помогают понять распределение ресурсов в кластере.Infrastructure metrics help you to understand resource allocation in the cluster. Ниже приведены основные варианты сбора этих сведений.Here are the main options for collecting this information:

  • Система диагностики Azure Windows (WAD).Windows Azure Diagnostics (WAD). Собирайте журналы и метрики на уровне узла в Windows.Collect logs and metrics at the node level on Windows. Вы можете использовать WAD, настроив расширение виртуальной машины IaaSDiagnostics в любом масштабируемом наборе виртуальных машин, сопоставленном с типом узла, для сбор диагностических событий, таких как журналы событий Windows, счетчики производительности, системные и рабочие события ETW и manifest, а также пользовательские журналы.You can use WAD by configuring the IaaSDiagnostics VM extension on any virtual machine scale set that is mapped to a node type to collect diagnostic events, such as Windows event logs, performance counters, ETW/manifests system and operational events, and custom logs.
  • Агент Log Analytics.Log Analytics agent. Настройте расширение виртуальной машины расширение microsoftmonitoringagent для отправки журналов событий Windows, счетчиков производительности и пользовательских журналов в Log Analytics.Configure the MicrosoftMonitoringAgent VM extension to send Windows event logs, performance counters, and custom logs to Log Analytics.

Существует некоторое перекрытие типов метрик, собранных с помощью предыдущих механизмов, таких как счетчики производительности.There is some overlap in the type of metrics collected through the preceding mechanisms, such as performance counters. При наличии перекрытия рекомендуется использовать агент Log Analytics.Where there is overlap, we recommend using the Log Analytics agent. Так как служба хранилища Azure для агента Log Analytics отсутствует, низкая задержка.Because there is no Azure storage for the Log Analytics agent, there is low latency. Кроме того, счетчики производительности в IaaSDiagnostics нельзя легко подавать в Log Analytics.Also, the performance counters in IaaSDiagnostics cannot be fed into Log Analytics easily.

Мониторинг инфраструктуры в Service Fabric

Сведения об использовании расширений виртуальной машины см. в статье расширения и компоненты виртуальной машины Azure.For information about using VM extensions, see Azure virtual machine extensions and features.

Чтобы просмотреть данные, настройте Log Analytics для просмотра данных, собранных с помощью WAD.To view the data, configure Log Analytics to view the data collected through WAD. Сведения о настройке Log Analytics для чтения событий из учетной записи хранения см. в разделе настройка log Analytics для кластера.For information about how to configure Log Analytics to read events from a storage account, see Set up Log Analytics for a cluster.

Вы также можете просматривать журналы производительности и данные телеметрии, связанные с Service Fabric кластером, рабочими нагрузками, сетевым трафиком, ожидающими обновлениями и т. д.You can also view performance logs and telemetry data related to a Service Fabric cluster, workloads, network traffic, pending updates, and more. См. раздел наблюдение за производительностью с помощью log Analytics.See Performance Monitoring with Log Analytics.

Сопоставление служб решение в log Analytics предоставляет сведения о топологии кластера (то есть о процессах, выполняемых на каждом узле).Service Map solution in Log Analytics provides information about the topology of the cluster (that is, the processes running in each node). Отправка данных в учетной записи хранения в Application Insights.Send the data in the storage account to Application Insights. При получении данных в Application Insights может возникнуть задержка.There might be some delay in getting data into Application Insights. Если вы хотите просмотреть данные в режиме реального времени, рассмотрите возможность настройки концентратора событий с помощью приемников и каналов.If you want to see the data real time, consider configuring Event Hub using sinks and channels. Дополнительные сведения см. в разделе агрегирование событий и сбор данных с помощью система диагностики Azure Windows.For more information, see Event aggregation and collection using Windows Azure Diagnostics.

Метрики зависимых службDependent service metrics

  • Схема приложения Application Insights предоставляет топологию приложения с помощью вызовов зависимостей HTTP, сделанных между службами, с установленным пакетом SDK для Application Insights.Application Insights Application Map provides the topology of the application by using HTTP dependency calls made between services, with the installed Application Insights SDK.
  • Сопоставление служб решение в log Analytics предоставляет сведения о входящем и исходящем трафике между внешними службами и.Service Map solution in Log Analytics provides information about inbound and outbound traffic from/to external services. Кроме того, Сопоставление служб интегрируется с другими решениями, такими как обновления или безопасность.In addition, Service Map integrates with other solutions such as updates or security.
  • Пользовательские устройства наблюдения можно использовать для сообщения об ошибках во внешних службах.Custom watchdogs can be used to report error conditions on external services. Например, служба может сообщить отчет о работоспособности об ошибках, если он не может получить доступ к внешней службе или хранилищу данных (Azure Cosmos DB).For example, the service could report an error health report if it cannot access an external service or data storage (Azure Cosmos DB).

Распределенная трассировкаDistributed tracing

В архитектуре микрослужб несколько служб часто участвуют в выполнении задачи.In microservices architecture, several services often participate to complete a task. Данные телеметрии из каждой из этих служб сопоставляются с помощью контекстных полей (идентификатор операции, идентификатор запроса и т. д.) в распределенной трассировке.The telemetry from each of those services is correlated by using context fields (operation ID, request ID, and so forth) in a distributed trace. С помощью схемы приложения в Application Insights можно создать представление распределенной логической операции и визуализировать весь граф службы приложения.By using Application Map in Application Insights, you can build the view of distributed logical operation and visualize the entire service graph of your application. Вы также можете использовать диагностику транзакций в Application Insights для корреляции данных телеметрии на стороне сервера.You can also use transaction diagnostics in Application Insight to correlate server-side telemetry. Дополнительные сведения см. в разделе унифицированная диагностика транзакций между компонентами.For more information, see Unified cross-component transaction diagnostics.

Схема приложения Application Insights предоставляет топологию приложения с помощью вызовов зависимостей HTTP, сделанных между службами, с установленным пакетом SDK для Application Insights.Application Insights Application Map provides the topology of the application by using HTTP dependency calls made between services, with the installed Application Insights SDK. Также важно сопоставлять задачи, которые отправляются асинхронно с помощью очереди.It's also important to correlate tasks that are dispatched asynchronously using a queue. Дополнительные сведения об отправке телеметрии корреляции в сообщении очереди см. в разделе Инструментирование очередей.For details about sending correlation telemetry in a queue message, see Queue instrumentation.

Дополнительные сведения см. в разделе:For more information, see:

Оповещения и панели мониторингаAlerts and Dashboards

Application Insights и Log Analytics поддерживают Расширенный язык запросов (язык запросов Kusto), позволяющий извлекать и анализировать данные журнала.Application Insights and Log Analytics support an extensive query language (Kusto query language) that lets you retrieve and analyze log data. Используйте запросы для создания наборов данных и визуализации их на панелях мониторинга диагностики.Use the queries to create data sets and visualize it in diagnostics dashboards.

Используйте Azure Monitor оповещения, чтобы уведомлять администраторов об определенных условиях, происходящих в определенных ресурсах.Use Azure Monitor alerts to notify sysadmins when certain conditions occur in specific resources. Уведомление может быть электронной почтой, функцией Azure, вызовом веб-перехватчика и т. д.The notification could be an email, Azure function, call a web hook, and so on. Дополнительные сведения см. в разделе Alerts in Azure Monitor.For more information, see Alerts in Azure Monitor.

Правила оповещений поиска по журналам позволяют определить и выполнить запрос Kusto к рабочей области log Analytics через равные промежутки времени.Log search alert rules allow you to define and run a Kusto query against a Log Analytics workspace at regular intervals. Предупреждение создается, если результат запроса соответствует определенному условию.An alert is created if the query result matches a certain condition.

Рекомендации по стоимостиCost considerations

Для оценки затрат используйте калькулятор цен Azure.Use the Azure pricing calculator to estimate costs. Другие рекомендации описаны в разделе "затраты" в Microsoft Azure хорошо спроектированной инфраструктурой.Other considerations are described in the Cost section in Microsoft Azure Well-Architected Framework.

Ниже приведены некоторые моменты, которые следует учитывать для некоторых служб, используемых в этой архитектуре.Here are some points to consider for some of the services used in this architecture.

Azure Service FabricAzure Service Fabric

Вы платите за расчетные экземпляры, хранилище, сетевые ресурсы и IP-адреса, которые вы выбираете при создании кластера Service Fabric.You are charged for the compute instances, storage, networking resources, and IP addresses you choose when creating a Service Fabric cluster. Для Service Fabric взимается плата за развертывание.There are deployment charges for Service Fabric.

Масштабируемые наборы виртуальных машинVirtual machine scale sets

В этой архитектуре микрослужбы развертываются на узлах, которые являются масштабируемыми наборами виртуальных машин.In this architecture, the microservices are deployed into nodes that are virtual machine scale sets. За использование виртуальных машин Azure, развернутых в составе кластера и базовых ресурсов инфраструктуры, таких как хранилище и сеть, выставляются счета.You are charged for the Azure VMs that are deployed as part of the cluster and underlying infrastructure resources, such as storage and networking. Добавочная плата за службу масштабируемых наборов виртуальных машин не взимается.There are no incremental charges for the virtual machine scale sets service.

Управление API Azure (APIM)Azure API Management (APIM)

APIM используется в качестве шлюза для маршрутизации запросов от клиентов к службам в кластере.APIM is used as a gateway to route the requests from clients to your services in the cluster.

Существуют различные варианты ценообразования.There are different pricing options. Параметр " потребление " взимается на основе оплаты за использование и включает компонент шлюза.The Consumption option is charged on a pay-per-use basis and includes a gateway component. В зависимости от рабочей нагрузки выберите вариант, описанный в разделе цены на управление API.Based on your workload, choose an option described in Api Management pricing.

Azure Application InsightsAzure Application Insights

Application Insights используется для сбора данных телеметрии для всех служб, а также для просмотра трассировок и журналов событий в структурированном виде.Application insights is used for collect telemetry for all services and also to view the traces and event logs in a structured way. Цены на Azure Application Insights определяются по модели с оплатой по мере использования, то есть на основе объема полученных данных и более длительного хранения данных.The pricing for Azure Application Insights is a Pay-As-You-Go model based on data volume ingested and optionally for longer data retention. Дополнительные сведения см. в статье Управление использованием и затратами для Application Insights.For more information, see Manage Usage and Cost For Application Insights.

Azure MonitorAzure Monitor

Для Azure Monitor Log Analytics вы платите за прием и хранение данных.For Azure Monitor Log Analytics, you are charged for data ingestion and retention. Дополнительные сведения см. в разделе Azure Monitor цены .For more information, see Azure Monitor Pricing for more information.

Azure Key VaultAzure Key Vault

Azure Key Vault используется для хранения ключа инструментирования Application Insights в качестве секрета.Azure Key Vault is used to store the Application Insight's instrumentation key as a secret. Azure Key Vault предлагается на двух уровнях служб.Azure Key Vault is offered in two service tiers. Если ключи, защищенные АППАРАТным модулем безопасности, не требуются, выберите стандарт.If you don't need HSM-protected keys, choose the Standard. Сведения о функциях каждого уровня см. в разделе цены на Key Vault.For information about the features in each tier, see Key Vault pricing.

Azure DevOps ServicesAzure DevOps Services

Эталонная архитектура использует только Azure Pipelines.This reference architecture only uses Azure Pipelines. Azure предлагает конвейер Azure в качестве отдельной службы.Azure offers the Azure Pipeline as an individual Service. Вы разрешили бесплатное задание Майкрософт с 1 800 минут в месяц для CI/CD и одно самостоятельное задание с неограниченными минутами в месяц, за дополнительные задания взимается плата.You are allowed a free Microsoft-hosted job with 1,800 minutes per month for CI/CD and one self-hosted job with unlimited minutes per month, extra jobs have charges. Дополнительные сведения см. в разделе цены на Azure DevOps Services.For more information, see Azure DevOps Services Pricing.

Рекомендации для DevOpsDevOps considerations

Azure PipelinesAzure Pipelines

Эталонная реализация развертывается с помощью Azure Pipelines.The reference implementation is deployed using Azure Pipelines. Рекомендации по DevOps в архитектуре микрослужб см. в разделе CI/CD для микрослужб .For DevOps considerations in a microservices architecture, see CI/CD for microservices

В этом руководствевы также можете узнать, как развернуть приложение-контейнер с помощью CI/CD в Service Fabric кластере.You can also learn how to deploy a container application with CI/CD to a Service Fabric cluster, in this tutorial.

Развертывание решенияDeploy the solution

Чтобы развернуть эталонную реализацию для этой архитектуры, выполните действия, описанные в репозитории GitHub.To deploy the reference implementation for this architecture, follow the steps in the GitHub repo.

Дальнейшие действияNext steps