Microservices-Architektur in Azure Service FabricMicroservices architecture on Azure Service Fabric

Diese Referenzarchitektur zeigt eine in Azure Service Fabric bereitgestellte Microservices-Architektur.This reference architecture shows a microservices architecture deployed to Azure Service Fabric. Zu sehen ist eine einfache Clusterkonfiguration, die als Ausgangspunkt für die meisten Bereitstellungen dienen kann.It shows a basic cluster configuration that can be the starting point for most deployments.

GitHub-Logo Eine Referenzimplementierung dieser Architektur ist auf GitHub verfügbar.GitHub logo A reference implementation of this architecture is available on GitHub.

Referenzarchitektur für Service Fabric

Hinweis

Der Fokus dieses Artikels liegt auf dem Programmiermodell Reliable Services für Service Fabric.This article focuses on the Reliable Services programming model for Service Fabric. Die Nutzung von Service Fabric zur Bereitstellung und Verwaltung von Containern ist nicht Gegenstand dieses Artikels.Using Service Fabric to deploy and manage containers is beyond the scope of this article.

ArchitectureArchitecture

Die Architektur umfasst die folgenden Komponenten.The architecture consists of the following components. Informationen zu anderen Begriffen finden in der Übersicht über die Service Fabric-Terminologie.For other terms, see Service Fabric terminology overview.

Service Fabric-Cluster.Service Fabric cluster. In einem Netzwerk verbundene virtuelle Computer (VMs), auf denen Ihre Microservices bereitgestellt und verwaltet werden.A network-connected set of virtual machines (VMs) into which your microservices are deployed and managed.

VM-Skalierungsgruppen.Virtual machine scale sets. Mit VM-Skalierungsgruppen können Sie einer Gruppe identischer virtueller Computer mit Lastenausgleich und automatischer Skalierung erstellen und verwalten.Virtual machine scale sets allow you to create and manage a group of identical, load balanced, and autoscaling VMs. Sie bieten außerdem Fehler- und Upgradedomänen.It also provides the fault and upgrade domains.

Knoten.Nodes. Die Knoten sind die VMs, die dem Service Fabric-Cluster angehören.The nodes are the VMs that belong to the Service Fabric cluster.

Knotentypen.Node types. Ein Knotentyp stellt eine VM-Skalierungsgruppe dar, die eine Sammlung von Knoten bereitstellt.A node type represents a virtual machine scale set that deploys a collection of nodes. Ein Service Fabric-Cluster hat mindestens einen Knotentyp.A Service Fabric cluster has at least one node type. In einem Cluster mit mehreren Knotentypen müssen Sie den primären Knotentyp festlegen.In a cluster with multiple node types, one must be declared the Primary node type. Auf dem primären Knotentyp in Ihrem Cluster werden die Service Fabric-Systemdienste ausgeführt.The primary node type in the cluster runs the Service Fabric system services. Diese Dienste stellen die Plattformfunktionen von Service Fabric zur Verfügung.These services provide the platform capabilities of Service Fabric. Der primäre Knotentyp fungiert auch Seedknoten für den Cluster. Dabei handelt es sich um die Knoten, die die Verfügbarkeit des zugrunde liegenden Clusters aufrechterhalten.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. Konfigurieren Sie zusätzliche Knotentypen zum Ausführen Ihrer Dienste.Configure additional node types to run your services.

Dienste.Services. Ein Dienst übernimmt eine eigenständige Funktion und kann unabhängig von anderen Diensten gestartet und ausgeführt werden.A service performs a standalone function that can start and run independently of other services. Instanzen von Diensten werden auf Knoten im Cluster bereitgestellt.Instances of services get deployed to nodes in the cluster. Es gibt in Service Fabric zwei Arten von Dienst:There are two varieties of service in Service Fabric:

  • Zustandsloser Dienst:Stateless service. Ein zustandsloser Dienst behält seinen Zustand innerhalb des Diensts nicht bei.A stateless service does not maintain state within the service. Wenn Zustandspersistenz erforderlich ist, wird der Zustand in einen externen Speicher, wie z.B. Azure Cosmos DB, geschrieben und aus diesem abgerufen.If state persistence is required, then state is written to and retrieved from an external store, such as Azure Cosmos DB.
  • Zustandsbehafteter Dienst:Stateful service. Der Dienstzustand wird innerhalb des Diensts selbst gespeichert.The service state is kept within the service itself. Bei den meisten zustandsbehafteten Diensten wird dies über die Service Fabric-Funktion Zuverlässige Sammlungen implementiert.Most stateful services implement this through Service Fabric’s Reliable Collections.

Service Fabric Explorer.Service Fabric Explorer. Bei Service Fabric Explorer handelt es sich um ein Open-Source-Tool zum Untersuchen und Verwalten von Service Fabric-Clustern.Service Fabric Explorer is an open-source tool for inspecting and managing Service Fabric clusters.

Azure Pipelines.Azure Pipelines. Pipelines ist Teil von Azure DevOps Services und führt automatisierte Build-, Test- und Bereitstellungsvorgänge durch.Pipelines is part of Azure DevOps Services and runs automated builds, tests, and deployments. Sie können auch CI/CD-Lösungen von Drittanbietern, z.B. Jenkins, verwenden.You can also use third-party CI/CD solutions such as Jenkins.

Azure Monitor:Azure Monitor. Azure Monitor erfasst und speichert Metriken und Protokolle. Beispiele hierfür sind Plattformmetriken für die Azure-Dienste in der Lösung und Anwendungstelemetrie.Azure Monitor collects and stores metrics and logs, including platform metrics for the Azure services in the solution and application telemetry. Nutzen Sie diese Daten zum Überwachen der Anwendung, Einrichten von Warnungen und Dashboards und Durchführen von Analysen der Grundursache von Fehlern.Use this data to monitor the application, set up alerts and dashboards, and perform root cause analysis of failures. Azure Monitor wird in Service Fabric integriert, um Metriken von Controllern, Knoten und Containern sowie aus Container- und Masterknotenprotokollen zu erfassen.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. Verwenden Sie Key Vault, um alle Anwendungsgeheimnisse zu speichern, die von den Microservices verwendet werden, wie z.B. Verbindungszeichenfolgen.Use Key Vault to store any application secrets used by the microservices, such as connection strings.

Azure API Management:Azure API Management. In dieser Architektur fungiert API Management als API-Gateway, das Anforderungen von Clients entgegennimmt und an Ihre Dienste weiterleitet.In this architecture, API Management acts as an API gateway that accepts requests from clients and routes them to your services.

Überlegungen zum EntwurfDesign considerations

Diese Referenzarchitektur konzentriert sich auf Architekturen von Microservices.This reference architecture is focused on microservices architectures. Ein Microservice ist eine kleine unabhängige Codeeinheit mit Versionsangabe.A microservice is a small, independently versioned unit of code. Microservices können über Dienstermittlungsmethoden ermittelt werden und über APIs mit anderen Diensten kommunizieren.It is discoverable through service discovery mechanisms and can communicate with other services over APIs. Jeder Dienst ist eigenständig und sollte eine einzige Geschäftsfunktion implementieren.Each service is self-contained and should implement a single business capability. Weitere Informationen darüber, wie Sie Ihre Anwendungsdomäne in Microservices aufteilen können, finden Sie unter Verwenden der Domänenanalyse zur Modellierung von Microservices.For more information about how to decompose your application domain into microservices, see Using domain analysis to model microservices.

Service Fabric bietet eine Infrastruktur für das effiziente Erstellen, Bereitstellen und Aktualisieren von Microservices.Service Fabric provides an infrastructure to build, deploy, and upgrade microservices efficiently. Der Dienst bietet auch Optionen für die automatische Skalierung, Zustandsverwaltung und -überwachung sowie für den Neustart von Diensten bei einem Ausfall.It also provides options for auto scaling, managing state, monitoring health, and restarting services in case of failure.

