Aracılığıyla paylaş


Azure Container Instances'ta Güvenilirlik

Bu makalede Azure Container Instances'da sanal makineleri (VM) yönetmeye veya daha karmaşık, daha üst düzey bir hizmet benimsemeye gerek kalmadan linux veya Windows kapsayıcılarını Azure çalıştırmanın basit bir yolunu sağlayan güvenilirlik desteği açıklanmaktadır.

Azure kullandığınızda, güvenilirlik paylaşılan bir sorumluluktur. Microsoft, dayanıklılık ve kurtarmayı desteklemek için çeşitli özellikler sunar. Bu özelliklerin kullandığınız tüm hizmetler içinde nasıl çalıştığını anlamak ve iş hedeflerinize ve çalışma süresi hedeflerinize ulaşmak için ihtiyacınız olan özellikleri seçmek sizin sorumluluğunuzdadır.

Bu makalede geçici hatalar, kullanılabilirlik alanı kesintileri ve bölge kesintileri gibi çeşitli olası kesintilere ve sorunlara karşı Azure Container Instances nasıl dayanıklı hale getirilmeye başlandığı açıklanır. Azure Container Instances hizmet düzeyi sözleşmesi (SLA) hakkındaki bazı önemli bilgileri vurgular.

Güvenilirlik için üretim dağıtımı önerileri

Container Instances üzerinde oluşturulan üretim uygulamalarının güvenilirliğini artırmak için aşağıdaki eylemleri gerçekleştirmenizi öneririz:

  • Uygulamalarınızı birden çok kullanılabilirlik alanında çalıştırın.
  • Birden çok bölgede ayrı kapsayıcı gruplarının da çalıştırılıp çalıştırılmayacağını göz önünde bulundurun.
  • İyi durumda olmayan kapsayıcıları algılamak ve otomatik olarak yeniden başlatmak için canlılık yoklamalarını kullanın.
  • Konteynerlerinizin trafik almadan önce hazır hale gelene kadar beklemek için hazırlık probelerini kullanın.
  • NGroups kullanıyorsanız değişiklikleri aşamalı olarak uygulamak için sıralı yükseltmeleri kullanın. Bu yaklaşım, yükseltmeler nedeniyle kapalı kalma süresini azaltır.
  • Container Instances için en iyi uygulamaları ve dikkat edilmesi gerekenleri gözden geçirin.

Güvenilirlik mimarisine genel bakış

Container Instances kullanmak için bir container grubu dağıtırsınız. Kapsayıcı grubu bir veya daha fazla kapsayıcı içerir. Her kapsayıcı, Azure Container Registry gibi bir kayıt defterinde depolanan container görüntüsünden oluşturulur.

Kapsayıcı grubundaki tüm kapsayıcılar tek bir mantıksal birim olarak birlikte dağıtılır ve aynı fiziksel altyapıyı paylaşır.

Aşağıdaki diyagramda kapsayıcı grupları, kapsayıcılar ve görüntüler arasındaki ilişki gösterilmektedir.

İki kapsayıcılı bir kapsayıcı grubunu gösteren diyagram. Her kapsayıcı, kayıt defterinde ayrı bir görüntü kullanır.

Görüntüde bir kapsayıcı grubu bölümündeki iki kapsayıcı gösterilmektedir. İki noktalı çizgi, kapsayıcıları kayıt defteri bölümündeki iki görüntü bölümüne bağlar.

Container Instances kapsayıcı gruplarını yönetmek için aşağıdaki özellikleri sağlar:

  • NGroups (önizleme), birden çok ilgili kapsayıcı grubunu yönetmek için bir dizi özellik sağlar. NGroup oluşturduğunuzda, oluşturulacak kapsayıcı gruplarının sayısını tanımlarsınız. Container Instances, otomatik yükseltme dağıtımları ve kapsayıcı gruplarını kullanılabilirlik alanlarına yayma gibi özellikler sağlar.

  • Bekleme havuzları, gelen trafiğe yanıt olarak kullanılabilecek önceden tahsis edilmiş kapsayıcı gruplarından bir havuz oluşturur. Bekleme havuzları, kapsayıcı gruplarının oluşturulmasını optimize etmek için tasarlanmıştır; dayanıklılığınızı artırmak için tasarlanmamıştır.

