Azure Service Fabric için bir Azure Cloud Services uygulamasını geçirmeMigrate an Azure Cloud Services application to Azure Service Fabric
Bu makalede bir uygulamayı Azure Cloud Services'tan Azure Service Fabric'e geçirme açıklanmaktadır.This article describes migrating an application from Azure Cloud Services to Azure Service Fabric. Bu mimari kararları odaklanır ve önerilen uygulamalar.It focuses on architectural decisions and recommended practices.
Bu proje için Surveys adlı bir Cloud Services uygulaması ile çalışmaya ve Service Fabric'e verilir.For this project, we started with a Cloud Services application called Surveys and ported it to Service Fabric. Hedef uygulama birkaç değişiklik ile mümkün olduğunca geçirmek oldu.The goal was to migrate the application with as few changes as possible. Bir sonraki makalede, bir mikro hizmet mimarisini benimsemenin tarafından size uygulamayı Service Fabric için iyileştirir.In a later article, we will optimize the application for Service Fabric by adopting a microservices architecture.
Bu makalede okumadan önce Service Fabric ve mikro hizmet mimarileri temelleri genel anlama konusunda yararlı olacaktır.Before reading this article, it will be useful to understand the basics of Service Fabric and microservices architectures in general. Aşağıdaki makalelere bakın:See the following articles:
- Azure Service Fabric'e genel bakışOverview of Azure Service Fabric
- Neden mikro hizmetler yaklaşımı uygulamaları oluşturmak için?Why a microservices approach to building applications?
Surveys uygulaması hakkındaAbout the Surveys application
2012'de desenler ve uygulamalar grubu oluşturulan bir uygulama olarak adlandırılan bir kitap için Surveys adlı bulut çok kiracılı uygulamalar geliştirme.In 2012, the patterns & practices group created an application called Surveys, for a book called Developing Multi-tenant Applications for the Cloud. Kitap tasarlayan ve uygulayan Surveys uygulamasını Tailspin adlı kurgusal bir şirkette açıklar.The book describes a fictitious company named Tailspin that designs and implements the Surveys application.
Anketler, anketler oluşturmasına olanak tanır bir çok kiracılı uygulamasıdır.Surveys is a multitenant application that allows customers to create surveys. Uygulama için bir müşteri kaydolursa sonra Müşteri'nin kuruluş oluşturabilir ve anketler yayımlama ve analiz sonuçlarını topla.After a customer signs up for the application, members of the customer's organization can create and publish surveys, and collect the results for analysis. Uygulama, kişilerin bir anket nerede sürebilir genel bir Web sitesi içerir.The application includes a public website where people can take a survey. Özgün Tailspin senaryosu hakkında daha fazla bilgiyi burada.Read more about the original Tailspin scenario here.
Artık Tailspin Surveys uygulaması bir mikro hizmet mimarisi için taşımak Azure'da çalışan Service Fabric kullanarak istiyor.Now Tailspin wants to move the Surveys application to a microservices architecture, using Service Fabric running on Azure. Uygulama zaten bir Cloud Services uygulaması olarak dağıtıldığından, birden çok aşamalı bir yaklaşım Tailspin alır:Because the application is already deployed as a Cloud Services application, Tailspin adopts a multi-phase approach:
- Service Fabric, bulut hizmetlerine bağlantı noktası uygulama değişiklikleri en aza indirir.Port the cloud services to Service Fabric, while minimizing changes to the application.
- Uygulama için Service Fabric, mikro hizmet mimarisi için taşıyarak iyileştirin.Optimize the application for Service Fabric, by moving to a microservices architecture.
Bu makalede, ilk aşamasını açıklar.This article describes the first phase. Bir sonraki makalede ikinci aşaması açıklanmıştır.A later article will describe the second phase. Bir gerçek projesinde her iki aşama çakışır olasıdır.In a real-world project, it's likely that both stages would overlap. Service Fabric için taşıma sırasında aynı zamanda mikro hizmetler halinde uygulama mimarisini yeniden tasarlama başlar.While porting to Service Fabric, you would also start to re-architect the application into micro-services. Daha sonra belki de küçük hizmetler parçalı Hizmetleri bölme mimarisi daha da daraltmak.Later you might refine the architecture further, perhaps dividing coarse-grained services into smaller services.
Uygulama kodu kullanılabilir GitHub.The application code is available on GitHub. Bu depo, hem Cloud Services uygulamasına hem de Service Fabric sürümü içerir.This repo contains both the Cloud Services application and the Service Fabric version.
Bulut hizmeti olan özgün uygulamanın güncelleştirilmiş sürümünü çok kiracılı uygulamalar geliştirme rehberi.The cloud service is an updated version of the original application from the Developing Multi-tenant Applications book.
Neden mikro hizmetler?Why Microservices?
Bu makalenin kapsamı dışındadır mikro hizmetler ilgili ayrıntılı bir tartışma olduğu halde bir mikro hizmet mimarisi için taşıyarak almak için Tailspin planlamaktadır avantajlarından bazıları şunlardır:An in-depth discussion of microservices is beyond scope of this article, but here are some of the benefits that Tailspin hopes to get by moving to a microservices architecture:
- Uygulama yükseltmeleri.Application upgrades. Uygulama yükseltme için artımlı bir yaklaşım olabilmesi için hizmetler bağımsız olarak dağıtılabilir.Services can be deployed independently, so you can take an incremental approach to upgrading an application.
- Dayanıklılık ve hataya yalıtım.Resiliency and fault isolation. Bir hizmet başarısız olursa, diğer hizmetlerin çalışmaya devam eder.If a service fails, other services continue to run.
- Ölçeklendirilebilirlik.Scalability. Hizmetler bağımsız olarak ölçeklendirilebilir.Services can be scaled independently.
- Esneklik.Flexibility. Hizmetleri iş senaryolarını değil Hizmetleri'ni geçirmek için yeni teknolojileri, çerçeveleri veya veri depolarını kolaylaştıran teknoloji yığınları geçici olarak tasarlanmıştır.Services are designed around business scenarios, not technology stacks, making it easier to migrate services to new technologies, frameworks, or data stores.
- Çevik Geliştirme.Agile development. Tek başına hizmetlerinden tek parça bir uygulamayı daha az kod sahip, anlamak, nedeni hakkında ve test kodu daha kolay temel yapma.Individual services have less code than a monolithic application, making the code base easier to understand, reason about, and test.
- Küçük, odaklanmış takımlar.Small, focused teams. Uygulama çok sayıda küçük hizmetler bölünmüştür çünkü her hizmet küçük odaklanmış ekibi tarafından oluşturulabilir.Because the application is broken down into many small services, each service can be built by a small focused team.
Service Fabric neden?Why Service Fabric?
Service Fabric mikro hizmet mimarisi, uygun olduğundan dağıtılmış bir sistemde gereken özelliklerin çoğunu dahil olmak üzere Service Fabric oluşturulur:Service Fabric is a good fit for a microservices architecture, because most of the features needed in a distributed system are built into Service Fabric, including:
- Küme yönetimi.Cluster management. Service Fabric düğüm yük devretme, sistem durumu izleme ve diğer küme yönetimi işlevleri otomatik olarak işler.Service Fabric automatically handles node failover, health monitoring, and other cluster management functions.
- Yatay ölçeklendirme.Horizontal scaling. Bir Service Fabric kümesine düğüm ekleme, yeni düğümler arasında Hizmetleri dağıtılır olarak uygulama otomatik olarak, ölçeklenir.When you add nodes to a Service Fabric cluster, the application automatically scales, as services are distributed across the new nodes.
- Hizmet bulma.Service discovery. Service Fabric adlandırılmış bir hizmet için uç noktayı çözümleyebilen bir bulma hizmeti sağlar.Service Fabric provides a discovery service that can resolve the endpoint for a named service.
- Durum bilgisiz ve durum bilgisi olan hizmetler.Stateless and stateful services. Durum bilgisi olan hizmetler kullanım güvenilir koleksiyonlar, bir önbellek ya da kuyruğa yerini alabilir ve bölümlenebilir.Stateful services use reliable collections, which can take the place of a cache or queue, and can be partitioned.
- Uygulama Yaşam Döngüsü Yönetimi.Application lifecycle management. Hizmetler bağımsız olarak ve uygulama kapalı kalma süresi olmadan yükseltilebilir.Services can be upgraded independently and without application downtime.
- Hizmet, orchestration makine kümesi arasında.Service orchestration across a cluster of machines.
- Yüksek yoğunluklu kaynak tüketimi iyileştirmek için.Higher density for optimizing resource consumption. Tek bir düğüm, birden çok hizmeti barındırabilir.A single node can host multiple services.
Service Fabric, Azure SQL veritabanı, Cosmos DB, Azure Event Hubs ve diğerleri dahil olmak üzere çeşitli Microsoft Hizmetleri tarafından dağıtılan bulut uygulamaları oluşturmaya yönelik bir platforma yapmadan kullanılır.Service Fabric is used by various Microsoft services, including Azure SQL Database, Cosmos DB, Azure Event Hubs, and others, making it a proven platform for building distributed cloud applications.
Service Fabric ile bulut hizmetlerini karşılaştırmaComparing Cloud Services with Service Fabric
Aşağıdaki tabloda bazı Cloud Services ve Service Fabric uygulamaları arasındaki önemli farklar özetlenmektedir.The following table summarizes some of the important differences between Cloud Services and Service Fabric applications. Daha ayrıntılı bir tartışma için bkz. geçirmeden önce Cloud Services ve Service Fabric arasındaki farklar hakkında bilgi edinin uygulamaları.For a more in-depth discussion, see Learn about the differences between Cloud Services and Service Fabric before migrating applications.
|Cloud ServicesCloud Services||Service FabricService Fabric|
|Uygulama yapısıApplication composition||RollerRoles||HizmetlerServices|
|YoğunlukDensity||VM başına bir rol örneğiOne role instance per VM||Tek bir düğüm içindeki birden çok hizmetMultiple services in a single node|
|Minimum düğüm sayısıMinimum number of nodes||Rol başına 22 per role||Üretim dağıtımları için Küme başına 55 per cluster, for production deployments|
|Durum yönetimiState management||Durum bilgisi olmayanStateless||Durum bilgisi olmayan ya da durum bilgisi olan *Stateless or stateful*|
|BarındırmaHosting||AzureAzure||Bulut veya şirket içiCloud or on-premises|
|Web BarındırmaWeb hosting||IIS**IIS**||Kendi kendine barındırmaSelf-hosting|
|Dağıtım modeliDeployment model||Klasik dağıtım modeliClassic deployment model||Resource ManagerResource Manager|
|PaketlemePackaging||Bulut hizmeti paketi dosyaları (.cspkg)Cloud service package files (.cspkg)||Uygulama ve hizmet paketleriApplication and service packages|
|Uygulama güncelleştirmesiApplication update||VIP takas veya çalışırken güncelleştirmeVIP swap or rolling update||Sıralı güncelleştirmeRolling update|
|Otomatik ölçeklendirmeAuto-scaling||Yerleşik hizmetBuilt-in service||Otomatik ölçeklendirme için VM ölçek kümeleriVM Scale Sets for auto scale out|
|Hata ayıklamaDebugging||Yerel öykünücüLocal emulator||Yerel kümeLocal cluster|
* Durum bilgisi olan hizmetler kullanım [güvenilir koleksiyonlar] sf-reliable-collections tüm okuma yerel kümedeki düğümleri olacak şekilde yinelemeler durumunu depolamak için.* Stateful services use reliable collections to store state across replicas, so that all reads are local to the nodes in the cluster. Yazma güvenilirlik düğümleri arasında çoğaltılır.Writes are replicated across nodes for reliability. Durum bilgisi olmayan hizmetler, dış durumu, bir veritabanı veya başka bir dış depolama kullanıyor olabilir.Stateless services can have external state, using a database or other external storage.
** Çalışan rolleri de kendi kendine OWIN kullanarak ASP.NET Web API barındırabilir.** Worker roles can also self-host ASP.NET Web API using OWIN.
Surveys uygulamasını Cloud ServicesThe Surveys application on Cloud Services
Aşağıdaki diyagramda, Cloud Services üzerinde çalışan Surveys uygulaması mimarisi gösterilmektedir.The following diagram shows the architecture of the Surveys application running on Cloud Services.
Uygulama, iki web rolü ve çalışan rolü oluşur.The application consists of two web roles and a worker role.
Tailspin.Web web rolü oluşturmak ve anketler yönetmek için Tailspin müşteriler kullanan ASP.NET Web sitesi barındırır.The Tailspin.Web web role hosts an ASP.NET website that Tailspin customers use to create and manage surveys. Müşteriler bu Web uygulaması için kaydolmak ve Aboneliklerini yönetmek için de kullanabilirsiniz.Customers also use this website to sign up for the application and manage their subscriptions. Son olarak, Tailspin Yöneticiler, kiracılar listesini görmek ve Kiracı verilerini yönetmek için kullanabilirsiniz.Finally, Tailspin administrators can use it to see the list of tenants and manage tenant data.
Tailspin.Web.Survey.Public web rolünü barındıran burada kişiler gerçekleştirebileceğiniz Tailspin müşteriler yayımlama anketler ASP.NET Web sitesi.The Tailspin.Web.Survey.Public web role hosts an ASP.NET website where people can take the surveys that Tailspin customers publish.
Tailspin.Workers.Survey çalışan rolü arka plan işleme.The Tailspin.Workers.Survey worker role does background processing. Web rolleri iş öğelerini bir kuyruk yerleştirin ve çalışan rolü öğeleri işler.The web roles put work items onto a queue, and the worker role processes the items. İki arka plan görevleri tanımlanır: Azure SQL veritabanı ve hesaplama istatistikleri anket yanıtları için Anket verme yanıtlar.Two background tasks are defined: Exporting survey answers to Azure SQL Database, and calculating statistics for survey answers.
Bulut hizmetlerine ek olarak, bazı diğer Azure Hizmetleri Surveys uygulamasını kullanır:In addition to Cloud Services, the Surveys application uses some other Azure services:
Azure depolama deposu anketler, anket yanıtları ve Kiracı bilgileri.Azure Storage to store surveys, surveys answers, and tenant information.
Azure Redis Cache bazı daha hızlı okuma erişimi için Azure Depolama'da depolanan veriler önbelleğe almak için.Azure Redis Cache to cache some of the data that is stored in Azure Storage, for faster read access.
Azure Active Directory (Müşteriler ve Tailspin Yöneticiler kimliğini doğrulamak için Azure AD).Azure Active Directory (Azure AD) to authenticate customers and Tailspin administrators.
Azure SQL veritabanı analiz için Anket yanıtları depolamak için.Azure SQL Database to store the survey answers for analysis.
Service Fabric'e taşımaMoving to Service Fabric
Belirtildiği gibi bu aşamanın hedefi, Service Fabric ile en düşük gerekli değişiklikleri geçirirken.As mentioned, the goal of this phase was migrating to Service Fabric with the minimum necessary changes. Bu amaçla, orijinal uygulamadaki her bir bulut hizmeti rolü karşılık gelen durum bilgisi olmayan hizmetler oluşturduk:To that end, we created stateless services corresponding to each cloud service role in the original application:
Bilerek, bu mimari özgün uygulama çok benzer.Intentionally, this architecture is very similar to the original application. Ancak, bazı önemli farklar diyagram gizler.However, the diagram hides some important differences. Bu makalenin kalanında Biz bu farklılıkları hakkında bilgi edineceksiniz.In the rest of this article, we'll explore those differences.
Bulut Hizmeti rol hizmetlerini dönüştürmeConverting the cloud service roles to services
Belirtildiği gibi biz bir Service Fabric hizmeti için her bir bulut hizmeti rolü geçişi.As mentioned, we migrated each cloud service role to a Service Fabric service. Bulut hizmeti rolleri durum bilgisiz olduğundan, bu aşamada, Service Fabric durum bilgisi olmayan hizmetler oluşturmak için mantıklı bir seçimdi.Because cloud service roles are stateless, for this phase it made sense to create stateless services in Service Fabric.
Geçiş için özetlenen adımları izlenen Kılavuzu, Web ve çalışan rolleri için Service Fabric durum bilgisi olmayan hizmetler dönüştürmenin.For the migration, we followed the steps outlined in Guide to converting Web and Worker Roles to Service Fabric stateless services.
Web ön uç hizmetleri oluşturmaCreating the web front-end services
Service Fabric'te, bir hizmet Service Fabric çalışma zamanı tarafından oluşturulan bir işlem içinde çalışır.In Service Fabric, a service runs inside a process created by the Service Fabric runtime. Bir web ön ucu için bu hizmeti IIS içinde çalışmıyor anlamına gelir.For a web front end, that means the service is not running inside IIS. Bunun yerine, hizmet, bir web sunucusu ana bilgisayar gerekir.Instead, the service must host a web server. Bu yaklaşım adlı kendi kendine barındırma, işlemi içinde çalışan kodu web sunucusu ana bilgisayarı görev yapar.This approach is called self-hosting, because the code that runs inside the process acts as the web server host.
Kendi kendine barındırmak için gereksinim çünkü bu çerçeveleri IIS gerektirir ve kendi kendine barındırma desteklemeyen bir Service Fabric hizmeti ASP.NET MVC ya da ASP.NET Web Forms kullanamayacağınız anlamına gelir.The requirement to self-host means that a Service Fabric service can't use ASP.NET MVC or ASP.NET Web Forms, because those frameworks require IIS and do not support self-hosting. Kendi kendine barındırma için Seçenekler şunlardır:Options for self-hosting include:
- ASP.NET Core, şirket içinde barındırılan kullanarak Kestrel kestrel web sunucusu.ASP.NET Core, self-hosted using the Kestrel web server.
- ASP.NET Web API, şirket içinde barındırılan kullanarak OWIN.ASP.NET Web API, self-hosted using OWIN.
- Üçüncü taraf çerçeveleri gibi Nancy.Third-party frameworks such as Nancy.
ASP.NET MVC özgün Surveys uygulamasını kullanır.The original Surveys application uses ASP.NET MVC. Service Fabric'te ASP.NET MVC otomatik barındırılamaz olduğundan, aşağıdaki geçiş seçenekleri dikkate:Because ASP.NET MVC cannot be self-hosted in Service Fabric, we considered the following migration options:
- Şirket içinde barındırılan ASP.NET Core web rolleri bağlantı noktası.Port the web roles to ASP.NET Core, which can be self-hosted.
- Web API ASP.NET Web API kullanılarak uygulanan çağıran bir tek sayfalı uygulamaya (SPA) web sitesi dönüştürün.Convert the web site into a single-page application (SPA) that calls a web API implemented using ASP.NET Web API. Bu web ön ucu tam yeniden yapmamızı gerektiriyordu.This would have required a complete redesign of the web front end.
- Mevcut bir ASP.NET MVC kod saklamak ve bir Windows Server kapsayıcı IIS'de Service Fabric'e dağıtma.Keep the existing ASP.NET MVC code and deploy IIS in a Windows Server container to Service Fabric. Bu yaklaşım, çok az kayıpla veya hiç kod değişikliği gerekir.This approach would require little or no code change.
ASP.NET Core'a taşıma ilk seçenek, ASP.NET Core en son özelliklerden yararlanmak olduk.The first option, porting to ASP.NET Core, allowed us to take advantage of the latest features in ASP.NET Core. Dönüştürme yapmak için açıklanan adımları izlenen geçirme gelen ASP.NET MVC için ASP.NET Core MVC.To do the conversion, we followed the steps described in Migrating From ASP.NET MVC to ASP.NET Core MVC.
Not
ASP.NET Core ile Kestrel kullanırken, güvenlik nedenleriyle Internet'ten trafik işlemek için Kestrel önündeki bir ters proxy yerleştirmeniz gerekir.When using ASP.NET Core with Kestrel, you should place a reverse proxy in front of Kestrel to handle traffic from the Internet, for security reasons. Daha fazla bilgi için Kestrel web sunucusu uygulaması ASP.NET core'da.For more information, see Kestrel web server implementation in ASP.NET Core. Bölüm uygulamasını dağıtma önerilen Azure dağıtım açıklar.The section Deploying the application describes a recommended Azure deployment.
HTTP dinleyicileriHTTP listeners
Bulut Hizmetleri'nde web veya çalışan rolü içinde bildirerek bir HTTP uç noktası sunan Hizmet tanım dosyası.In Cloud Services, a web or worker role exposes an HTTP endpoint by declaring it in the service definition file. Bir web rolü en az bir uç noktası olmalıdır.A web role must have at least one endpoint.
<!-- Cloud service endpoint --> <Endpoints> <InputEndpoint name="HttpIn" protocol="http" port="80" /> </Endpoints>
Benzer şekilde, Service Fabric uç noktaları, bir hizmet bildiriminde bildirilir:Similarly, Service Fabric endpoints are declared in a service manifest:
<!-- Service Fabric endpoint --> <Endpoints> <Endpoint Protocol="http" Name="ServiceEndpoint" Type="Input" Port="8002" /> </Endpoints>
Bir bulut hizmeti rolü, ancak Service Fabric Hizmetleri aynı düğümde birlikte bulunan olabilir.Unlike a cloud service role, however, Service Fabric services can be co-located within the same node. Bu nedenle, her hizmetin farklı bir bağlantı noktasından dinleme gerekir.Therefore, every service must listen on a distinct port. Bu makalede hizmet için doğru bağlantı noktasına istemci isteklerinde bağlantı noktası 80 veya 443 numaralı bağlantı noktasını nasıl yönlendirileceğini açıklayacağız.Later in this article, we'll discuss how client requests on port 80 or port 443 get routed to the correct port for the service.
Bir hizmet dinleyicileri her uç nokta için açıkça oluşturmalısınız.A service must explicitly create listeners for each endpoint. Service Fabric hakkında iletişim yığınları bağımsızdır nedenidir.The reason is that Service Fabric is agnostic about communication stacks. Daha fazla bilgi için ASP.NET Core kullanarak uygulamanız için bir web hizmeti ön ucu oluşturmanızı.For more information, see Build a web service front end for your application using ASP.NET Core.
Paketleme ve yapılandırmaPackaging and configuration
Bir bulut hizmeti, aşağıdaki yapılandırma ve paket dosyaları içerir:A cloud service contains the following configuration and package files:
|DosyaFile||AçıklamaDescription|
|Hizmet tanımı (.csdef)Service definition (.csdef)||Bulut hizmeti yapılandırmak için Azure tarafından kullanılan ayarlar.Settings used by Azure to configure the cloud service. Rolleri, uç noktaları, başlangıç görevleri ve yapılandırma ayarlarını adlarını tanımlar.Defines the roles, endpoints, startup tasks, and the names of configuration settings.|
|Hizmet yapılandırma (.cscfg)Service configuration (.cscfg)||Rol örneği sayısı ve uç nokta bağlantı noktası numaralarını yapılandırma ayarlarının değerleri dahil olmak üzere, dağıtım başına ayarlar.Per-deployment settings, including the number of role instances, endpoint port numbers, and the values of configuration settings.|
|Hizmet Paketi (.cspkg)Service package (.cspkg)||Uygulama kodu ve yapılandırmaları ve Hizmet tanım dosyası içerir.Contains the application code and configurations, and the service definition file.|
Uygulamanın tamamı için bir .csdef dosyası yoktur.There is one .csdef file for the entire application. Birden çok yerel gibi farklı ortamlarda .cscfg dosyaları, test veya üretim olabilir.You can have multiple .cscfg files for different environments, such as local, test, or production. Hizmet çalışırken .cscfg ancak .csdef güncelleştirebilirsiniz.When the service is running, you can update the .cscfg but not the .csdef. Daha fazla bilgi için bulut hizmeti modeli nedir ve nasıl miyim paketi bunu?For more information, see What is the Cloud Service model and how do I package it?
Service Fabric sahip bir hizmet arasında benzer bir bölme tanımı ve hizmet ayarları, ancak daha ayrıntılı bir yapıdır.Service Fabric has a similar division between a service definition and service settings, but the structure is more granular. Service Fabric'in yapılandırma modeli anlamak için Service Fabric uygulaması nasıl paketlenmiştir anlamanıza yardımcı olur.To understand Service Fabric's configuration model, it helps to understand how a Service Fabric application is packaged. Yapısı şu şekildedir:Here is the structure:
Application package - Service packages - Code package - Configuration package - Data package (optional)
Ne dağıtacağınız uygulama paketidir.The application package is what you deploy. Bu, bir veya daha fazla hizmet paketleri içerir.It contains one or more service packages. Hizmet paketi, kod, yapılandırma ve veri paketleri içerir.A service package contains code, configuration, and data packages. Kod paketi Hizmetleri için ikili dosyaları, ve yapılandırma paketi yapılandırma ayarlarını içerir.The code package contains the binaries for the services, and the configuration package contains configuration settings. Bu model, tüm uygulamayı yeniden dağıtmaya gerek kalmadan tek tek Hizmetleri yükseltme olanak tanır.This model allows you to upgrade individual services without redeploying the entire application. Ayrıca, kodu yeniden dağıtabilir veya hizmeti yeniden başlatmayı olmadan yalnızca yapılandırma ayarlarını güncelleştirmenizi sağlar.It also lets you update just the configuration settings, without redeploying the code or restarting the service.
Bir Service Fabric uygulaması, aşağıdaki yapılandırma dosyalarını içerir:A Service Fabric application contains the following configuration files:
|DosyaFile||KonumLocation||AçıklamaDescription|
|ApplicationManifest.xmlApplicationManifest.xml||Uygulama paketiApplication package||Uygulama oluşturma hizmetleri tanımlar.Defines the services that compose the application.|
|ServiceManifest.xmlServiceManifest.xml||Hizmet paketiService package||Bir veya daha fazla hizmetlerini açıklar.Describes one or more services.|
|Settings.xmlSettings.xml||Yapılandırma paketiConfiguration package||Hizmet paketinde tanımlanan hizmetler için yapılandırma ayarlarını içerir.Contains configuration settings for the services defined in the service package.|
Birden çok ortam için farklı yapılandırma ayarları desteklemek için açıklanan aşağıdaki yaklaşımı kullanın. birden çok ortam için uygulama parametrelerini yönetme:To support different configuration settings for multiple environments, use the following approach, described in Manage application parameters for multiple environments:
- Hizmet Setting.xml dosyasına kopyalayın Dosyasında ayarı tanımlayın.Define the setting in the Setting.xml file for the service.
- Uygulama bildiriminde geçersiz kılma ayarı için tanımlayın.In the application manifest, define an override for the setting.
- Ortama özgü ayarları uygulama parametre dosyaları yerleştirin.Put environment-specific settings into application parameter files.
Uygulamayı dağıtmaDeploying the application
Service Fabric, Azure Cloud Services yönetilen bir hizmettir ancak bir çalışma zamanıdır.Whereas Azure Cloud Services is a managed service, Service Fabric is a runtime. Şirket içi ve Azure da dahil olmak üzere birçok ortamda, Service Fabric kümeleri oluşturabilirsiniz.You can create Service Fabric clusters in many environments, including Azure and on premises. Bu makalede, Azure'da dağıtmaya odaklanır.In this article, we focus on deploying to Azure.
Önerilen dağıtım Aşağıdaki diyagramda gösterilmiştir:The following diagram shows a recommended deployment:
Service Fabric kümesine dağıtılmış bir VM ölçek kümesi.The Service Fabric cluster is deployed to a VM scale set. Ölçek kümeleri, özdeş Vm'lerden oluşan bir kümesini dağıtıp yönetmek için kullanılan bir Azure işlem kaynağıdır.Scale sets are an Azure Compute resource that can be used to deploy and manage a set of identical VMs.
Belirtildiği gibi Kestrel web sunucusu güvenlik nedenleriyle bir ters proxy gerektirir.As mentioned, the Kestrel web server requires a reverse proxy for security reasons. Bu diyagramda gösterilmiştir Azure Application Gateway, çeşitli 7. Katman Yük Dengeleme özellikleri sağlayan bir Azure hizmet.This diagram shows Azure Application Gateway, which is an Azure service that offers various layer 7 load balancing capabilities. İstemci bağlantısını sonlandıran ve istekleri arka uç noktalarına ileten ters proxy hizmeti olarak çalışır.It acts as a reverse-proxy service, terminating the client connection and forwarding requests to back-end endpoints. Ngınx gibi farklı bir ters proxy yer alan bir çözüm kullanabilirsiniz.You might use a different reverse proxy solution, such as nginx.
Katman 7 yönlendirmeyiLayer 7 routing
İçinde özgün Surveys uygulaması, bağlantı noktası 80 üzerinde bir web rolü dinledik ve bağlantı noktası 443 üzerinde bir web rolü yaptık.In the original Surveys application, one web role listened on port 80, and the other web role listened on port 443.
|Genel sitePublic site||Anket yönetim sitesiSurvey management site|


