Blog

Ausführen von Windows Containern auf Azure Service Fabric

Loek Duys

Loek Duys

Aktualisiert Oktober 21, 2025
6 Minuten

Hintergrund

Seit der Veröffentlichung von Service Fabric Runtime Version 5.4.145 hat Microsoft eine (Vorschau-)Funktion zur Ausführung von Windows Containern auf Windows Server 2016 hinzugefügt. Jeder Linux-IT-Dienstleister kann Ihnen sagen, dass die Linux-Version dies bereits seit einer Weile unterstützt. Die Lösung von IT- und technischen Problemen wie diesen gehört zum Tagesgeschäft eines jeden Unternehmens. Deshalb ist es wichtig, einen guten technischen Supportpartner wie Netzen zu haben, der eine Reihe von proaktiven Supportverträgen für Unternehmen anbietet. Ich werde in einem anderen Beitrag alles über solche Dienste erklären. In diesem Beitrag erfahren Sie, warum Container nützlich sind und wie Sie sie zum Laufen bringen.

Was ist Service Fabric?

Die meisten Unternehmen haben eine Vielzahl von Anwendungen zu betreiben und verfügen in der Regel über mehrere überdimensionierte Server, auf denen sie laufen. Service Fabric verbindet mehrere Server miteinander, kombiniert mit einigen cleveren Mechanismen zur Optimierung der Nutzung der zugrunde liegenden Ressourcen. Service Fabric ist eine Plattform, die verteilte Anwendungen hostet. Sie wird verwendet, um paketierte Anwendungen darauf auszuführen. Sie teilen ihr einfach mit, dass Sie Ihre Anwendung ausführen möchten, und Service Fabric kümmert sich um die Platzierung, die Zustandsüberwachung, die Neuverteilung der Anwendungen auf der Grundlage ihres Ressourcenverbrauchs und um Anwendungs-Upgrades.

SDK

Service Fabric wird auch mit einem SDK geliefert, das für die Erstellung von Microservices-Anwendungen verwendet werden kann.

Container

Viele Anwendungen gemeinsam auf einer Reihe von Rechnern auszuführen, klingt großartig, bringt aber auch einige Probleme mit sich. Was ist zum Beispiel, wenn eine der Anwendungen den gesamten verfügbaren Arbeitsspeicher verbraucht? Oder was ist, wenn Sie Anwendungen ausführen möchten, die auf unterschiedliche Versionen des .NET Frameworks abzielen? Was ist, wenn Ihre Anwendung auf IIS läuft, aber IIS nicht auf Ihren Servern installiert ist. Wäre es nicht schön, wenn Sie diese Anwendung zusammen mit ihren Abhängigkeiten in einer Box unterbringen könnten, ohne dass sich die Boxen gegenseitig bemerken?
Nun Sie können, indem Sie Container verwenden. Container kapseln und isolieren Anwendungen und ihre Voraussetzungen. Jeder Container hat seine eigene isolierte Ansicht des zugrunde liegenden Betriebssystems. Änderungen, die innerhalb eines Containers vorgenommen werden, sind außerhalb des Containers nicht sichtbar. Diese Isolierung wird durch Optionen zur Steuerung des Ressourcenverbrauchs ergänzt. Ähnlich wie bei virtuellen Maschinen kann die Menge an Arbeitsspeicher oder CPU-Leistung, die einem Container zugewiesen wird, eingeschränkt werden. Der Hauptunterschied besteht darin, dass in Containern das Betriebssystem gemeinsam genutzt wird. Dadurch lassen sich Container sehr schnell starten.
Ein weiterer großer Vorteil ist, dass sie - aufgrund der Virtualisierung - portabel sind. Sie können einen Windows Container auf einen beliebigen Windows Server 2016-Host verschieben, auf dem die Container-Funktion installiert ist, und ihn dort ausführen.
Eine zusätzliche Funktion von Windows Server 2016 sind Hyper-V Container. Diese werden auf speziellen virtuellen Maschinen mit eigenem Betriebssystem ausgeführt, um ein noch höheres Maß an Isolation zu gewährleisten.

Container auf Service Fabric

Gegenwärtig können Sie Container nur als ausführbare Gastprogramme starten. Das bedeutet, dass Sie keine zustandsbehafteten/zustandslosen zuverlässigen Dienste und Akteure erstellen und diese innerhalb von Windows Containern ausführen können. noch nicht. Die Funktion befindet sich in der Vorschau.

Hands On

Lassen Sie uns jetzt einen Cluster erstellen und IIS innerhalb eines Windows-Containers ausführen!

Einen Cluster erstellen

Um einen Service Fabric-Cluster zu erstellen, der Container ausführen kann, müssen Sie eine ARM-Vorlage verwenden. Das Portal erlaubt es Ihnen noch nicht, die Virtual Machine SKU '2016-Datacenter-with-Containers' auszuwählen. Es ist ganz einfach, Ihre Einrichtung im Azure-Portal zu konfigurieren und dann die Vorlage herunterzuladen und einige Änderungen vorzunehmen.
Stellen Sie sicher, dass Sie den Port 80 für die Testanwendung öffnen, die wir später erstellen werden!

Parameter