Service Fabric arbeitet mit einem Anwendungsmodell, bei dem eine Anwendung eine Sammlung von Microservices ist.Service Fabric follows an application model where an application is a collection of microservices. Die Anwendung wird in einer Anwendungsmanifestdatei beschrieben, die die verschiedenen Arten von Diensten, die in dieser Anwendung enthalten sind, und Verweise auf die unabhängigen Dienstpakete definiert.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. Das Anwendungspaket enthält in der Regel auch Parameter, die als Überschreibungen für bestimmte Einstellungen dienen, die von den Diensten verwendet werden.The application package also usually contains parameters that serve as overrides for certain settings used by the services. Jedes Dienstpaket enthält eine Manifestdatei, die die physischen Dateien und Ordner beschreibt, die für die Ausführung dieses Diensts erforderlich sind, einschließlich Binärdateien, Konfigurationsdateien und schreibgeschützte Daten für den jeweiligen Dienst.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. Dienste und Anwendungen können unabhängig voneinander mit Versionsangaben versehen und aktualisiert werden.Services and applications are independently versioned and upgradable.

Optional kann das Anwendungsmanifest Dienste beschreiben, die automatisch bereitgestellt werden, wenn eine Instanz der Anwendung erstellt wird.Optionally, the application manifest can describe services that are automatically provisioned when an instance of the application is created. Diese werden als Standarddienste bezeichnet.These are called default services. In diesem Fall beschreibt das Anwendungsmanifest auch, wie diese Dienste erstellt werden sollen, einschließlich des Namens des Diensts, der Anzahl der Instanzen, der Sicherheits-/Isolationsrichtlinie und der Platzierungsbeschränkungen.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.

Hinweis

Vermeiden Sie die Verwendung von Standarddiensten, wenn Sie die Lebensdauer Ihrer Dienste steuern möchten.Avoid using default services if you want to control the life time of your services. Standarddienste werden beim Erstellen der Anwendung erstellt und werden so lange ausgeführt, wie die Anwendung ausgeführt wird.Default services are created when the application is created, and run as long as the application is running.

Grundlegende Informationen zu Service Fabric finden Sie unter Sie möchten sich über Service Fabric informieren?.For more information about understanding Service Fabric, see So you want to learn about Service Fabric?

Wählen eines Anwendung-zu-Dienst-PaketerstellungsmodellsChoose an application-to-service packaging model

Ein Grundsatz von Microservices ist, dass jeder Dienst unabhängig bereitgestellt werden kann.A tenet of microservices is that each service can be independently deployed. Wenn Sie in Service Fabric alle Ihre Dienste in einem einzigen Anwendungspaket gruppieren und ein Dienst nicht aktualisiert werden kann, erfolgt ein Rollback des gesamten Updates der Anwendung, wodurch verhindert wird, dass andere Dienste aktualisiert werden.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.

Aus diesem Grund empfehlen wir in einer Microservices-Architektur die Verwendung mehrerer Anwendungspakete.For that reason, in a microservices architecture, we recommend using multiple application packages. Fassen Sie einen oder mehrere eng zusammengehörige Diensttypen zu einem einzigen Anwendungstyp zusammen.Put one or more closely related service types into a single application type. Wenn Ihr Team für eine Reihe von Diensten verantwortlich ist, die die gleiche Lebensdauer haben und gleichzeitig aktualisiert werden müssen, den gleichen Lebenszyklus haben oder Ressourcen wie Abhängigkeiten oder Konfigurationen gemeinsam nutzen, platzieren Sie diese Diensttypen im gleichen Anwendungstyp.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 Fabric-ProgrammiermodelleService Fabric programming models

Wenn Sie einen Microservice einer Service Fabric-Anwendung hinzufügen, entscheiden Sie, ob er über einen Zustand oder Daten verfügt, die hochverfügbar und zuverlässig zur Verfügung gestellt werden müssen.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. Falls ja, können Daten extern gespeichert werden oder sind die Daten als Teil des Diensts enthalten?If so, can it store data externally or is the data contained as part of the service? Wählen Sie einen zustandslosen Dienst, wenn Sie keine Daten speichern müssen oder Daten in einem externen Speicher speichern möchten.Choose a stateless service if you don’t need to store data or want to store data in external storage. Wenn Sie den Zustand oder die Daten als Teil des Diensts pflegen möchten (z.B. wenn sich diese Daten im Arbeitsspeicher in der Nähe des Codes befinden müssen) oder eine Abhängigkeit von einem externen Speicher nicht unterstützen können, sollten Sie einen zustandsbehafteten Dienst wählen.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.

Wenn Sie bereits Code haben, den Sie in Service Fabric ausführen möchten, können Sie ihn als ausführbare Gastdatei ausführen, bei der es sich um eine beliebige ausführbare Datei handelt, die als Dienst ausgeführt wird.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. Alternativ können Sie die ausführbare Datei in einem Container packen, der alle für die Bereitstellung erforderlichen Abhängigkeiten enthält.Alternatively, you can package the executable in a container that has all the dependencies needed for deployment. Service Fabric modelliert sowohl Container als auch ausführbare Gastdateien als zustandslose Dienste.Service Fabric models both containers and guest executables as stateless services. Eine Anleitung zur Wahl eines Modells finden Sie unter Übersicht über die Service Fabric-Programmiermodelle.For guidance about choosing a model, see Service Fabric programming model overview.

Bei ausführbaren Gastdateien sind Sie für die Wartung der Umgebung verantwortlich, in der sie ausgeführt werden.With guest executables, you are responsible of maintaining the environment in which it runs. Angenommen, eine ausführbare Gastdatei verlangt Python.For example, suppose that a guest executable requires Python. Wenn die ausführbare Datei nicht eigenständig ist, müssen Sie sicherstellen, dass die erforderliche Version von Python bereits in der Umgebung installiert ist.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 verwaltet nicht die Umgebung.Service Fabric does not manage the environment. Azure bietet mehrere Mechanismen zum Einrichten der Umgebung, einschließlich benutzerdefinierter VM-Images und -Erweiterungen.Azure offers multiple mechanisms to set up the environment, including custom virtual machine images and extensions.

Um auf eine ausführbare Gastdatei über einen Reverseproxy zuzugreifen, stellen Sie sicher, dass Sie das Attribut UriScheme zum Element Endpunkt im Dienstmanifest der Gast ausführbaren Datei hinzugefügt haben.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="MyGuextExeTypeEndpoint" Port="8090" Protocol="http" UriScheme="http" PathSuffix="api" Type="Input"/>
    </Endpoints>

Wenn der Dienst zusätzliche Routen enthält, geben Sie die Routen im Wert PathSuffix an.If the service has additional routes, specify the routes in the PathSuffix value. Dem Wert sollte kein Präfix oder Suffix mit „/“ vorangestellt oder angehängt werden.The value should not be prefixed or suffixed with ‘/’. Eine weitere Möglichkeit besteht darin, die Route zum Dienstnamen hinzuzufügen.Another way is to add the route in the service name.

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

Weitere Informationen finden Sie unterFor more information, see:

API-GatewayAPI gateway

Ein API-Gateway (eingehend) befindet sich zwischen externen Clients und den Microservices.An API gateway (ingress) sits between external clients and the microservices. Es fungiert als Reverseproxy und leitet Anforderungen von Clients an Microservices weiter.It acts as a reverse proxy, routing requests from clients to microservices. Darüber hinaus kann es verschiedene übergreifende Aufgaben wie Authentifizierung, SSL-Beendigung und Ratenbegrenzung übernehmen.It may also perform various cross-cutting tasks such as authentication, SSL termination, and rate limiting.