Başka bir seçenek, 7. Katman yönlendirme kullanmaktır.Another option is to use layer 7 routing. Bu yaklaşımda, farklı bir URL yolu arka uçta farklı bağlantı noktası numaraları için yönlendirilir.In this approach, different URL paths get routed to different port numbers on the back end. Örneğin, genel site ile başlayan URL yolları kullanabilirsiniz
/public/.For example, the public site might use URL paths starting with
/public/.
7. Katman yönlendirme için Seçenekler şunlardır:Options for layer 7 routing include:
Uygulama ağ geçidi kullanın.Use Application Gateway.
Ngınx gibi bir ağ sanal Gereci (NVA) kullanın.Use a network virtual appliance (NVA), such as nginx.
Özel bir ağ geçidi, durum bilgisi olmayan hizmet olarak yazın.Write a custom gateway as a stateless service.
Genel HTTP uç noktaları ile iki veya daha fazla hizmet vardır, ancak bir tek etki alanı adı ile bir site olarak görünmesini istiyorsanız bu yaklaşımı göz önünde bulundurun.Consider this approach if you have two or more services with public HTTP endpoints, but want them to appear as one site with a single domain name.
Bir yaklaşım bizim yoksa öneri dış istemciler, Service Fabric ile istekleri göndermesine izin ters proxy.One approach that we don't recommend is allowing external clients to send requests through the Service Fabric reverse proxy. Bu mümkün olsa da, hizmetten hizmete iletişimi için ters proxy yöneliktir.Although this is possible, the reverse proxy is intended for service-to-service communication. Dış istemcilere açmadan sunan herhangi bir HTTP uç noktası olan bir kümede çalışan bir hizmet.Opening it to external clients exposes any service running in the cluster that has an HTTP endpoint.
Düğüm türleri ve yerleştirme kısıtlamalarıNode types and placement constraints
Yukarıda gösterilen Dağıtımdaki tüm düğümlerde tüm hizmetleri çalıştırın.In the deployment shown above, all the services run on all the nodes. Ancak, belirli hizmetleri yalnızca küme içindeki belirli düğümler çalıştırın böylece hizmetleri de gruplandırabilirsiniz.However, you can also group services, so that certain services run only on particular nodes within the cluster. Bu yaklaşım kullanma nedenleri şunlardır:Reasons to use this approach include:
- Bazı hizmetler farklı VM türleri üzerinde çalıştırın.Run some services on different VM types. Örneğin, bazı hizmetler, yoğun işlem gücü kullanımlı veya GPU gerektirir.For example, some services might be compute-intensive or require GPUs. Service Fabric kümenizdeki VM türlerinin bir karışımını olabilir.You can have a mix of VM types in your Service Fabric cluster.
- Ön uç Hizmetleri arka uç Hizmetleri, güvenlik nedenleriyle yalıtın.Isolate front-end services from back-end services, for security reasons. Tüm ön uç Hizmetleri, bir dizi düğümü üzerinde çalışacak ve arka uç Hizmetleri farklı düğümlere aynı kümede çalıştırılır.All the front-end services will run on one set of nodes, and the back-end services will run on different nodes in the same cluster.
- Farklı ölçek gereksinimleri.Different scale requirements. Bazı hizmetler, diğer hizmetler'den daha fazla düğüm üzerinde çalıştırmanız gerekebilir.Some services might need to run on more nodes than other services. Örneğin, ön uç düğümleri ve arka uç düğümleri tanımlarsanız, her bir kümesi bağımsız olarak ölçeklendirilebilir.For example, if you define front-end nodes and back-end nodes, each set can be scaled independently.
Ön uç ve arka uç Hizmetleri ayıran bir küme Aşağıdaki diyagramda gösterilmiştir:The following diagram shows a cluster that separates front-end and back-end services:
Bu yaklaşımı uygulamak için:To implement this approach:
- Kümeyi oluşturduğunuzda, iki veya daha fazla düğüm türleri tanımlar.When you create the cluster, define two or more node types.
- Her hizmet için kullanmak [yerleştirme kısıtlamaları] sf-placement-constraints bir düğüm türü için hizmet atamak için.For each service, use placement constraints to assign the service to a node type.
Azure'a dağıtırken, her düğüm türü ayrı bir VM ölçek kümesine dağıtılır.When you deploy to Azure, each node type is deployed to a separate VM scale set. Service Fabric kümesine tüm düğüm türleri yayılır.The Service Fabric cluster spans all node types. Daha fazla bilgi için Service Fabric düğüm türleri ve sanal makine ölçek kümeleri arasındaki ilişkiyi.For more information, see The relationship between Service Fabric node types and Virtual Machine Scale Sets.
Bir küme düğümünde birden fazla varsa, bir düğüm türü olarak tanımlanan birincil düğüm türü.If a cluster has multiple node types, one node type is designated as the primary node type. Birincil düğüm türünde gibi küme yönetimi hizmeti, Service Fabric çalışma zamanı Hizmetleri çalıştırın.Service Fabric runtime services, such as the Cluster Management Service, run on the primary node type. Bir üretim ortamında birincil düğüm türü için en az 5 düğüm sağlayın.Provision at least 5 nodes for the primary node type in a production environment. Bir düğüm türü en az 2 düğüm olmalıdır.The other node type should have at least 2 nodes.
Yapılandırma ve kümeyi yönetmeConfiguring and managing the cluster
Kümeler, yetkisiz kullanıcıların kümenize bağlanmasını önlemek için güvenli hale getirilmelidir.Clusters must be secured to prevent unauthorized users from connecting to your cluster. İstemcileri ve X.509 sertifikaları düğümden düğüme güvenlik için kimlik doğrulaması için Azure AD kullanmak için önerilir.It is recommended to use Azure AD to authenticate clients, and X.509 certificates for node-to-node security. Daha fazla bilgi için Service Fabric kümesi güvenlik senaryoları.For more information, see Service Fabric cluster security scenarios.
Uygulamayı kümeye ekleyerek ölçeklendirebilirsiniz.You can scale out the application by adding VMs to the cluster. Destek VM ölçek kümelerini otomatik ölçeklendirme performans sayaçları tabanlı otomatik ölçeklendirme kurallarını kullanarak.VM scale sets support auto-scaling using auto-scale rules based on performance counters. Daha fazla bilgi için bir Service Fabric kümesini otomatik ölçeklendirme kurallarını kullanarak içe veya dışa ölçeklendirme.For more information, see Scale a Service Fabric cluster in or out using auto-scale rules.
Küme çalışırken, merkezi bir konumda tüm düğümlerden günlükleri toplamanız gerekir.While the cluster is running, you should collect logs from all the nodes in a central location. Daha fazla bilgi için Azure Tanılama'yı kullanarak günlükleri toplama.For more information, see Collect logs by using Azure Diagnostics.
SonuçConclusion
Service fabric'e Surveys uygulamasını taşıma oldukça basittir.Porting the Surveys application to Service Fabric was fairly straightforward. Özetlemek gerekirse, aşağıdaki yaptık:To summarize, we did the following:
- Rolleri için durum bilgisi olmayan hizmetler dönüştürülür.Converted the roles to stateless services.
- ASP.NET Core web ön uçları dönüştürülür.Converted the web front ends to ASP.NET Core.
- Service Fabric modele paketleme ve yapılandırma dosyaları değiştirildi.Changed the packaging and configuration files to the Service Fabric model.
Ayrıca, dağıtım, bir VM ölçek kümesinde çalıştırılan bir Service Fabric kümesine Cloud Services'tan değiştirildi.In addition, the deployment changed from Cloud Services to a Service Fabric cluster running in a VM Scale Set.
Sonraki adımlarNext steps
Tailspin Surveys uygulamasını başarılı bir şekilde verilir, bağımsız bir hizmet dağıtımı ve sürüm oluşturma gibi bir Service Fabric özelliklerden yararlanmak istiyor.Now that the Surveys application has been successfully ported, Tailspin wants to take advantage of Service Fabric features such as independent service deployment and versioning. Tailspin Service Fabric bu özelliklerden yararlanmak için daha ayrıntılı bir mimari için bu hizmetleri nasıl ayrılmış öğrenin bir Azure Service Fabric uygulaması, Azure Cloud Services'tan geçirilmiş bir yeniden düzenlemeLearn how Tailspin decomposed these services to a more granular architecture to take advantage of these Service Fabric features in Refactor an Azure Service Fabric Application migrated from Azure Cloud Services
Geri Bildirim
Görüş bildirmek ister misiniz?
Geri bildirim sistemimiz GitHub Sorunları üzerinde oluşturuldu. Blogumuzda daha fazla bilgi bulabilirsiniz.
Geri bildirim yükleniyor...