Geçici hatalara dayanıklılık

Geçici hatalar, bileşenlerde kısa ve aralıklı hatalardır. Bunlar genellikle bulut gibi dağıtılmış bir ortamda gerçekleşir ve işlemlerin normal bir parçasıdır. Geçici hatalar kısa bir süre sonra kendilerini düzeltmektedir. Uygulamalarınızın genellikle etkilenen istekleri yeniden deneyerek geçici hataları işleyebileceği önemlidir.

Bulutta barındırılan tüm uygulamalar, bulutta barındırılan API'ler, veritabanları ve diğer bileşenlerle iletişim kurarken Azure geçici hata işleme yönergelerini izlemelidir. Daha fazla bilgi için bkz Geçici hataları ele alma önerileri.

Microsoft tarafından sağlanan SDK'lar genellikle geçici hataları işler. kendi uygulamalarınızı Container Instances barındırdığınızdan, geçici hata olasılığını azaltmaya yönelik adımları uygulayın:

  • Bir kapsayıcı veya kapsayıcı grubundaki bir hatanın uygulamanızın tamamını etkilemediğinden emin olmak için önemli iş yükleri için birden çok kapsayıcı grubu çalıştırın.

  • Uygulama kodunuzu, yeniden deneme ilkelerini geri alma stratejileriyle kullanma gibi bağlandığınız hizmetlerde geçici hatalara dayanıklı olacak şekilde oluşturun.

Çalışma zamanında oluşabilecek diğer hatalar ve bunlara nasıl yanıt verebileceği hakkında daha fazla bilgi için bkz. Kapsayıcı grubu çalışma zamanı sırasında karşılaşılan sorunlar.

Kullanılabilirlik alanı hatalarına dayanıklılık

Availability bölgeleri Azure bölgesindeki fiziksel olarak ayrı veri merkezleri gruplarıdır. Bir bölge başarısız olduğunda hizmetler kalan bölgelerden birine devredilebilir.