Azure API Management wird in den meisten Szenarien empfohlen, aber Træfik ist eine beliebte Open-Source-Alternative.Azure API Management is recommended for most scenarios, but Træfik is a popular open-source alternative. Beide Technologieoptionen sind in Service Fabric integriert.Both technology options are integrated with Service Fabric.

  • API Management macht eine öffentliche IP-Adresse verfügbar und leitet Datenverkehr an Ihre Dienste weiter.API Management exposes a public IP address and routes traffic to your services. Die Lösung wird in einem dedizierten Subnetz im gleichen virtuellen Netzwerk wie der Service Fabric-Cluster ausgeführt.It runs in a dedicated subnet in the same virtual network as the Service Fabric cluster. Dieser Dienst kann auf Dienste in einem Knotentyp zugreifen, der über einen Lastenausgleich mit einer privaten IP-Adresse verfügbar gemacht wird.It can access services in a node type that is exposed through a load balancer with a private IP address. Diese Option ist nur in den Tarifen „Premium“ und „Developer“ von API Management verfügbar.This option is only available in the Premium and Developer tiers of API Management. Wählen Sie für Produktionsworkloads den Premium-Tarif.For production workloads, use the Premium tier. Weitere Informationen zu den Preisen finden Sie unter API Management-Preise.Pricing information is described in API Management pricing. Weitere Informationen finden Sie unter Service Fabric mit Azure API Management: Übersicht.For more information, see Service Fabric with Azure API Management overview.
  • Træfik unterstützt Features wie Routing, Ablaufverfolgung, Protokolle und Metriken.Træfik supports features such as routing, tracing, logs, and metrics. Træfik wird als zustandsloser Dienst im Service Fabric-Cluster ausgeführt.Træfik runs as a stateless service in the Service Fabric cluster. Die Dienstversionsverwaltung kann über Routing unterstützt werden.Service versioning can be supported through routing. Informationen darüber, wie Sie Træfik für eingehende Dienstdaten und als Reverseproxy innerhalb des Clusters einrichten, finden Sie unter Azure Service Fabric-Anbieter.For information on how to set up Træfik for service ingress and as the reverse proxy within the cluster, see Azure Service Fabric Provider. Weitere Informationen zur Verwendung von Træfik mit Service Fabric finden Sie im Blogbeitrag Intelligent routing on Service Fabric with Træfik (Intelligentes Routing in Service Fabric mit Træfik).For more information about using Træfik with Service Fabric, see Intelligent routing on Service Fabric with Træfik (blog post).

Træfik verfügt im Gegensatz zu Azure API Management nicht über die Funktionalität, die Partition eines zustandsbehafteten Dienstes (mit mehr als einer Partition) aufzulösen, an den eine Anforderung weitergeleitet wird.Træfik, 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. Weitere Informationen finden Sie unter Hinzufügen eines Matchers für das Partitionieren von Diensten.For more information, see Add a matcher for partitioning services.

Weitere API Management-Optionen sind Azure Application Gateway und Azure Front Door.Other API management options include Azure Application Gateway and Azure Front Door. Diese Dienste können in Verbindung mit API Management verwendet werden, um Aufgaben wie Routing, SSL-Terminierung und Firewall abzudecken.These services can be used in conjunction with API Management to perform tasks such as routing, SSL termination, and firewall.

Kommunikation zwischen DienstenInterservice communication

Um die Dienst-zu-Dienst-Kommunikation zu erleichtern, sollten Sie HTTP als Kommunikationsprotokoll in Erwägung ziehen.To facilitate service-to-service communication, consider using HTTP as the communication protocol. Als Grundlage für die meisten Szenarien wird der Reverseproxydienst für die Dienstermittlung empfohlen.As a baseline for most scenarios, we recommend using the reverse proxy service for service discovery.

  • Kommunikationsprotokoll.Communication protocol. In einer Microservices-Architektur müssen Dienste mit minimaler Kopplung zur Laufzeit miteinander kommunizieren.In a microservices architecture, services need to communicate with each other with minimum coupling at runtime. Um eine sprachunabhängige Kommunikation zu ermöglichen, ist HTTP ein Branchenstandard mit einer breiten Palette von Tools und HTTP-Servern, die in verschiedenen Sprachen verfügbar sind und allesamt von Service Fabric unterstützt werden.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. Daher wird für die meisten Workloads HTTP anstelle des in Service Fabric integrierten Dienstremotings empfohlen.Therefore, using HTTP instead of Service Fabric’s built in service remoting is recommended for most workloads.
  • Dienstermittlung:Service discovery. Um mit anderen Diensten innerhalb eines Clusters zu kommunizieren, muss ein Clientdienst den aktuellen Standort des Zieldiensts auflösen.To communicate with other services within a cluster, a client service needs to resolve the target service’s current location. In Service Fabric können Dienste zwischen Knoten verschoben werden, wodurch sich die Dienstendpunkte dynamisch ändern.In Service Fabric, services can move between nodes, causing the service endpoints to change dynamically. Um Verbindungen mit veralteten Endpunkten zu vermeiden, kann der Naming Service von Service Fabric verwendet werden, um aktualisierte Endpunktinformationen abzurufen.To avoid connections to stale endpoints, Service Fabric’s Naming Service can be used to retrieve updated endpoint information. Service Fabric bietet jedoch auch einen integrierten Reverseproxydienst, der den Naming Service abstrahiert.However, Service Fabric also provides a built-in reverse proxy service that abstracts the naming service. Diese Option ist einfacher zu verwenden und führt zu einfacherem Code.This option is easier to use and results in simpler code.

Es folgen weitere Optionen für die Kommunikation zwischen Diensten:Other options for interservice communication include,

  • Træfik für erweitertes Routing.Træfik for advanced routing.
  • DNS für Kompatibilitätsszenarien, bei denen ein Dienst erwartet, dass DNS verwendet wird.DNS for compatibility scenarios where a service expects to use DNS.
  • ServicePartitionClient<TCommunicationClient>-Klasse.ServicePartitionClient<TCommunicationClient> class. Die Klasse speichert Dienstendpunkte zwischen und kann eine bessere Leistung ermöglichen, da Aufrufe direkt zwischen Diensten ohne Vermittler oder benutzerdefinierte Protokolle erfolgen.The class caches service endpoints and can enable better performance, as calls go directly between services without intermediaries or custom protocols.

Überlegungen zur SkalierbarkeitScalability considerations

Service Fabric unterstützt die Skalierung dieser Clusterentitäten:Service Fabric supports scaling these cluster entities:

  • Skalieren der Anzahl von Knoten für KnotentypScaling the number of nodes for each node type.
  • Skalieren von DienstenScaling services.

Dieser Abschnitt konzentriert sich auf die automatische Skalierung.This section is focused on autoscaling. In bestimmten Situationen können Sie die Skalierung manuell vornehmen.You can choose to manually scale in situations where appropriate. Dies gilt beispielsweise in einer Situation, in der ein manueller Eingriff erforderlich ist, um die Anzahl der Instanzen festzulegen.For example, a situation where manual intervention is required to set the number of instances.

Anfängliche Clusterkonfiguration für SkalierbarkeitInitial cluster configuration for scalability

