Upload
others
View
20
Download
0
Embed Size (px)
Citation preview
Bye, Bye InfrastructureMicroservices mit Service Fabric Mesh
Tobias Meier, BridgingIT GmbH
Bilder: www.dreamstime.com
Logos: Jeweilige Hersteller
26.09.2018 BASTA!
Wir bringen Dinge zusammen
„
Standort Heidelberg
Berliner Straße 41
69120 Heidelberg
Standort Nürnberg
Königtorgraben 11
90402 Nürnberg
Standort Mannheim
N7, 5-6
68161 Mannheim
Standort Karlsruhe
Rüppurrer Straße 4
76137 Karlsruhe
Standort Stuttgart
Marienstraße 17
70178 Stuttgart
Standort München
Riesstraße 12
80992 München
Standort Frankfurt
Solmsstraße 4
60486 Frankfurt
Standort Köln
Martinstraße 3
50667 Köln
Copyright © BridgingIT GmbH | Autor: Tobias Meier | September 2018 | www.bridging-it.de
Lead Softwarearchitekt Microsoft
http://blog.bridging-it.de/author/Tobias.Meier [email protected] @bitTobiasMeier
Tobias Meier
Agenda1. Status Quo
2. Kurzer Überblick
3. Service Fabric Mesh
im Detail
4. Ausblick
Azure
Service Fabric
Microservice Microservice Guest Executable
Reliable Actor API Reliable Service API
Service Fabric
On-Premise
Microservice Microservice
Naming Service
Failover Manager
Resource Balancer
Replicator
Health Manager
Cluster Manager
Image Store Hosting
Transport
Testability
Communication
Federation
System services
Eigenes
Rechenzentrum
Beliebige Cloud-
Anbieter
Azure
Service Fabric
Microservice Microservice Guest Executable
Reliable Actor API Reliable Service API
Service Fabric
On-Premise
Microservice Microservice
Naming Service
Failover Manager
Resource Balancer
Replicator
Health Manager
Cluster Manager
Image Store Hosting
Transport
Testability
Communication
Federation
System services
Eigenes
Rechenzentrum
Beliebige Cloud-
Anbieter
Betreuungs-aufwand
Betreuungs-aufwand
Service Fabric as a Service:
Service Fabric Mesh
▪Serverlose Infrastruktur
▪Skalierung bei Bedarf
▪Programmiersprachen-unabhängig
• Entwicklung von Microservices
▪Sekundengenaue Abrechnung
▪ Lifecycle Management
▪ Intelligent traffic routing
▪Verwaltung von Microservices und Containern
ServerlessExplizites Cluster - Management
Service Fabric Service Fabric Mesh
Bring your own infrastructure Azure Infrastructure „As A Service“
Schon wieder etwas Neues ?
Service Fabric Mesh setzt auf Service Fabric auf !
Service Fabric
Service Fabric Mesh
Entwicklungsumgebung vorbereiten
▪ Visual Studio 2017 (15.6 oder neuer) bzw. VS Code
▪ Docker (Hyper V muss aktiviert sein)
▪ Service Fabric Mesh SDK
▪ Visual Studio Service Fabric Tools Preview
▪ Regionale Settings auf “Englische Lokale” umstellen
▪ Cluster manuell einrichten
▪ ./DevClusterSetup.ps1 -UseMachineName -CreateOneNodeCluster
Achtung: Nach jedem Wechsel der IP-Adresse muss der Cluster neu eingerichtet werden!
VS Code-Extension
▪ npm install -g yo
▪ npm install -g generator-azuresfmesh
▪Visual Studio Code Extension installieren
Entwicklungsumgebung vorbereiten
▪ Visual Studio 2017 (15.6 oder neuer)
▪ Docker (Hyper V muss aktiviert sein)
▪ Service Fabric Mesh SDK
▪ Visual Studio Service Fabric Tools Preview
▪ Regionale Settings auf “Englische Lokale” umstellen
▪ Cluster manuell einrichten
▪ ./DevClusterSetup.ps1 -UseMachineName -CreateOneNodeCluster
Achtung: Nach jedem Wechsel der IP-Adresse muss der Cluster neu eingerichtet werden!
Empfehlung: Windows Server 2016
Install-Module -Name DockerMsftProvider -Repository PSGallery –ForceInstall-Package -Name docker -ProviderName DockerMsftProviderRestart-Computer -Force Sconfig// 6 auswählen
Service Fabric Resources
Service Fabric /
Service Fabric Mesh
Resources
• Applikation / Dienste
• Netzwerk
• Laufwerke
• Routing-Regeln
• Secrets
• Skalierungs-Regeln
YAML / JSON
deployment.json
Service Fabric Resources
Service Fabric /
Service Fabric Mesh
Resources
• Applikation / Dienste
• Netzwerk
• Laufwerke
• Routing-Regeln
• Secrets
• Skalierungs-Regeln
YAML / JSON
deployment.json
Container
Service Fabric Resources
YAML / JSON
Service Fabric Bibliotheken• Reliable Collection• Local H/A Storage (Asp.Net Core only)• SF API Client
18
Service Fabric Application Models
Native Model
▪Manifest-Dateien
▪ Prozesse und Container
▪ .Net / Java
▪ Statefull, Stateless, Actor Services.
Docker Compose
▪Docker-Container in Service Fabric
▪Minimale Service Fabric-Integration
Resource Model
▪Yaml /Json
▪Container
▪ Lose gekoppelt
Service Fabric Application Models
Native Model
Resource-Model
Docker Compose
Local Any Cloud On-Prem Azure Mesh
Mesh in Azure erzeugen: Visual Studio
Mesh in Azure erzeugen: Azure CLI 1/2
▪Extension hinzufügen / aktualisieren:▪ az extension add --name mesh
▪ az extension update --name mesh
▪Deployment über URL (Bash-Syntax)▪ az mesh deployment create --resource-group myResourceGroup--template-urihttps://sfmeshsamples.blob.core.windows.net/templates/voting/mesh_rp.windows.json --parameters "{\"location\": {\"value\": \"westeurope\"}}"
Mesh in Azure erzeugen: Azure CLI 2/2
▪Deployment über lokales Template
az mesh deployment create --resource-group myResourceGroup--template-file merged-arm.json –parameters @myparams.json
Mesh in Azure erzeugen: Fallstricke
Passwort für Container-Registry muss angegeben werden: myparams.json
{"$schema": "https://schema.management.azure.com/schemas/2015-01-
01/deploymentParameters.json#","contentVersion": "1.0.0.0","parameters": {
"registryPassword": {"value": "xytXYmEHzxaa=7d4TvVvVvtvhde23bU"
}}
}
Wie lautet die Adresse ?
az mesh network list
Wie lautet die Adresse ?
az mesh network list
Service.yaml
## Service definition ##application:schemaVersion: 1.0.0-preview1name: BASTA2018SFMeshDemoproperties:services:- name: RestaurantService
properties:description: RestaurantService…osType: WindowscodePackages:- name: RestaurantServiceimage: restaurantservice:devendpoints:- name: RestaurantServiceListener
port: 20004
environmentVariables:- name: ASPNETCORE_URLSvalue: http://+:20004
resources:requests:cpu: 0.5memoryInGB: 1
replicaCount: 1networkRefs:- name: BASTA2018DemoNetwork
Service.yaml
## Service definition ##application:schemaVersion: 1.0.0-preview1name: BASTA2018SFMeshDemoproperties:services:- name: RestaurantService
properties:description: RestaurantService…osType: WindowscodePackages:- name: RestaurantServiceimage: restaurantservice:devendpoints:- name: RestaurantServiceListener
port: 20004
environmentVariables:- name: ASPNETCORE_URLSvalue: http://+:20004
resources:requests:cpu: 0.5memoryInGB: 1
replicaCount: 1networkRefs:- name: BASTA2018DemoNetwork
Keine Tabs erlaubt, nur Spaces
Visual Studio: Edit | Advanced | View White Space
Network.yaml
## Network definition ##network:schemaVersion: 1.0.0-preview1name: BASTA2018DemoNetworkproperties:
description:BASTA2018DemoNetwork description.
addressPrefix: 10.0.0.4/22
ingressConfig:layer4:
- name: PortalIngresspublicPort: 20009applicationName:
BASTA2018SFMeshDemoserviceName: PortalendpointName:
PortalListener
Network.yaml
## Network definition ##network:schemaVersion: 1.0.0-preview1name: BASTA2018DemoNetworkproperties:
description:BASTA2018DemoNetwork description.
addressPrefix: 10.0.0.4/22
ingressConfig:layer4:
- name: PortalIngresspublicPort: 80applicationName:
BASTA2018SFMeshDemoserviceName: PortalendpointName:
PortalListener
Service skalieren
az mesh deployment create --resource-group visualdemob1 --template-urihttps://sfmeshsamples.blob.core.windows.net/templates/visualobjects/mesh_rp.scaleout.linux.json --parameters "{\"location\": {\"value\": \"westeurope\"}}"
Service skalieren
az mesh deployment create --resource-group visualdemob1 --template-urihttps://sfmeshsamples.blob.core.windows.net/templates/visualobjects/mesh_rp.scaleout.linux.json --parameters "{\"location\": {\"value\": \"westeurope\"}}"
Offizielles Microsoft Beispiel:
https://github.com/Azure-Samples/service-
fabric-mesh/tree/master/src/visualobjects
Anleitung:
https://docs.microsoft.com/en-
us/azure/service-fabric-mesh/service-fabric-
mesh-howto-app-scale-out
Ignite 2018: Auto Scaling
autoScalingPolicies: [{"name": "MyAutoscaleRule1","trigger": {
"kind": "AverageLoad","metric": {
"kind": "Resource","name": "cpu",
},"lowerLoadThreshold": 0.3,"upperLoadThreshold": 0.5,"scaleIntervalInSeconds": 10},
"mechanism": {"kind": "AddRemoveReplica","minCount": 1,"maxCount": 100,"scaleIncrement": 10}
}]
Video von Microsoft:
https://youtu.be/-6qds7KSeC0
Routing
▪Plattformunabhängige Namensauflösung
▪Unterstützung für ▪ Retries
▪ Circuit Breaker-Pattern (dt. Sicherung)
▪ Throttling
Netzwerk
Service 3Service 2
Routing (in der Preview noch nicht vorhanden)
Service 1
Proxy Proxy Proxy
Proxy Routing-
Resource.yaml
Volume Resource
Service
Service FabricVolume Disk
Azure File Storage Volume
Re
pliz
iert
Volume.yaml
## Volume definition ##volume:schemaVersion: 1.0.0-preview1name: BASTA2018SFMeshDemoVolumeproperties:description: Azure Volumeprovider: SFAzureFileazureFileParameters:shareName: "[parameters('azurefile-shareName')]"accountName: "[parameters('azurefile-accountName')]"accountKey: "[parameters('azurefile-accountKey')]"
Offizielles Microsoft Beispiel:
https://github.com/Azure-Samples/
service-fabric-mesh/tree/master/src/counter
Anleitung:
https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/service-fabric-
mesh/service-fabric-mesh-howto-deploy-app-azurefiles-volume.md
Microsoft Ignite 2018: Statefulness
• NuGet-Packages für .Net Core und Library für Java
• Replikation erfolgt über ein Service Fabric Volume
Service Package
Reliable Collection
Service Package
Reliable Collection
Service Fabric Volume
Microsoft Ignite 2018: Secrets
Service
Secr
ets,
Cer
tifi
cate
s
Unterstützung von HTTPS-Endpoints in Mesh!
Einschränkungen der Preview
▪Max. 5 Applikationen
▪Max 5 Netzwerk und Ingress-Endpunkte
▪Max 10 Azure-Volumen
▪Max 3 Replikas
▪Max 16 GB RAM pro Container
▪Max. 48 GB RAM pro Applikation
▪Max 12 cores pro Applikation
▪Max 4 Cores pro Container
Roadmap
Kurzfristig:
▪ Reliable Collections
▪ Service Fabric volume driver
▪ Secrets (Key Vault)
▪ Network (Erweiterung)
▪ Gateway
▪ Autoscale
▪ Erweitertes Tooling in VS.Net
▪ Maven-Unterstützung
Weitere Roadmap:
▪Version 1.0
Beispiele des Vortrags und Folien
▪ http://blog.bridging-it.de/author/Tobias.Meier
▪ https://github.com/bitTobiasMeier/basta2018mesh
Ab 27.09.2018
Nächste Schritte
▪Übersicht: https://docs.microsoft.com/de-de/azure/service-fabric-mesh/service-fabric-mesh-overview
▪Dokumentation: https://docs.microsoft.com/de-de/azure/service-fabric-mesh/
▪Beispiele von Microsoft:https://github.com/Azure-Samples/service-fabric-mesh
Blog: http://blog.bridging-it.de/author/Tobias.Meier
Email: [email protected]
Twitter: @bITTobiasMeier