Container Instances, kapsayıcı gruplarınızı nasıl dağıttığınıza bağlı olarak kullanılabilirlik alanlarını farklı şekillerde destekler:

  • El ile oluşturulan kapsayıcı grupları: Tek bir kapsayıcı grubu bölgesel bir kaynaktır ve bu da seçtiğiniz tek bir kullanılabilirlik alanına dağıtılabildiği anlamına gelir. Gruptaki tüm kapsayıcılar aynı kullanılabilirlik alanına dağıtılır. Kullanılabilirlik alanında bir kesinti oluşursa, kapsayıcı grubu ve tüm kapsayıcıları kesinti süresi yaşayabilir.

    Aşağıdaki diyagramda, kullanılabilirlik alanı 1'e el ile dağıtılan bir kapsayıcı grubu gösterilmektedir:

    Tek bir kullanılabilirlik alanına dağıtılan iki kapsayıcı içeren bir kapsayıcı grubunu gösteren diyagram.

    Görüntüde üç kullanılabilirlik alanı gösterilmektedir: Kullanılabilirlik Alanı 1, Kullanılabilirlik Alanı 2 ve Kullanılabilirlik Alanı 3. Kullanılabilirlik Alanı 1'deki bir kapsayıcı grubu iki kapsayıcı içerir.

    Uyarı

    Bölgedeki tek bir bölgede kesinti yaşandığında uygulamanızın çalışmaya devam etmesini sağlamak için, iki farklı kullanılabilirlik alanında en az iki kapsayıcı grubu oluşturmanızı öneririz.

    Kapsayıcı grubunuz için kullanılacak kullanılabilirlik alanlarını belirtmezseniz, bölge dışı veya bölgeseldir; bu da bölge içindeki veya aynı bölge içindeki herhangi bir kullanılabilirlik alanına yerleştirilebileceği anlamına gelir. Bölgedeki herhangi bir kullanılabilirlik alanında sorun varsa kapsayıcı grubunuz kesinti süresi yaşayabilir.

  • NGroups: Bir NGroup dağıtırken, dağıtılacak bir veya daha fazla bölge belirtebilirsiniz. İki veya daha fazla bölgeye NGroup dağıtırsanız, bu alanlar arası yedekli bir NGroup olur ve bir kullanılabilirlik alanında kesinti olması yalnızca etkilenen bölge içindeki kapsayıcı gruplarında sorunlara neden olur.

    Aşağıdaki diyagramda üç kullanılabilirlik alanına dağıtılan bir NGroup gösterilmektedir:

    Üç kullanılabilirlik alanına dağıtılmış üç kapsayıcı grubuna sahip bir NGroup'un gösterildiği diyagram.

    Görüntüde üç kullanılabilirlik alanı gösterilmektedir. Her kullanılabilirlik alanı bir kapsayıcı grubu ve iki kapsayıcı içerir. NGroupdesiredCount=3, zones=1,2,3 etiketli dikdörtgen üç kullanılabilirlik alanına da yayılmıştır.

    NGroup'unuz için kullanılacak kullanılabilirlik alanlarını belirtmezseniz, bölge dışıdır ve bölgedeki kullanılabilirlik alanlarında sorun varsa kapalı kalma süresiyle karşılaşabilirsiniz.

  • Bekleme havuzları: Bekleme havuzu dağıtırken isteğe bağlı olarak bir veya daha fazla bölge belirtebilirsiniz. Platform, seçtiğiniz bölgeler arasında kapsayıcılar isteyebilir.

    Ancak, kapsayıcıların birden çok bölgede oluşturulması garanti olmadığından, bekleme havuzları bölge yedekli veya bölge dayanıklılığına sahip değildir. Bir bölge kesintisi oluşursa havuzdaki tüm kapsayıcılar etkilenen bölgeye yerleştirilebilir.

    Bekleme havuzları bölge hatalarına dayanıklılığı destekleyecek şekilde tasarlanmadığından, bu kılavuz kullanılabilirlik alanları olan bekleme havuzlarının ayrıntılı davranışını açıklamaz.

    Önemli

    Bekleme havuzları, bölgeye dayanıklı olacak şekilde tasarlanmamıştır. Bölge hatalarına dayanıklılık gerektiren iş yükleri için kullanılmamalıdır.

Gereksinimler

  • Bölge desteği: Bölgesel kapsayıcı grubu dağıtımları kullanılabilirlik alanları olan tüm bölgelerde desteklenir.

  • Linux ve Windows Server 2019 kapsayıcı grupları için bölgesel dağıtımlar kullanılabilir.

  • Kullanılabilirlik alanı seçmek için Standart SKU'yu kullanmanız gerekir. Bölgesel konteyner grupları Confidential SKU ile kullanılamaz.

Değerlendirmeler

Spot kapsayıcılar kullanılabilirlik alanlarını desteklemez ve her zaman bölgeye özgü değildir.

Maliyet

Bir kapsayıcı grubu için kullanılabilirlik alanlarını yapılandırmanın ek bir maliyeti yoktur.