Wenn Sie einen Service Fabric-Cluster erstellen, stellen Sie die Knotentypen entsprechend Ihren Sicherheits- und Skalierungsanforderungen bereit.When you create a Service Fabric cluster, provision the node types based on your security and scalability needs. Jeder Knotentyp wird einer VM-Skalierungsgruppe zugeordnet und kann unabhängig skaliert werden.Each node type is mapped to a virtual machine scale set and can be scaled independently.

  • Erstellen Sie einen Knotentyp für jede Gruppe von Diensten, die unterschiedliche Skalierungs- oder Ressourcenanforderungen haben.Create a node type for each group of services that have different scalability or resource requirements. Stellen Sie zunächst einen Knotentyp (der zum primären Knotentyp wird) für die Systemdienste von Service Fabric bereit.Start by provisioning a node type (which becomes the primary node type) for the Service Fabric system services. Erstellen Sie anschließend gesonderte Knotentypen, um Ihre öffentlichen oder Front-End-Dienste und andere Knotentypen auszuführen, die für Ihre Back-End- bzw. private oder isolierte Dienste erforderlich sind.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. Geben Sie Platzierungseinschränkungen an, damit die Dienste nur für die vorgesehenen Knotentypen bereitgestellt werden.Specify placement constraints so that the services are only deployed to the intended node types.
  • Geben Sie für jeden Knotentyp eine Dauerhaftigkeitsstufe an.Specify the durability tier for each node type. Die Dauerhaftigkeitsstufe beschreibt die Möglichkeit von Service Fabric, Updates für VM-Skalierungsgruppen und Wartungsvorgänge zu beeinflussen.The durability tier represents the ability for Service Fabric to influence virtual machine scale set updates and maintenance operations. Wählen Sie für Produktionsworkloads mindestens die Dauerhaftigkeitsstufe „Silber“.For production workloads, choose the Silver or higher durability tier. Weitere Informationen zu jeder Stufe finden Sie unter Die Dauerhaftigkeitsmerkmale des Clusters.For information about each tier, see The durability characteristics of the cluster.
  • Bei Verwenden der Dauerhaftigkeitsstufe „Bronze“ erfordern bestimmte Vorgänge manuelle Schritte.If using the Bronze durability tier, certain operations require manual steps. Für Knotentypen mit der Dauerhaftigkeitsstufe „Bronze“ sind beim horizontalen Herunterskalieren zusätzliche Schritte erforderlich.For node types with Bronze durability tier additional steps are required during scale in. Weitere Informationen zu Skalierungsvorgängen finden Sie in dieser Anleitung.For more information on scaling operations, see this guide.

Skalieren von KnotenScaling nodes

Service Fabric bietet für die horizontale Hoch- und Herunterskalierung eine automatische Skalierung. Jeder Knotentyp kann unabhängig für die automatische Skalierung konfiguriert werden.Service Fabric supports autoscaling for scale-in and scale-out. Each node type can be configured for autoscaling independently.

Jeder Knotentyp kann maximal 100 Knoten enthalten.Each node type can have a maximum of 100 nodes. Beginnen Sie mit einer kleinere Gruppe von Knoten, und fügen Sie abhängig von der Last weitere Knoten hinzu.Start with a smaller set of nodes and add more nodes depending on your load. Wenn Sie mehr als 100 Knoten in einem Knotentyp benötigen, müssen Sie weitere Knotentypen hinzufügen.If you require more than 100 nodes in a node type, you will need to add more node types. Einzelheiten finden Sie unter Überlegungen zur Kapazitätsplanung für Service Fabric-Cluster.For details, see Service Fabric cluster capacity planning considerations. Eine VM-Skalierungsgruppe wird nicht sofort skaliert, was Sie beim Einrichten von Regeln für die Autoskalierung berücksichtigen sollten.A virtual machine scale set does not scale instantaneously, so consider that factor when you set up autoscale rules.

Konfigurieren Sie für die automatische horizontale Herunterskalierung den Knotentyp mit der Dauerhaftigkeitsstufe „Silber“ oder „Gold“.To support automatic scale-in, configure the node type to have the Silver or Gold durability tier. Dadurch wird sichergestellt, dass die Skalierung verzögert wird, bis Service Fabric die Verlagerung von Diensten abgeschlossen hat, und dass die VM-Skalierungsgruppen Service Fabric darüber informieren, dass die VMs entfernt und nicht nur vorübergehend heruntergefahren werden.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.

Weitere Informationen zum Skalieren auf Knoten-/Clusterebene finden Sie unter Skalieren von Azure Service Fabric-Clustern.For more information about scaling at the node/cluster level, see Scaling Azure Service Fabric clusters.

Skalieren von DienstenScaling services

Zustandslose und zustandsbehaftete Dienste verfolgen bei der Skalierung unterschiedliche Ansätze.Stateless and stateful services apply different approaches to scaling.

Automatische Skalierung für zustandslose DiensteAutoscaling for stateless services

  • Verwenden Sie den Trigger bei durchschnittlicher Partitionslast.Use the average partition load trigger. Dieser Trigger bestimmt, wann der Dienst horizontal herunter- oder hochskaliert wird, und zwar basierend auf einem in der Skalierungsrichtlinie angegebenen Schwellenwert für die Last.This trigger determines when the service is scaled in or out, based on a load threshold value specified in the scaling policy. Sie können auch festlegen, wie oft der Trigger überprüft wird.You can also set how often the trigger is checked. Siehe Trigger für die durchschnittliche Partitionslast mit instanzbasierter Skalierung.See Average partition load trigger with instance-based scaling. Dadurch ist ein zentrales Hochskalieren auf die Anzahl verfügbarer Knoten möglich.This allows you to scale up to the number of available nodes.
  • Legen Sie im Dienstmanifest InstanceCount auf -1 fest, was Service Fabric anweist, auf jedem Knoten eine Instanz des Diensts auszuführen.Set InstanceCount to -1 in the service manifest, which tells Service Fabric to run an instance of the service on every node. Dieser Ansatz ermöglicht dem Dienst eine dynamische Skalierung entsprechend der Skalierung des Clusters.This approach enables the service to scale dynamically as the cluster scales. Wenn sich die Anzahl der Knoten im Cluster ändert, erstellt und löscht Service Fabric automatisch entsprechende Dienstinstanzen.As the number of nodes in the cluster changes, Service Fabric automatically creates and deletes service instances to match.

Hinweis

In einigen Fällen möchten Sie Ihren Dienst möglicherweise manuell skalieren.In some cases, you might want to manually scale your service. Wenn Sie beispielsweise einen Dienst haben, der Daten aus Event Hubs liest, möchten Sie möglicherweise, dass eine dedizierte Instanz Daten aus jeder Event Hub-Partition liest, um einen gleichzeitigen Zugriff auf die Partition zu vermeiden.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.

Skalierung für zustandsbehaftete DiensteScaling for stateful services

Bei einem zustandsbehafteten Dienst wird die Skalierung von der Anzahl der Partitionen, der Größe jeder Partition und der Anzahl der Partitionen/Replikate bestimmt, die auf einer bestimmten VM ausgeführt werden.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.

  • Wenn Sie partitionierte Dienste erstellen, achten Sie darauf, dass jeder Knoten ausreichende Replikate für eine gleichmäßige Verteilung der Workloads erhält, ohne Ressourcenkonflikte zu verursachen.If you are creating partitioned services, make sure each node gets adequate replicas for even distribution of the workload without causing resource contentions. Wenn weitere Knoten hinzugefügt werden, verteilt Service Fabric die Workloads standardmäßig auf die neuen VMs.If more nodes are added, Service Fabric distributes the workloads onto the new machines by default. Wenn es beispielsweise 5 Knoten und 10 Partitionen gibt, platziert Service Fabric standardmäßig auf jedem Knoten zwei primäre Replikate.For example, if there are 5 nodes and 10 partitions, by default Service Fabric will place two primary replicas on each node. Wenn Sie die Knoten horizontal skalieren, können Sie eine höhere Leistung erzielen, da die Verarbeitungsaufgaben gleichmäßig auf mehr Ressourcen verteilt werden.If you scale out the nodes, you can achieve greater performance, because the work is evenly distributed across more resources. Weitere Informationen zu Szenarien, die diese Strategie befolgen, finden Sie unter Skalierung in Service Fabric.For information about scenarios that take advantage of this strategy, see Scaling in Service Fabric.
  • Das Hinzufügen oder Entfernen von Partitionen wird nicht sonderlich gut unterstützt.Adding or removing partitions is not well supported. Eine weitere häufig verwendete Option zur Skalierung ist das dynamische Erstellen oder Löschen von Diensten oder ganzen Anwendungsinstanzen.Another option commonly used to scale is to dynamically create or delete services or whole application instances. Ein Beispiel dieser Vorgehensweise finden Sie unter Skalieren durch das Erstellen oder Entfernen von neuen benannten Diensten.An example of that pattern is described in Scaling by creating or removing new named services.

