Om inställningen ImageStoreConnectionString

I en del av vår dokumentation nämner vi kort förekomsten av en "ImageStoreConnectionString"-parameter utan att beskriva vad det egentligen innebär. När du har gått igenom en artikel som Distribuera och ta bort program med PowerShell ser det ut som att allt du gör är att kopiera/klistra in värdet som visas i klustermanifestet för målklustret. Så inställningen måste vara konfigurerbar per kluster, men när du skapar ett kluster via Azure Portal finns det inget alternativ för att konfigurera den här inställningen och den är alltid "fabric:ImageStore". Vad är syftet med den här inställningen då?

Klustermanifest

Service Fabric började som en plattform för intern Microsoft-förbrukning av många olika team, så vissa aspekter av det är mycket anpassningsbara – "Image Store" är en sådan aspekt. Image Store är i princip en pluggbar lagringsplats för lagring av programpaket. När programmet distribueras till en nod i klustret laddar noden ned innehållet i programpaketet från Image Store. ImageStoreConnectionString är en inställning som innehåller all nödvändig information för både klienter och noder för att hitta rätt Image Store för ett visst kluster.

Det finns för närvarande tre möjliga typer av Image Store-providers och deras motsvarande anslutningssträngar är följande:

  1. Image Store Service: "fabric:ImageStore"

  2. Filsystem: "file:[file system path]"

  3. Azure Storage: "xstore:DefaultEndpointsProtocol=https; AccountName=[...]; AccountKey=[...]; Container=[...]"

Providertypen som används i produktion är Image Store-tjänsten, som är en tillståndskänslig beständig systemtjänst som du kan se från Service Fabric Explorer.

Image Store Service

Att vara värd för Image Store i en systemtjänst i själva klustret eliminerar externa beroenden för paketlagringsplatsen och ger oss mer kontroll över lagringslokaliteten. Framtida förbättringar i Image Store kommer sannolikt att riktas mot Image Store-providern först, om inte exklusivt. Anslutningssträngen för Image Store Service-providern har ingen unik information eftersom klienten redan är ansluten till målklustret. Klienten behöver bara veta att protokoll som är riktade mot systemtjänsten ska användas.

Filsystemprovidern används i stället för Image Store-tjänsten för lokala one-box-kluster under utveckling för att starta klustret något snabbare. Skillnaden är vanligtvis liten, men det är en användbar optimering för de flesta under utvecklingen. Det är möjligt att distribuera ett lokalt one-box-kluster med de andra lagringsprovidertyperna också, men det finns vanligtvis ingen anledning att göra det eftersom arbetsflödet för utveckling/testning förblir detsamma oavsett provider. Azure Storage-providern finns bara för äldre stöd för gamla kluster som distribuerats innan Image Store-tjänstprovidern introducerades.

Dessutom bör inte filsystemprovidern eller Azure Storage-providern användas som en metod för att dela ett avbildningslager mellan flera kluster. Detta leder till att klusterkonfigurationsdata skadas eftersom varje kluster kan skriva motstridiga data till Image Store. Om du vill dela etablerade programpaket mellan flera kluster använder du sfpkg-filer i stället, som kan laddas upp till alla externa arkiv med en nedladdnings-URI.

Så medan ImageStoreConnectionString kan konfigureras använder du bara standardinställningen. När du publicerar till Azure via Visual Studio anges parametern automatiskt åt dig. För programmatisk distribution till kluster som finns i Azure är anslutningssträngen alltid "fabric:ImageStore". Om du är osäker kan dess värde alltid verifieras genom att hämta klustermanifestet av PowerShell, .NET eller REST. Både lokala test- och produktionskluster bör alltid konfigureras för att även använda image store-tjänstprovidern.

Nästa steg

Distribuera och ta bort program med PowerShell