Kullanılabilirlik alanı desteğini yapılandırma

  • Kullanılabilirlik alanı desteğiyle kapsayıcı grupları oluşturun. Kullanılabilirlik alanlarını yapılandırmak için kullandığınız yaklaşım, kapsayıcı gruplarını nasıl oluşturduğunuza bağlıdır.

    • El ile oluşturulan kapsayıcı grupları: Belirli bir bölgede bölgesel kapsayıcı grubu oluşturmak için aşağıdaki yöntemlerden birini kullanabilirsiniz:

    • NGroups: Bicep dosyası veya ARM şablonu kullanarak ve birden çok bölge belirterek alanlar arası yedekli bir NGroup dağıtabilirsiniz. Daha fazla bilgi için Bölgelere sahip NGroups örneği'ne bakın.

    • Bekleme havuzları: Havuzu oluştururken veya güncelleştirirken bir veya daha fazla bölge belirterek kullanılabilirlik alanlarını kullanan bir bekleme havuzu dağıtabilirsiniz. Ancak kapsayıcılar birden çok bölgede oluşturulamayabilir. Bekleme havuzları, bölge hatalarına dayanıklılık gerektiren iş yükleri için kullanılmamalıdır. Daha fazla bilgi için bkz. Container Instances için bekleme havuzu oluşturma.

  • Mevcut kaynaklarda kullanılabilirlik alanı desteğini etkinleştirin. Kullanılabilirlik alanlarını yapılandırmak için kullandığınız yaklaşım, kapsayıcı gruplarını nasıl oluşturduğunuza bağlıdır.

    • El ile oluşturulan kapsayıcı grupları: Mevcut bir bölgesel olmayan kapsayıcı grubunda kullanılabilirlik alanlarını etkinleştiremezsiniz. Kapsayıcı grubunu silmeniz ve bir bölgesel kapsayıcı grubu oluşturmanız gerekir.

    • NGroups: Mevcut bir bölgesel olmayan NGroup'ta kullanılabilirlik alanlarını etkinleştiremezsiniz. NGroup'u silmeniz ve alanlar arası yedekli bir NGroup oluşturmanız gerekir.

    • Bekleme havuzları: Mevcut bir bölgesel olmayan bekleme havuzunda kullanılabilirlik alanlarını etkinleştiremezsiniz. Kapsayıcı grubunu silmeniz ve birden çok kullanılabilirlik alanı kullanan yeni bir bekleme havuzu oluşturmanız gerekir.

  • Kapsayıcı gruplarını bölgeler arasında taşıyın veya kullanılabilirlik alanı desteğini devre dışı bırakın. Kullanılabilirlik alanlarını değiştirmek için kullandığınız yaklaşım, kapsayıcı gruplarını nasıl oluşturduğunuza bağlıdır.

    • El ile oluşturulan kapsayıcı grupları: Kapsayıcı grubunun kullanılabilirlik bölgesini değiştirmek için kapsayıcı grubunu silmeniz ve yeni kullanılabilirlik alanıyla başka bir kapsayıcı grubu oluşturmanız gerekir. Kapsayıcı grubunu silmeyi öğrenmek için aşağıdaki kaynaklara bakın:

    • NGroups: Bir NGroup'a bölge ekleyebilirsiniz, ancak bölgeleri kaldıramazsınız.

    • Bekleme havuzları: Bekleme havuzuna bölge ekleyebilirsiniz, ancak bölgeleri kaldıramazsınız.

Kapsayıcı grubu dağıtımı

Kapsayıcı gruplarının kullanılabilirlik alanları arasında dağıtılması, kapsayıcı gruplarınızı nasıl dağıttığınıza bağlıdır.

  • El ile oluşturulan kapsayıcı grupları: El ile oluşturduğunuz kapsayıcı gruplarını birden çok kullanılabilirlik alanına dağıtmak sizin sorumluluğunuzdadır.

  • NGroups: Ölçek daraltma işlemleri sırasında NGroup'lar örnekleri rastgele siler ve bu durum kullanılabilirlik alanlarına yayılmayı korumayabilir. Ölçek genişletme işlemleri, bölgeler arasındaki dağılımı yeniden dengelemeye çalışır.

  • Bekleme havuzları: Bekleme havuzu, havuzda yapılandırdığınız kullanılabilirlik alanlarından herhangi birinde kapsayıcılar oluşturabilir. Ancak kapsayıcılar birden çok bölgede oluşturulamayabilir. Bekleme havuzları, bölge hatalarına dayanıklılık gerektiren iş yükleri için kullanılmamalıdır.

Kapasite planlaması ve yönetimi

Kullanılabilirlik alanı hatasına hazırlanmak için dağıttığınız kapsayıcı gruplarının sayısını fazla sağlamayı göz önünde bulundurun. Bu yaklaşım, çözümün bazı kapasite kayıplarını tolere etmesine ve performansı düşürmeden çalışmaya devam etmesine olanak tanır. Daha fazla bilgi için bkz. Fazla sağlamayı kullanarak kapasiteyi yönetme.