Weitere Informationen finden Sie unterFor more information, see:

Verwenden von Metriken für den LastenausgleichUsing metrics to balance load

Je nachdem, wie Sie die Partition entwerfen, kann es Knoten mit Replikaten geben, die mehr Datenverkehr erhalten als andere.Depending on how you design the partition, you might have nodes with replicas that get more traffic than others. Um dies zu vermeiden, partitionieren Sie den Dienstzustand so, dass er auf alle Partitionen verteilt wird.To avoid this situation, partition the service state so that it is distributed across all partitions. Verwenden Sie das Bereichspartitionierungsschema mit einem geeigneten Hashalgorithmus.Use the range partitioning scheme with a good hash algorithm. Siehe Erste Schritte mit der Partitionierung.See Get started with partitioning.

Service Fabric verwendet Metriken, um zu wissen, wie Dienste innerhalb eines Clusters platziert und aufeinander abgestimmt werden sollen.Service Fabric uses metrics to know how to place and balance services within a cluster. Sie können beim Erstellen dieses Diensts für jede Metrik, die einem Dienst zugeordnet ist, eine Standardlast angeben.You can specify a default load for each metric associated with a service when that service is created. Service Fabric berücksichtigt diese Last anschließend bei der Platzierung des Diensts oder immer dann, wenn der Dienst verschoben werden muss (z.B. bei Upgrades), um zu versuchen, die Knoten im Cluster in Einklang zu bringen.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.

Die anfänglich angegebene Standardlast für einen Dienst ändert sich während dessen Lebensdauer nicht.The initially specified default load for a service will not change over the lifetime of the service. Um sich ändernde Metriken für einen bestimmten Dienst zu erfassen, wird empfohlen, dass Sie Ihren Dienst überwachen und dann die Last dynamisch melden.To capture changing metrics for a given service, we recommend that you monitor your service and then report the load dynamically. Dies ermöglicht Service Fabric, die Zuordnung basierend auf der gemeldeten Last zu einem gegebenen Zeitpunkt anzupassen.This allows Service Fabric to adjust the allocation based on the reported load at a given time. Verwenden Sie die IServicePartition.ReportLoad-Methode, um benutzerdefinierte Metriken zu melden.Use the IServicePartition.ReportLoad method to report custom metrics. Weitere Informationen finden Sie unter Dynamische Last.For more information, see Dynamic load.

Überlegungen zur VerfügbarkeitAvailability considerations

Platzieren Sie Ihre Dienste auf einem anderen Knotentyp als dem primären Knotentyp.Place your services in a node type other than the primary node type. Die Service Fabric-Systemdienste werden stets auf dem primären Knotentyp platziert.The Service Fabric system services are always deployed to the primary node type. Wenn Ihre Dienste auf dem primären Knotentyp bereitgestellt werden, können sie mit Systemdiensten um Ressourcen konkurrieren und die Systemdienste stören.If your services are deployed to the primary node type, they might compete with system services for resources and interfere with the system services. Wenn von einem Knotentyp erwartet wird, dass er zustandsbehaftete Dienste hostet, stellen Sie sicher, dass es mindestens fünf Knoteninstanzen gibt, und Sie wählen die Dauerhaftigkeitsstufe „Silber“ oder „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.

Erwägen Sie das Einschränken der Ressourcen Ihrer Dienste.Consider constraining the resources of your services. Siehe Ressourcenkontrollmechanismus.See Resource governance mechanism.

  • Mischen Sie auf demselben Knotentyp keine Dienste mit Ressourcenkontrolle mit Diensten ohne Ressourcenkontrolle.Do not mix resource governed and resource non-governed services on the same node type. Die Dienste ohne Kontrolle nutzen ggf. zu viele Ressourcen, wodurch die Dienste mit Ressourcenkontrolle beeinträchtigt werden.The non-governed services might consume too many resources, affecting the resource governed services. Geben Sie Platzierungseinschränkungen an, um sicherzustellen, dass diese Arten von Diensten nicht in der gleichen Gruppe von Knoten ausgeführt werden.Specify placement constraints to make sure that those types of services do not run on the same set of nodes. Siehe Festlegen der Ressourcenkontrolle.See Specify resource governance. (Dies ist eine Beispiel des Bulkhead-Musters.)(This is an example of the Bulkhead pattern.)
  • Geben Sie die CPU-Kerne und Arbeitsspeichergröße an, die für eine Dienstinstanz reserviert werden.Specify the CPU cores and memory to reserve for a service instance. Informationen zur Verwendung und Einschränkungen von Richtlinien zur Ressourcenkontrolle finden Sie unter Ressourcenkontrolle.For information about usage and limitations of resource governance policies, see Resource governance.

Stellen Sie sicher, dass die Anzahl der Zielinstanzen oder Replikate jedes Diensts größer als 1 ist, um einen Single Point of Failure (SPOF) zu vermeiden.Make sure every service’s target instance or replica count is greater than 1 to avoid a single point of failure (SPOF). Die größtmögliche Anzahl von Dienstinstanzen oder Replikaten ist gleich der Anzahl der Knoten, auf die der Dienst beschränkt ist.The largest number that you can use as service instance or replica count equals the number nodes that to which the service is constrained.

Stellen Sie sicher, dass alle zustandsbehafteten Dienste mindestens über zwei aktive sekundäre Replikate verfügen.Make sure every stateful service has at least two active secondary replicas. Für Produktionsworkloads werden fünf Replikate empfohlen.Five replicas are recommended for production workloads.

Weitere Informationen finden Sie unter Verfügbarkeit der Service Fabric-Dienste.For more information, see Availability of Service Fabric services.

SicherheitshinweiseSecurity considerations

Hier sind einige wichtige Punkte zur Absicherung Ihrer Anwendung in Service Fabric:Here are some key points for securing your application on Service Fabric:

Virtuelles NetzwerkVirtual network

Erwägen Sie, Subnetzgrenzen für jede VM-Skalierungsgruppe zu definieren, um den Kommunikationsfluss zu steuern.Consider defining subnet boundaries for each virtual machine scale set to control the flow of communication. Jeder Knotentyp hat seine eigene VM-Skalierungsgruppe, die in einem Subnetz innerhalb des virtuellen Netzwerks des Service Fabric-Clusters festgelegt ist.Each node type has its own virtual machine scale set in a subnet within the Service Fabric cluster's virtual network. Netzwerksicherheitsgruppen (NSGs) können Subnetzen zum Zulassen oder Verweigern von Netzwerkdatenverkehr hinzugefügt werden.Network Security Groups (NSGs) can be added to the subnets to allow or reject network traffic. Beispielsweise können Sie bei Front-End- und Back-End-Knotentypen dem Back-End-Subnetz eine NSG hinzufügen, um eingehenden Datenverkehr nur für das Front-End-Subnetz zu akzeptieren.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.

Verwenden Sie beim Aufrufen externer Azure-Dienste im Cluster die Dienstendpunkte des virtuellen Netzwerks, sofern der Azure-Dienst dies unterstützt.When calling external Azure Services from the cluster, use Virtual Network service endpoints if the Azure service supports it. Durch die Verwendung eines Dienstendpunkts wird der Dienst nur im virtuellen Netzwerk des Clusters abgesichert.Using a service endpoint secures the service to only the cluster’s Virtual Network. Wenn Sie beispielsweise Cosmos DB zum Speichern von Daten verwenden, konfigurieren Sie das Cosmos DB-Konto mit einem Dienstendpunkt, um nur den Zugriff aus einem bestimmten Subnetz zuzulassen.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. Siehe Zugreifen auf Azure Cosmos DB-Ressourcen über virtuelle Netzwerke.See Access Azure Cosmos DB resources from virtual networks.

Endpunkte und Kommunikation zwischen DienstenEndpoints and interservice communication