Fügen Sie in der parameters.json hinzu:
"vmImageOffer": {
"Wert": "WindowsServer"
},
"vmImageSku": {
"Wert": "2016-Datacenter-mit-Containern"
},
"vmImageVersion": {
"Wert": "spätestens"
},
Dadurch verwenden Ihre Virtual Machine Scale Set-Maschinen Windows Server 2016 mit der konfigurierten Funktion Windows Containers.

Vorlage

Fügen Sie in der template.json unter dem Profil der virtuellen Maschine hinzu:
"NicPrefixOverride": "10.0.0"
Es sieht also ähnlich aus wie hier:
"Einstellungen": {
"clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]",
"nodeTypeRef": "[parameters('vmNodeType0Name')]",
"dataPath": "D:SvcFab",
"durabilityLevel": "Bronze",
"NicPrefixOverride": "10.0.0"
},
Wenn Sie die SKU "2016-Datacenter-mit-Containern" auswählen, erhalten Sie mehrere Netzwerkschnittstellen auf Ihren virtuellen Maschinen. Dies stellt sicher, dass die richtige Netzwerkkarte für die Clusterkommunikation verwendet wird.
Sobald die Bereitstellung abgeschlossen ist, sollten Sie einen funktionierenden Cluster haben. Während Sie darauf warten, beginnen Sie mit der Erstellung der Anwendung.

Erstellen Sie eine Service Fabric-Anwendung

Jetzt ist es an der Zeit, eine Service Fabric-Anwendung zu erstellen, die einen Windows-Container ausführt. Die neuesten Versionen des Service Fabric SDK enthalten eine Projektvorlage, mit der dies sehr einfach ist. Erstellen Sie ein neues Projekt unter Verwendung der Projektvorlage Guest Container (Preview).
Geben Sie den Namen des Images (aus Docker Hub) ein, das Sie ausführen möchten. Ich habe das Image 'loekd/iis' ausgewählt, auf dem Microsoft IIS läuft und das Port 80 freigibt. Lassen Sie uns das Projekt "MyContainerService" nennen.
Um eine Interaktion mit Ihrem Container zu ermöglichen, müssen Sie wissen, dass das Image explizit einen Port freigeben und einen Prozess haben muss, der auf diesem Port innerhalb des Containers lauscht.
Wenn die Service Fabric-Anwendung erstellt ist, öffnen Sie die Datei 'ServiceManifest.xml', um zusätzliche Befehle für Ihr Image bereitzustellen.
Um zum Beispiel die PowerShell innerhalb des Containers zu starten, fügen Sie im Knoten ContainerHost hinzu:
powershell
Es sieht also folgendermaßen aus:
loekd/iis
powershell
Lassen Sie uns nun den exponierten Port 80 für den HTTP-Verkehr aus dem Internet freigeben. Fügen Sie im Knoten Ressourcen hinzu:
.. Es sieht also folgendermaßen aus:
Öffnen Sie die Datei 'ApplicationManifest.xml' und fügen Sie innerhalb des Knotens 'ServiceManifestImport' hinzu:
IISContainerServiceTypeEndpoint"/>
Es sieht also folgendermaßen aus:
  • Beachten Sie, dass der Name des Endpunkts aus dem Dienstmanifest mit dem Namen des Attributs EndpointRef im Knoten PortBinding übereinstimmt.
  • Beachten Sie auch, dass der Wert des Attributs CodePackageRef mit dem Namen des Knotens CodePackage im Servicemanifest übereinstimmt.

Veröffentlichen Sie Ihre Anwendung

Wenn Ihr Cluster erstellt wurde, können Sie nun Ihre Anwendung darauf verteilen.
Klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie 'Veröffentlichen'. Geben Sie die Endpunktadresse der Client-Verbindung Ihres Clusters ein und klicken Sie auf 'Veröffentlichen'.

Navigieren Sie nun zum Service Fabric Explorer (dieselbe URL, aber Port 19080), um die laufende Bereitstellung zu sehen.

Sie werden feststellen, dass es beim ersten Mal ziemlich lange dauert, bis die Windows Containers gestartet werden. Das liegt daran, dass das Image auf Windows Server Core basiert und etwa 8 GB heruntergeladen werden müssen. Je nach Größe Ihrer VM kann dies ein paar Minuten dauern. Das zweite Mal, wenn Sie einen Container starten, ist eine Sache von Sekunden.
Wenn die Service-Instanzen "Bereit" anstelle von "In Bau" melden, sind sie einsatzbereit.
Navigieren Sie mit einem Browser zum DNS-Namen Ihres Clusters an Port 80.
Das sollten Sie sich ansehen:
Herzlichen Glückwunsch! Sie führen jetzt IIS innerhalb eines Windows-Containers auf Azure Service Fabric aus!
Mit dieser Strategie können Sie Ihre Legacy-Anwendungen in Ihren Azure Service Fabric-Cluster verschieben und sie Seite an Seite mit Ihren brandneuen Microservices betreiben. Sie müssen nicht mehr zwei separate Cluster unterhalten.

Links

ARM-Vorlage für einen Test-Cluster mit Unterstützung von Windows Containern MSDN-Artikel über Container in Service Fabric IIS-Abbild auf Docker Hub

Verfasst von

Loek Duys

Cloud software architecture

Contact

Let’s discuss how we can support your journey.