Konteyner gruplarınız için aşırı kaynak sağlamanız, konteyner gruplarınızı nasıl dağıttığınıza bağlıdır.

  • El ile oluşturulan kapsayıcı grupları: El ile oluşturulan kapsayıcı gruplarınızın kapasitesini planlamaktan ve her bölgede kaç kapsayıcı grubu dağıtabileceğinizi planlamaktan sorumlusunuz.

  • NGroup: Bir bölgenin kaybını tolere etmek için NGroup kapasitenizin fazla tahsisini göz önünde bulundurun.

  • Bekleme havuzları: Bekleme havuzları, bölge hatalarına dayanıklı olacak şekilde tasarlanmamıştır. Farklı bölgelerde birden çok bekleme havuzu kullanmayı veya NGroup'ları kullanmayı göz önünde bulundurun.

Tüm bölgeler sağlıklı olduğunda davranış

Bu bölümde, Container Instances kaynaklar kullanılabilirlik alanı desteği için yapılandırıldığında ve tüm kullanılabilirlik alanları çalışır durumda olduğunda neler bekleyebileceğiniz açıklanmaktadır.

  • Bölgeler arasında trafik yönlendirme: Trafiği kapsayıcılarınıza yönlendirmek sizin sorumluluğunuzdadır. Örneğin, kapsayıcı gruplarınız için ağ geçidi ve yük dengeleyici olarak Azure Application Gateway kullanabilirsiniz.

    NGroups veya bekleme havuzları kullanıyorsanız, tüm kapsayıcılar arasında yük dengelemeden siz sorumlu olursunuz. Ayrıca her kapsayıcı grubunun durumunu algılamak ve gerektiğinde trafiği alternatif bir gruba yeniden yönlendirmek için trafik yönlendirme sisteminizi yapılandırmanız gerekir.

  • Bölgeler arasında veri çoğaltma: Kapsayıcılar ve kapsayıcı grupları durumdan bağımsızdır. Kendi dosya paylaşımınızı ekleyebilir veya uygulamalarınızdan veritabanlarına veya diğer depolama hizmetlerine bağlanabilirsiniz. Bu dosya paylaşımlarının ve depolama hizmetlerinin bölge dayanıklı olduğundan emin olmanız gerekir. Her bileşen bölgesinin dayanıklı olmasını nasıl sağlayacağını anlamak için her hizmetin güvenilirlik kılavuzlarını gözden geçirin.

Bölge hatası sırasındaki davranış