Erstellen Sie keinen ungeschützten Service Fabric-Cluster.Do not create an unsecured Service Fabric cluster. Falls der Cluster Verwaltungsendpunkte im öffentlichen Internet verfügbar macht, können anonyme Benutzer eine Verbindung mit ihm herstellen.If the cluster exposes management endpoints to the public internet, anonymous users can connect to it. Nicht geschützte Cluster werden für Produktionsworkloads nicht unterstützt.Unsecured clusters are not supported for production workloads. Siehe: Szenarien für die Clustersicherheit in Service Fabric.See: Service Fabric cluster security scenarios.

So schützen Sie die Kommunikation zwischen DienstenTo secure your interservice communications:

  • Erwägen Sie in Ihren ASP.NET Core- oder Java-Webdiensten das Aktivieren von HTTPS-Endpunkten.Consider enabling HTTPS endpoints in your ASP.NET Core or Java web services.
  • Richten Sie eine sichere Verbindung zwischen dem Reverseproxy und Diensten ein.Establish a secure connection between the reverse proxy and services. Einzelheiten finden Sie unter Herstellen einer Verbindung mit einem sicheren Dienst.For details, see Connect to a secure service.

Wenn Sie ein API-Gateway verwenden, können Sie die Authentifizierung an das Gateway auslagern.If you are using an API gateway, you can offload authentication to the gateway. Stellen Sie sicher, dass die einzelnen Dienste nicht direkt (ohne das API-Gateway) erreicht werden können, es sei denn, es ist zusätzliche Sicherheit für die Authentifizierung von Nachrichten vorhanden, ob sie vom Gateway stammen.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.

Machen Sie den Service Fabric-Reverseproxy nicht öffentlich verfügbar.Do not expose the Service Fabric reverse proxy publicly. Dadurch sind alle Dienste, die HTTP-Endpunkte verfügbar machen, von außerhalb des Clusters adressierbar, wodurch Sicherheitsrisiken entstehen und möglicherweise zusätzliche Informationen außerhalb des Clusters unnötig preisgegeben werden.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. Wenn Sie auf einen Dienst öffentlich zugreifen möchten, verwenden Sie ein API-Gateway.If you want to access a service publicly, use an API gateway. Einige Optionen werden im Abschnitt API-Gateway genannt.Some options are mentioned in the API gateway section.

Remotedesktop ist nützlich für die Diagnose und Problembehandlung. Sie sollten diese Anwendung jedoch unbedingt schließen, damit keine Sicherheitslücke entsteht.Remote desktop is useful for diagnostic and troubleshooting, but make sure not to leave it open otherwise it causes a security hole.

Geheime Schlüssel und ZertifikateSecrets and certificates

Speichern Sie geheime Schlüssel, wie Verbindungszeichenfolgen, in einem Datenspeicher in Azure Key Vault.Store secrets such as connection strings to datastores in Azure Key Vault. Der Key Vault muss sich in derselben Region befinden, wie die VM-Skalierungsgruppe.The Key Vault must be in the same region as the virtual machine scale set. Folgendes ist erforderlich:You will need to:

  • Authentifizieren Sie den Zugriff des Dienstes auf den Key Vault.Authenticate the service’s access to the Key Vault.

    Aktivieren Sie die verwaltete Identität in der VM-Skalierungsgruppe, die den Dienst hostet.Enable managed identity on the virtual machine scale set that hosts the service.

  • Speichern Sie Ihre geheimen Schlüssel im Key Vault.Store your secrets in the Key Vault.

    Fügen Sie geheime Schlüssel in ein Format hinzu, das in ein Schlüssel-Wert-Paar übersetzt werden kann.Add secrets in a format that can be translated to a key-value pair. Zum Beispiel: CosmosDB--AuthKey.For example, CosmosDB--AuthKey. Wenn die Konfiguration erstellt wird, wird „--“ in „:“ konvertiert.When the configuration is built, “--” is converted into “:”.

  • Greifen Sie auf die geheimen Schlüssel in Ihrem Dienst zu.Access those secrets in your service.

    Fügen Sie die Key Vault-URI in Ihrer appSettings.json hinzu.Add the Key Vault URI in your appSettings.json. Fügen Sie in Ihrem Dienst den Konfigurationsanbieter hinzu, der aus dem Key Vault liest, die Konfiguration erstellt und auf den geheimen Schlüssel aus der erstellten Konfiguration zugreift.In your service, add the configuration provider that reads from the Key Vault, builds the configuration, and accesses the secret from the built configuration.

Hier ist ein Beispiel, bei dem der Workflow-Dienst einen geheimen Schlüssel im Key Vault im Format „CosmosDB--Datenbank“ speichert.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();
            }
    }
}

Um auf den geheimen Schlüssel zuzugreifen, geben Sie dessen Name in der erstellten Konfiguration an.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.
       }

Verwenden Sie keine Clientzertifikate für den Zugriff auf Service Fabric Explorer.Do not use client certificates to access Service Fabric Explorer. Nutzen Sie stattdessen Azure Active Directory (Azure AD).Instead, use Azure Active Directory (Azure AD). Siehe auch Azure-Dienste, die die Azure AD-Authentifizierung unterstützen.Also see, Azure services that support Azure AD authentication.

Verwenden Sie keine selbstsignierten Zertifikate in der Produktion.Do not use self-signed certificates for production.

Schutz von ruhenden DatenData at rest protection

Wenn Sie an die VM-Skalierungsgruppen im Service Fabric-Cluster Datenträger angefügt haben und Ihre Dienste Daten auf diesen Datenträgern speichern, müssen Sie die Datenträger verschlüsseln.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. Weitere Informationen finden Sie unter Verschlüsseln von Betriebssystem- und angefügten Datenträgern in einer VM-Skalierungsgruppe mit Azure PowerShell (Vorschauversion).For more information, see Encrypt OS and attached data disks in a virtual machine scale set with Azure PowerShell (Preview).

Weitere Informationen zum Absichern von Service Fabric finden Sie unter:For more information about securing Service Fabric, see:

Überlegungen zur ResilienzResiliency considerations

Um Ausfälle zu beheben und einen voll funktionsfähigen Zustand aufrechtzuerhalten, muss die Anwendung bestimmte Resilienzmuster implementieren.To recover from failures and maintain a fully functioning state, the application must implement certain resiliency patterns. Hier sind einige gängige Muster:Here are some common patterns:

  • Wiederholungsmuster: Um Fehler zu behandeln, die voraussichtlich nur vorübergehend sind, wie z.B. Ressourcen, die vorübergehend nicht verfügbar sind.Retry pattern: To handle errors that are expected to be transient, such as resources being temporarily unavailable.
  • Trennschalter: Um Fehler zu bearbeiten, deren Behebung möglicherweise länger dauert.Circuit breaker: To address faults that might need longer to fix.
  • Bulkhead-Muster: Zum Isolieren von Ressourcen pro Dienst.Bulkhead pattern: To isolate resources per service.

Für diese Referenzimplementierung wird Polly verwendet. Dies ist eine Open-Source-Option, mit der alle diese Muster implementiert werden können.This reference implementation uses Polly, an open-source option, to implement all of those patterns.

Aspekte der ÜberwachungMonitoring considerations

Bevor Sie sich mit den Überwachungsoptionen befassen, empfehlen wir Ihnen, diesen Artikel über die Diagnose gängiger Szenarien mit Service Fabric zu lesen.Before you explore the monitoring options, we recommend you read this article about diagnosing common scenarios with Service Fabric. Sie können sich Überwachungsdaten in diesen Kategorien vorstellen:You can think of monitoring data in these sets:

Es gibt zwei Hauptoptionen für die Analyse von Daten:These are the two main options for analyzing that data:

  • Application InsightsApplication Insights
  • Log AnalyticsLog Analytics

