Amazon ECS ile Amazon EC2 arasındaki fark nedir?


127

AWS EC2'yi kullanmaya yeni başlıyorum. EC2'nin istediğim hemen hemen her şeyi yapabileceğim bir uzak bilgisayar gibi olduğunu anlıyorum. Sonra ECS'yi öğrendim. Docker kullandığını biliyorum ama bu ikisi arasındaki ilişki konusunda kafam karıştı.

ECS, EC2'de yalnızca bir Docker kurulumu mu? Zaten bir EC2'ye sahipsem ve bir ECS başlatıyorsam bu, iki bulut sunucum olduğu anlamına mı gelir?

Yanıtlar:


169

Senin sorun

ECS, EC2'de yalnızca bir docker kurulumu mu? Zaten bir EC2'ye sahipsem, bir ECS başlatırım, bu iki örneğim olduğu anlamına mı gelir?

Hayır AWS ECS, EC2örneklerin mantıksal bir gruplamasıdır (küme) ve tüm EC2örnekler, bir ana bilgisayar ECSolarak hareketin parçasıdır, Dockeryani ECS üzerlerinde bir kapsayıcı başlatmak için komut gönderebilir ( EC2). Zaten bir EC2'niz varsa ve ardından ECS'yi başlatırsanız, yine de tek bir örneğiniz olur. ECS'yi ECS'ye ekler / kaydederseniz (AWS ECS Container Agent'ı yükleyerek) EC2 kümenin bir parçası olur, ancak yine de tek bir EC2 örneği olur.

EC2 kaydı olmayan (kümeye eklenmiş) bir Amazon ECS hiçbir işe yaramaz.


TP; DR

Genel Bakış

  • EC2 - basitçe uzak (sanal) bir makinedir.
  • ECSaçılımı Elastic Container Service- temel tanıma uygun olarak bilgisayar küme , ECStemel olarak bir mantıksal gruplandırmadır EC2makineleri / durumlarda . Teknik olarak konuşursak ECS, EC2 örnek (ler) in kaynaklarınızın verimli kullanımı ve yönetimi için yalnızca bir yapılandırmadır (ör. Depolama, bellek, CPU vb.)

Daha da basitleştirmek için, Amazon ECSherhangi bir EC2örnek eklenmemiş bir başlattıysanız , hiçbir şey için iyidir, yani bu konuda hiçbir şey yapamazsınız. ECSyalnızca bir (veya daha fazla) EC2örnek eklendiğinde anlamlıdır .

Buradaki bir sonraki kafa karıştırıcı şey, konteyner terimidir - ki bu tamamen sanallaştırılmış makine örnekleri değildir ve Docker , konteyner örnekleri oluşturmak için kullanabileceğimiz bir teknolojidir. Dockerbizim makinemize kurabileceğiniz bir yardımcı programdır, bu onu bir Dockerana bilgisayar yapar ve bu ana bilgisayarda kapsayıcılar oluşturabilirsiniz (sanal makinelerle aynı - ancak çok daha hafif). Özetlemek gerekirse ECS, EC2 bulut sunucularının kümelenmesi ile ilgilidir ve Dockerbu ( EC2) ana bilgisayarlarda kapsayıcıları / örnekleri / sanal makineleri başlatmak için kullanır .

Yapmanız gereken tek şey bir başlatmak ECSve EC2ihtiyaç duyduğunuz kadar çok örnek kaydetmek / eklemek . EC2 bulut sunucuları ekleyebilir / kaydedebilirsiniz; tek ihtiyacınız olan, EC2 bulut sunucunuzda / makinenizde çalışan Amazon ECS Container Agent'tır. Bu, manuel olarak veya doğrudan özel AMI (Amazon Machine Image), yani halihazırda sahip olan Amazon ECS için optimize edilmiş AMI kullanılarak yapılabilir. Amazon ECS Container Agent. Yeni bir EC2 bulut sunucusunun başlatılması sırasında, Aracı onu otomatik olarak varsayılan ECS kümesine kaydeder.

Kap madde örnekleri (her biri üzerinde çalışan EC2bir mesafede olan örnekler) Amazon ECSküme örneğinin mevcut çalışan görevlerin ve Amazon ECS kaynak kullanımı, ve başlar hakkında bilgi gönderir ve Amazon ECS bir talep aldığı her görevleri durur. Daha fazla bilgi için bkz.Amazon ECS Container Agent . Bir kez ayarlandıktan sonra, oluşturulan kapsayıcı örneklerinin her biri (hangi EC2makine / düğümden olursa olsun ) Amazon ECSsürüsündeki bir örnek olacaktır .


Daha fazla bilgi için bu belgedeki 10. adımı okuyun: Bir Amazon ECS Container Bulut Sunucusunu Başlatma :

Kapsayıcı örneğiniz için bir AMI seçin. Amazon ECS için optimize edilmiş AMI'yi veya CoreOS ya da Ubuntu gibi başka bir işletim sistemini seçebilirsiniz. Amazon ECS için optimize edilmiş AMI'yi seçmezseniz Amazon ECS Container Agent'ı Yükleme bölümündeki prosedürleri izlemeniz gerekir .

Varsayılan olarak, kapsayıcı örneğiniz varsayılan kümenizde başlatılır. Varsayılan yerine kendi kümenizi başlatmak istiyorsanız, Gelişmiş Ayrıntılar listesini seçin ve aşağıdaki komut dosyasını Kullanıcı verileri alanına yapıştırarak kümenizin_adını, kümenizin adıyla değiştirin.

#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config

Veya Amazon S3'te bir ecs.config dosyanız varsa ve Amazon S3'ün kapsayıcı örnek rolünüz için salt okunur erişimini etkinleştirdiyseniz, Gelişmiş Ayrıntılar listesini seçin ve aşağıdaki komut dosyasını Kullanıcı verileri alanına yapıştırın, your_bucket_name'nizi şu adla değiştirin: Paketiniz, AWS CLI'yi yüklemek ve başlatma sırasında yapılandırma dosyanızı yazmak için. Not Bu yapılandırma hakkında daha fazla bilgi için bkz. Container Instance Configuration'ı Amazon S3'te Saklama.

#!/bin/bash
yum install -y aws-cli
aws s3 cp s3://your_bucket_name/ecs.config /etc/ecs/ecs.config

Daha fazla açıklığa kavuşturmak için - EC2olmadan tek örneğinizde kapsayıcılar oluşturabilirsiniz ECS. Konteynırlaştırma teknolojilerinden herhangi birini yükleyin, yani Dockerkonteynır oluşturma komutunu çalıştırın, kendinizi EC2bir Dockerana bilgisayar olarak ayarlayın ve Dockeristediğiniz kadar konteynere (veya EC2kaynaklarınızın izin verdiği kadar) sahip olun.


8
ECS, Elastic Container Service anlamına gelmiyor mu?
lfk

1
AWS Fargate'in 2018'in başlarında piyasaya sürülmesiyle (ECS'yi çalıştıran) bu cevabın artık önemli ölçüde güncelliğini yitirmiş olduğuna dikkat edilmelidir: aws.amazon.com/fargate
bsplosion

77

Basit bir deyişle, ECS bir yöneticidir, EC2 bulut sunucuları ise tıpkı çalışanlar gibidir. Bu yönetici (ECS) altındaki tüm çalışanlar (EC2) "Docker" görevlerini yerine getirebilir ve yönetici de "docker" ı oldukça iyi anlar. Böylece, ne zaman "docker" kaynaklarına ihtiyacınız olursa, Yöneticiye görünürsünüz. Yönetici zaten her çalışandan statüye sahiptir (EC2), hangisinin görevi yerine getireceğine karar verir.

Şimdi, sorunuza geri dönersek, "çalışanı" olmayan bir yönetici bir anlam ifade etmiyor.

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


Çok güzel bir açıklama. Senden sonra!
Matley

ECS olmadan EC2 bulut sunucularına sahip olabilirsiniz, ancak bu sadece basit bir virütal makine gibi olur.
Lea Reimann

31

EC2, neredeyse istediğiniz her şey için kullanabileceğiniz ayrı bulut sunucuları başlatmanıza olanak tanır. ECS bir kapsayıcı hizmetidir, yani kapsayıcı uygulamalarını başlatmaya hazır olacak bulut sunucuları başlatır. İki hizmet arasındaki temel fark, EC2 ile, seçtiğiniz yöntem ne olursa olsun (manuel olarak, bir CM aracı kullanarak veya başka bir şekilde) her bir örneği ayrı ayrı yönetmeniz gerektiğidir - uygulamalarınızı dağıtın ve sunucular arasındaki bağlantıyı kendiniz koruyun. ECS, konteyner uygulamalarınızın dağıtım alanı olarak hizmet verecek bir makine kümesi başlatmanıza olanak tanır ve kümedeki tüm örnekleri konteyner iş yükünüz için kullanılabilir tek bir büyük örnek olarak değerlendirmenize olanak tanır.

Ve sorunuzu yanıtlamak için - İçinde örnek olmayan bir ECS kümesi başlatabilirsiniz, ancak bu durumda üzerinde hiçbir şey çalıştıramaz. Bir ECS kümesinin içinde bir EC2 bulut sunucusunu kaydettiğinizde, kapsayıcılar içinde çalışmaya hazırdır. Sonuç olarak, hem ECS hem de EC2'yi tek bir bulut sunucusu ile kullanabilirsiniz, ancak bu hizmetlerin inşa edildiği gerçek kullanım durumu bu değildir.


3

Basitçe ifade etmek gerekirse, Elastic Container Service (ECS) bir Docker kapsayıcı düzenleme hizmetidir.

Otomatik ölçeklendirme özellikli bir " Hizmet " veya geçici " Görev " olarak bir veya daha fazla Docker görüntüsü çalıştırmasını isteyebilirsiniz .

Hizmetler ve görevler bir " Küme " üzerinde çalışır . Başlangıçta, Küme, ECS Küme Aracısı çalıştıran bir veya daha fazla önceden yapılandırılmış EC2 sunucusundan oluşan bir gruptu. Küme Aracısı, kapsayıcıları EC2 sunucusunda planlar. Bu EC2 sunucuları, EC2 Bulut Sunucuları listenizde görünür ve dakika başına normal EC2 maliyetiyle ücretlendirilir - Herhangi bir normal EC2 sunucusu gibi bunlara SSH bile yapabilirsiniz. Daha fazla Hizmet veya Görev çalıştırmak için daha fazla kapasite istiyorsanız veya EC2 arızasına karşı dayanıklılık istiyorsanız, daha fazla EC2 sunucusu gerekir.

Kasım 2017 civarında AWS, ECS Fargate'i ekledi . Artık bir Küme, EC2 düğümlerini sağlamadan "sunucusuz" çalışabilir. Sadece Görevinizin veya Hizmetinizin çalışması için gereken CPU ve bellek miktarını tanımlarsınız, yani EC2 yerine yalnızca CPU ve bellek süresi için ödeme yaparsınız.


2

Tamam, bildiğiniz gibi EC2, AWS'de sanal bir makinedir ve ECS, AWS'de bir konteyner düzenleme sistemidir.

ECS'yi kullanmak için, kapsayıcınızı, EC2'nin bunu sağlama seçeneklerinden biri olduğu bazı sanal makinelerde çalıştırmanız gerekir.

ecs-agentECS ile bağlantı kurmak için EC2'ye kurmanız gerekecek . ECS ayrıca EC2'nizdeki kaynak kullanımlarını da izleyebilir. Yani temel olarak daha yüksek seviyeli EC2 türünü seçersiniz, ardından konteynerinizin kullanabileceği daha fazla kaynağı (CPU / MEM) seçersiniz.


0

En önemli fark, ECS'nin sağladığı Fargate Bulut Sunucularıdır.

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.