Bu bölümde, Container Instances kaynaklar kullanılabilirlik alanı desteği için yapılandırıldığında ve kullanılabilirlik alanı kesintisi olduğunda neler bekleyebileceğiniz açıklanmaktadır.

  • Algılama ve yanıt: Bölge hatalarının algılanması ve ilişkili yanıt, kapsayıcı gruplarınızı nasıl dağıttığınıza bağlıdır.

    • Elle oluşturulan kapsayıcı grupları: Bir kullanılabilirlik alanının kaybını algıladığınızda, başka bir kullanılabilirlik alanında oluşturduğunuz ikincil kapsayıcı grubuna yük devretme işlemi başlatmanız gerekir.

    • NGroups: Container Instances platformu kullanılabilirlik alanında bir hatayı algılamaktan ve yanıtlamaktan sorumludur.

      Ancak trafiğin iyi durumdaki bir bölgedeki kapsayıcılara yönlendirildiğinden emin olmak sizin sorumluluğundadır.

    • Standby havuzları: Container Instances platformunun zona bağlı hatalara yanıt verip veremeyeceği standby havuzları için garanti edilmez. Bekleme havuzları, bölge hatalarına dayanıklılık gerektiren iş yükleri için kullanılmamalıdır.

  • Bildirim: Microsoft, bir bölge kapatıldığında sizi otomatik olarak bilgilendirmez. Ancak, Azure Hizmet Durumu kullanarak tüm bölge hataları dahil olmak üzere hizmetin genel durumunu anlayabilir ve sorunları size bildirmek için Service Health uyarıları ayarlayabilirsiniz.
  • Etkin istekler: Bir bölge başarısız olursa, bu bölgede çalıştırılan tüm kapsayıcılar, işledikleri etkin çalışmalar da dahil olmak üzere durdurulma olasılığı yüksektir

  • Beklenen veri kaybı: Kapsayıcılar ve kapsayıcı grupları durum bilgisi olmadığından, bölge hatasından veri kaybı beklenmez. Ancak, depolama hizmetleri ve veritabanları dahil olmak üzere iş yükünüzdeki her bileşenin bölge dayanıklı olduğundan emin olmak sizin sorumluluğunuzdadır.

  • Beklenen kapalı kalma süresi: Bir bölge hatasından bekleyebileceğiniz kapalı kalma süresi, kapsayıcı gruplarınızı nasıl dağıttığınıza bağlıdır.

    • El ile oluşturulan kapsayıcı grupları: Bölgeye özgü kapsayıcı grupları için, bir bölge kullanılamadığında, kapsayıcı grubunuz ve kapsayıcıları, kullanılabilirlik bölgesi düzelene kadar kullanılamaz.

    • NGroups: NGroup'lar için, bir bölge kapanırsa, NGroup'lar içindeki kalan kapsayıcı grupları diğer bölgelerde çalışmaya devam ettiğinden uygulamanız kullanılabilir durumda kalır. Kapalı kalma süresi beklenmez.

    • Bekleme havuzları: Bekleme havuzları bölge dayanıklılığı sağlamaz. Bekleme havuzundaki tüm kapsayıcı grup tek bir bölgede ise, kullanılabilirlik bölgesi kendini toparlayana kadar tüm kapsayıcı grup ve kapsayıcılar kullanılamaz duruma gelebilir.

  • Trafik yeniden yönlendirme: Trafiği kapsayıcılarınıza yönlendirmek sizin sorumluluğunuzda olduğundan, kullanılabilirlik alanı kesintisi nedeniyle bir kapsayıcı grubu başarısız olursa trafiği yeniden yönlendirmek de sizin sorumluluğunuzdadır.

Bölge kurtarma

Bölge kurtarıldıktan sonra, Azure platformu durdurulmuş kapsayıcı gruplarını otomatik olarak yeniden başlatır. Müşteri tarafından işlem yapılması gerekmez.

Bölge hataları için test

Kapsayıcı grubunuzu içeren kullanılabilirlik alanında kesintiyi simüle etmenin hiçbir yolu yoktur. Ancak, trafiği farklı bir kullanılabilirlik alanındaki farklı bir kapsayıcı grubuna yeniden yönlendirmek için yukarı akış ağ geçitlerini veya yük dengeleyicileri el ile yapılandırabilirsiniz.

Bölge genelindeki hatalara dayanıklılık

Container Instances tek bölgeli bir hizmettir. Bölge kullanılamaz duruma gelirse, kapsayıcı gruplarınız ve kapsayıcıları da kullanılamaz hale gelir.

Dayanıklılık için özel çok bölgeli çözümler

İsteğe bağlı olarak birden çok bölgeye ayrı kapsayıcı grupları dağıtabilirsiniz. Her bölgedeki kapsayıcı gruplarını dağıtmak ve yapılandırmak sizin sorumluluğundadır. Yük dengelemeyi Azure Traffic Manager veya Azure Front Door gibi bir hizmet kullanarak da yapılandırmanız gerekir. Tüm veri eşitleme, yük devretme ve yeniden çalışma işlemlerden siz sorumlusunuz.

Hizmet düzeyi sözleşmesi

Azure hizmetleri için hizmet düzeyi sözleşmesi (SLA), her hizmetin beklenen kullanılabilirliğini ve bu kullanılabilirlik beklentisini elde etmek için çözümünüzün karşılaması gereken koşulları açıklar. Daha fazla bilgi için bkz. Çevrimiçi hizmetler için SLA'lar.