AWS ECS'de bir görev ile hizmet arasındaki fark nedir?


114

Bir Görev Tanımına göre bir Görev veya bir Hizmet çalıştırılabileceği anlaşılıyor. Görev ve Hizmet arasındaki farklar ve benzerlikler nelerdir? Görev oluştururken "Görev Grubu" nun belirtilebileceği, ancak Hizmetin belirlenemeyeceği konusunda bir ipucu var mı? Görev ve Hizmet, Görev Tanımının hiyerarşik olarak eşit örnekleri mi yoksa Hizmet, Görevlerden mi oluşuyor?

Yanıtlar:


235

Bir görev Tanım 1 veya daha fazla bir koleksiyon kap konfigürasyonları . Bazı Görevler yalnızca bir konteynere ihtiyaç duyabilirken, diğer Görevler aynı anda çalışan 2 veya daha fazla potansiyel olarak bağlantılı konteynere ihtiyaç duyabilir. Görev tanımı, hangi Docker görüntüsünün kullanılacağını, hangi bağlantı noktalarının açığa çıkarılacağını, tahsis edilecek CPU ve bellek miktarını, günlüklerin nasıl toplanacağını ve ortam değişkenlerini tanımlamanızı sağlar.

Bir Görevi doğrudan çalıştırdığınızda bir Görev oluşturulur; bu kaplar (görev tanımında tanımlanan) durdurulana veya kendiliğinden çıkana kadar başlatır ve bu noktada otomatik olarak değiştirilmezler . Görevleri doğrudan Çalıştırmak, kısa süreli işler için idealdir, belki de CRON aracılığıyla gerçekleştirilen şeylere örnek olarak.

Bir Hizmet , her zaman belirli sayıda Görevinizin her zaman çalıştığından emin olmak için kullanılır . Bir Görev kapsayıcısı hata nedeniyle çıkarsa veya temeldeki EC2 örneği başarısız olursa ve değiştirilirse, ECS Hizmeti başarısız Görevi değiştirir. Bu nedenle , Hizmetin CPU, Bellek ve Ağ bağlantı noktaları açısından bol miktarda kaynağa sahip olması için Kümeler oluşturuyoruz . Bizim için Görevlerin çalıştıkları sürece hangi örnek üzerinde çalıştığı gerçekten önemli değil. Bir Servis yapılandırma başvuruları bir görev tanımı. Görevleri oluşturmaktan bir Hizmet sorumludur .

Hizmetler genellikle web sunucuları gibi uzun süre çalışan uygulamalar için kullanılır. Örneğin, Oregon'da Node.JS tarafından desteklenen web sitemi (us-west-2) dağıttıysam, Yüksek Erişilebilirlik uğruna üç Erişilebilirlik Alanında (AZ) çalışan en az üç Görev olduğunu söylemek isterim; biri başarısız olursa, bende iki tane daha var ve başarısız olan değiştirilecek (bunu kendi kendini iyileştirme olarak okuyun !). Bunu yapmanın yolu bir Hizmet oluşturmaktır. Kümemde AZ başına 2 adet olmak üzere 6 EC2 bulut sunucum olsaydı, Hizmet, cpu, bellek ve ağ kaynaklarını da dikkate alırken, olabildiğince en iyi şekilde bölgeler arasında Görevleri otomatik olarak dengeleyecektir.

GÜNCELLEME:

Bunları hiyerarşik olarak düşünmenin yardımcı olduğundan emin değilim.

Bir diğer önemli nokta da, bir Hizmetin bir yük dengeleyici kullanacak şekilde yapılandırılabilmesidir, böylece Görevleri oluştururken - yani Görev Tanımında tanımlanan kapsayıcıları başlatır - Hizmet, otomatik olarak kapsayıcının EC2 bulut sunucusunu yük dengeleyiciye kaydeder. Görevler bir yük dengeleyici kullanacak şekilde yapılandırılamaz, yalnızca Hizmetler yapabilir.


1
Çok teşekkür ederim @talentedmrjones! Öyleyse, "Kısa süren işler için Görevi ve uzun süreli hizmetler için Hizmeti kullanın" kadar basit mi? "Görev ve Hizmet hiyerarşik olarak eşit Görev Tanımları mı, yoksa Hizmet Görevlerden mi oluşuyor" hakkında yorum yapma şansınız var mı?
Bob Jones

Anlamadığım şey: neden görev oluşturulduğunda ortam değişkenlerinin değerlerini değiştirebiliyorum ama servis için mümkün görünmüyor
Nikolay Klimchuk

1
@NikolayKlimchuk hizmetleri yalnızca görevleri yönetir - ortamları tanımlayan ve kullanan görevlerin kendisidir.
bwobst

"görev grubu" nedir
red888

@NikolayKlimchuk geç cevap için özür dilerim. Hizmetler kapsayıcıları planlamak için kullanılır , görevler kapsayıcıları tanımlamak için kullanılır . Bu nedenle, env değişkenlerini kontrol etmek için görevleri kullanırsınız.
talentedmrjones

42

@Talentedmrjones tarafından güzelce açıklanmıştır. Aşağıdaki resim, kolayca görselleştirmenize yardımcı olacaktır :)

Küme, Hizmet, EC2 Bulut Sunucusu ve Görev iş başında


Güzel görselleştirme! :-)
sgsi

2
Herhangi bir yanıt görüntüleyici Amazon ECS'yi derinlemesine incelemek isterse lütfen şu adresi ziyaret edin: ECS'yi freecodecamp.org/news/… edin . Güzelce açıklandı!
realPK

@realPK gerçekten çok faydalı bir sayfa, tavsiye için teşekkürler!
Christophe

2

Görev Tanımı:

Bu, hangi Docker konteynerlerinin çalıştırılacağını ve uygulamanızı temsil ettiğini açıklayan plandır. Birkaç görev içerir.

Görev Tanımı

Hizmet:

Görev Tanımının bir örneği. Ayrıca, herhangi bir zamanda çalışan bir Görev Tanımı'ndaki minimum ve maksimum Görevleri, otomatik ölçeklendirmeyi ve yük dengelemeyi tanımlar.

ECS Container Bulut Sunucuları:

Bu, Docker ve üzerinde çalışan bir ECS Container Aracısı bulunan bir EC2 bulut sunucusudur. Aracı, konteyner çalıştırma durumunu sağlayarak ve yenilerini çalıştırmayı yöneterek, ECS ile bulut sunucusu arasındaki iletişimle ilgilenir.

İlişki:

görüntü açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.