Mit Azure Monitor können Sie Dashboards für die Überwachung einrichten und Warnmeldungen an Bediener senden.You can use Azure Monitor to set up dashboards for monitoring and to send alerts to operators. Es gibt auch einige Überwachungstools von Drittanbietern, die in Service Fabric integriert werden können, z.B. Dynatrace.There are also some third-party monitoring tools that are integrated with Service Fabric, such as Dynatrace. Einzelheiten finden Sie unter Partnerlösungen für die Überwachung von Azure Service Fabric.For details, see Azure Service Fabric Monitoring Partners.

Anwendungsmetriken und -protokolleApplication metrics and logs

Die Anwendungstelemetrie liefert Daten über Ihren Dienst, die Ihnen helfen können, die Integrität Ihres Diensts zu überwachen und Probleme auszumachen.Application telemetry provides data about your service that can help you monitor the health of your service and identify issues. So fügen Sie Ihrem Dienst Ablaufverfolgungen und Ereignisse hinzuTo add traces and events in your service:

Application Insights bietet zahlreiche integrierte Telemetriedaten: Anforderungen, Ablaufverfolgungen, Ereignisse, Ausnahmen, Metriken, Abhängigkeiten.Application Insights provides a lot of built-in telemetry: requests, traces, events, exceptions, metrics, dependencies. Wenn Ihr Dienst HTTP-Endpunkte verfügbar macht, aktivieren Sie Application Insights, indem Sie die Erweiterungsmethode UseApplicationInsights für Microsoft.AspNetCore.Hosting.IWebHostBuilder aufrufen.If your service exposes HTTP endpoints, enable Application Insights by calling the UseApplicationInsights extension method for Microsoft.AspNetCore.Hosting.IWebHostBuilder. Weitere Informationen zum Instrumentieren Ihres Diensts für Application Insights finden Sie in diesen Artikeln:For information about instrumenting your service for Application Insights, see these articles:

Verwenden Sie zum Anzeigen der Ablaufverfolgungs- und Ereignisprotokolle Application Insights als eine der Senken für die strukturierte Protokollierung.To view the traces and event logs, use Application Insights as one of sinks for structured logging. Konfigurieren Sie Application Insights mit Ihrem Instrumentierungsschlüssel, indem Sie die Erweiterungsmethode AddApplicationInsights aufrufen.Configure Application Insights with your instrumentation key by calling the AddApplicationInsights extension method. In diesem Beispiel wird der Instrumentierungsschlüssel als geheimer Schlüssel im Key Vault gespeichert.In this example, the instrumentation key is stored as a secret in the Key Vault.

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

Wenn Ihr Dienst keine HTTP-Endpunkte verfügbar macht, müssen Sie eine benutzerdefinierte Erweiterung schreiben, die Ablaufverfolgungen an Application Insights sendet.If your service does not expose HTTP endpoints, you need to write a custom extension that sends traces to Application Insights. Ein Beispiel finden Sie im Workflowdienst in der Referenzimplementierung.For an example, see the Workflow service in the reference implementation.

ASP.NET Core-Dienste verwenden für die Anwendungsprotokollierung die ILogger-Schnittstelle.ASP.NET Core services use the ILogger interface for application logging. Um diese Anwendungsprotokolle in Azure Monitor verfügbar zu machen, übertragen Sie die ILogger-Ereignisse an Application Insights.To make these application logs available in Azure Monitor, send the ILogger events to Application Insights. Weitere Informationen finden Sie unter ILogger in einer ASP.NET Core-Anwendung.For more information, see ILogger in an ASP.NET Core application. Application Insights kann ILogger-Ereignissen Korrelationseigenschaften hinzufügen. Dies ist für die Visualisierung der verteilten Ablaufverfolgung nützlich.Application Insights can add correlation properties to ILogger events, useful for visualizing distributed tracing.

Weitere Informationen finden Sie unterFor more information, see:

Service Fabric-Integritäts- und EreignisdatenService Fabric health and event data

Service Fabric-Telemetrie enthält Integritätsmetriken und Ereignisse im Zusammenhang mit Betrieb und Leistung des Service Fabric-Clusters und seiner Entitäten: Knoten, Anwendungen, Dienste, Partitionen und Replikate.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.EventStore. Ein zustandsbehafteter Systemdienst, der Ereignisse im Zusammenhang mit dem Cluster und seinen Entitäten erfasst.A stateful system service that collects events related to the cluster and its entities. Service Fabric verwendet EventStore, um Service Fabric-Ereignisse zu schreiben und Informationen über Ihren Cluster bereitzustellen, und kann für Statusaktualisierungen, Problembehandlung und Überwachung verwendet werden.Service Fabric uses EventStore to write Service Fabric events to provide information about your cluster and can be used for status updates, troubleshooting, monitoring. Das Programm kann auch Ereignisse aus verschiedenen Entitäten zu einem bestimmten Zeitpunkt korrelieren, um Probleme im Cluster zu erkennen.It can also correlate events from different entities at a given time to identify issues in the cluster. Der Dienst macht diese Ereignisse über eine REST-API verfügbar.The service exposes those events through a REST API. Informationen zum Abfragen der EventStore-APIs finden Sie unter Abfragen von EventStore-APIs nach Clusterereignissen.For information about how to query the EventStore APIs, see Query EventStore APIs for cluster events. Sie können die Ereignisse aus EventStore in Log Analytics anzeigen, indem Sie Ihren Cluster mit der WAD-Erweiterung konfigurieren.You can view the events from EventStore in Log Analytics by configuring your cluster with WAD extension.
  • HealthStore.HealthStore. Bietet eine Momentaufnahme der aktuellen Integrität des Clusters.Provides a snapshot of the current health of the cluster. Ein zustandsbehafteter Dienst, der alle von Entitäten gemeldeten Integritätsdaten in einer Hierarchie aggregiert.A stateful service that aggregates all health data reported by entities in a hierarchy. Die Daten werden im Service Fabric Explorer visualisiert.The data is visualized in Service Fabric Explorer. HealthStore überwacht außerdem Anwendungsupgrades.The HealthStore also monitors application upgrades. Sie können Integritätsabfragen in PowerShell, einer .NET-Anwendung oder REST-APIs ausführen.You can use health queries in PowerShell, a .NET application, or REST APIs. Siehe Einführung in Service Fabric-Integritätsüberwachung.See, Introduction to Service Fabric health monitoring.
  • Erwägen Sie das Implementieren interner benutzerdefinierter Watchdog-Dienste.Consider implementing internal custom watchdog services. Diese Dienste können in regelmäßigen Abständen benutzerdefinierte Integritätsdaten wie fehlerhafte Status ausgeführter Dienste melden.Those services can periodically report custom health data such as faulty states of running services. Weitere Informationen finden Sie unter Benutzerdefinierte Integritätsberichte.For more information, see Custom health reports. Die Integritätsberichte können mithilfe von Service Fabric Explorer gelesen werden.You can read the health reports using the Service Fabric explorer.

Infrastrukturmetriken und -protokolleInfrastructure metrics and logs

Infrastrukturmetriken fördern das Verständnis der Ressourcenzuteilung im Cluster.Infrastructure metrics help you to understand resource allocation in the cluster. Es folgen die wichtigsten Optionen zum Sammeln dieser Informationen:Here are the main options for collecting this information:

  • Microsoft Azure-Diagnose für Windows (WAD).Windows Azure Diagnostics (WAD). Dient zum Sammeln von Protokollen und Metriken auf Knotenebene unter Windows.Collect logs and metrics at the node level on Windows. Sie können WAD verwenden, indem Sie die VM-Erweiterung „IaaSDiagnostics“ für jede VM-Skalierungsgruppe konfigurieren, die einem Knotentyp zugeordnet ist. Anschließend können Sie Diagnoseereignisse sammeln, wie z.B. Windows-Ereignisprotokolle, Leistungsindikatoren, System- und Betriebsereignisse für ETW/Manifeste sowie benutzerdefinierte Protokolle.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-Agent.Log Analytics agent. Konfigurieren Sie die VM-Erweiterung „MicrosoftMonitoringAgent“, um Windows-Ereignisprotokolle, Leistungsindikatoren und benutzerdefinierte Protokolle an Log Analytics zu senden.Configure the MicrosoftMonitoringAgent VM extension to send Windows event logs, performance counters, and custom logs to Log Analytics.

Es gibt einige Überschneidungen bei der Art der Metriken, die von den vorhergehenden Mechanismen gesammelt wurden, wie beispielsweise Leistungsindikatoren.There is some overlap in the type of metrics collected through the preceding mechanisms, such as performance counters. Wenn eine Überlappung vorliegt, wird der Log Analytics-Agent empfohlen.Where there is overlap, we recommend using the Log Analytics agent. Da es keinen Azure-Speicher für den Log Analytics-Agent gibt, kommt es zu einer geringen Latenz.Because there is no Azure storage for the Log Analytics agent, there is low latency. Außerdem lassen sich die Leistungsindikatoren in „IaaSDiagnostics“ nicht einfach in Log Analytics einlesen.Also, the performance counters in IaaSDiagnostics cannot be fed into Log Analytics easily.

Infrastrukturüberwachung in Service Fabric

Informationen zu VM-Erweiterungen finden Sie unter Erweiterungen und Features für virtuelle Azure-Computer.For information about using VM extensions, see Azure virtual machine extensions and features.

Um die Daten anzuzeigen, konfigurieren Sie Log Analytics so, dass die über WAD erfassten Daten angezeigt werden.To view the data, configure Log Analytics to view the data collected through WAD. Informationen zum Konfigurieren von Log Analytics zum Lesen von Ereignissen aus einem Speicherkonto finden Sie unter Einrichten von Log Analytics für einen Cluster.For information about how to configure Log Analytics to read events from a storage account, see Set up Log Analytics for a cluster.

Sie können auch Leistungsprotokolle und Telemetriedaten im Zusammenhang mit einem Service Fabric-Cluster, Workloads, Netzwerkdatenverkehr, anstehenden Updates und mehr anzeigen.You can also view performance logs and telemetry data related to a Service Fabric cluster, workloads, network traffic, pending updates, and more. Siehe Leistungsüberwachung mit Log Analytics.See Performance Monitoring with Log Analytics.

Die Dienstzuordnungslösung in Log Analytics bietet Informationen zur Topologie des Clusters (d.h. den Prozessen, die auf den einzelnen Knoten ausgeführt werden).Service Map solution in Log Analytics provides information about the topology of the cluster (that is, the processes running in each node). Übertragen Sie die Daten im Speicherkonto an Application Insights.Send the data in the storage account to Application Insights. Es gibt möglicherweise eine Verzögerung beim Abrufen von Daten in Application Insights.There might be some delay in getting data into Application Insights. Wenn Sie die Daten in Echtzeit sehen möchten, sollten Sie Event Hub mit Senken und Kanälen konfigurieren.If you want to see the data real time, consider configuring Event Hub using sinks and channels. Weitere Informationen finden Sie unter Ereignisaggregation und -sammlung mit der Windows Azure-Diagnose.For more information, see Event aggregation and collection using Windows Azure Diagnostics.

Metriken abhängiger Dienste.Dependent service metrics

  • Die Anwendungsübersicht zu Application Insights zeigt die Topologie der Anwendung unter Verwendung von HTTP-Abhängigkeitsaufrufen zwischen Diensten mit dem installierten Application Insights SDK.Application Insights Application Map provides the topology of the application by using HTTP dependency calls made between services, with the installed Application Insights SDK.
  • Die Dienstzuordnungslösung in Log Analytics bietet Informationen zum ein- und ausgehenden Datenverkehr externer Dienste.Service Map solution in Log Analytics provides information about inbound and outbound traffic from/to external services. Darüber hinaus lässt sich die Dienstzuordnung in andere Lösungen wie Updates oder Sicherheit integrieren.In addition, Service Map integrates with other solutions such as updates or security.
  • Benutzerdefinierte Watchdogs können zum Melden von Fehlerbedingungen in externen Diensten verwendet werden.Custom watchdogs can be used to report error conditions on external services. Der Dienst kann beispielsweise einen Bericht zu Integritätsfehlern melden, wenn er nicht auf einen externen Dienst oder Datenspeicher (Azure Cosmos DB) zugreifen kann.For example, the service could report an error health report if it cannot access an external service or data storage (Azure Cosmos DB).

Verteilte AblaufverfolgungDistributed tracing

In der Microservices-Architektur nehmen oft mehrere Dienste an der Erledigung einer Aufgabe teil.In microservices architecture, several services often participate to complete a task. Die Telemetriedaten von jedem dieser Dienste wird mithilfe von Kontextfeldern (Vorgangs-ID, Anforderungs-ID usw.) in einer verteilten Ablaufverfolgung korreliert.The telemetry from each of those services is correlated by using context fields (operation ID, request ID, and so forth) in a distributed trace. Mithilfe der Anwendungszuordnung in Application Insights können Sie die Ansicht des verteilten logischen Betriebs erstellen und den gesamten Dienstgraphen Ihrer Anwendung visualisieren.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. Sie können auch die Transaktionsdiagnose in Application Insight verwenden, um serverseitige Telemetrie zu korrelieren.You can also use transaction diagnostics in Application Insight to correlate server-side telemetry. Weitere Informationen finden Sie unter Einheitliche komponentenübergreifende Transaktionsdiagnose.For more information, see Unified cross-component transaction diagnostics.

Die Application Insights-Anwendungsübersicht zeigt die Topologie der Anwendung unter Verwendung von HTTP-Abhängigkeitsaufrufen zwischen Diensten mit dem installierten Application Insights SDK.Application Insights Application Map provides the topology of the application by using HTTP dependency calls made between services, with the installed Application Insights SDK. Es ist auch wichtig, Aufgaben zu korrelieren, die asynchron mithilfe einer Warteschlange verteilt werden.It’s also important to correlate tasks that are dispatched asynchronously using a queue. Weitere Informationen zum Senden korrelierter Telemetriedaten in eine Warteschlange finden Sie unter Warteschlangeninstrumentierung.For details about sending correlation telemetry in a queue message, see Queue instrumentation.

Weitere Informationen finden Sie unterFor more information, see:

Warnungen und DashboardsAlerts and Dashboards

Application Insights und Log Analytics unterstützen mit Kusto eine umfassende Abfragesprache, mit der Sie Protokolldaten abrufen und analysieren können.Application Insights and Log Analytics support an extensive query language (Kusto query language) that lets you retrieve and analyze log data. Verwenden Sie die Abfragen, um Datasets zu erstellen und in Diagnosedashboards zu visualisieren.Use the queries to create data sets and visualize it in diagnostics dashboards.

Verwenden Sie Azure Monitor-Warnungen, um Systemadministratoren zu benachrichtigen, wenn spezifische Bedingungen in bestimmten Ressourcen auftreten.Use Azure Monitor alerts to notify sysadmins when certain conditions occur in specific resources. Die Benachrichtigung kann eine E-Mail, eine Azure-Funktion, ein Aufruf eines Webhooks und dergleichen sein.The notification could be an email, Azure function, call a web hook, and so on. Weitere Informationen finden Sie unter Warnungen in Azure Monitor.For more information, see Alerts in Azure Monitor.

Warnungsregeln für die Protokollsuche ermöglichen Ihnen das Definieren und regelmäßige Anwenden einer Kusto-Abfrage auf einen Log Analytics-Arbeitsbereich.Log search alert rules allow you to define and run a Kusto query against a Log Analytics workspace at regular intervals. Eine Warnung wird erstellt, wenn das Ergebnis der Abfrage mit einer bestimmten Bedingung übereinstimmt.An alert is created if the query result matches a certain condition.

Bereitstellen der LösungDeploy the solution

Führen Sie die Schritte im GitHub-Repository aus, um die Referenzimplementierung für diese Architektur bereitzustellen.To deploy the reference implementation for this architecture, follow the steps in the GitHub repo.

Nächste SchritteNext steps