Bu modülde Amazon Elastic Container Service’i (Amazon ECS) EC2 işlem bulut sunucularından oluşan yönetilen bir kümeyi başlatmak ve görüntünüzü bulut sunucusu üzerinde çalışan bir container olarak dağıtmak için kullanacaksınız. Oluşturmaya Başlayın

mimari genel bakış

a. İstemci
İstemci 80 numaralı bağlantı noktası üzerinden yük dengeleyicisine bir istek gönderir.

b. Yük Dengeleyici
Yük dengeleyici, istekleri erişilebilir tüm bağlantı noktalarına dağıtır.

c. Hedef Grupları
Bulut sunucuları uygulamanın hedef grubunda kayıtlıdır.

d. Container Bağlantı Noktaları
Her bir container, node.js ana kümesini kendi ad alanı içerisindeki 80 numaralı bağlantı noktasına bağlayan tek bir uygulama sürecini çalıştırır.

e. Container’lı node.js Tek Parça Uygulama
node.js ana kümesi, trafiği tek parçalı uygulama içerisindeki çalışanlara dağıtmaktan sorumludur. Bu mimari, container’lı olsa da her bir container diğer tüm container’lar ile aynı özelliklere sahip olduğundan tek parçalıdır.

Amazon Elastic Container Service (Amazon ECS), Docker container'larını destekleyen ve yönetilen bir Amazon EC2 bulut sunucuları kümesinde uygulamaları kolayca çalıştırmanıza olanak sağlayan, yüksek düzeyde ölçeklenebilir ve yüksek performanslı bir container yönetimi hizmetidir. Basit API çağrıları ile Docker özellikli uygulamaları başlatabilir ve durdurabilir, kümenizin tam durumunu sorgulayabilir ve güvenlik grupları, Elastic Load Balancing, EBS birimleri ve IAM rolleri gibi birçok bilinen özelliğe erişebilirsiniz.

Amazon ECS’yi container’ların kaynak ihtiyaçlarınıza ve erişilebilirlik gereksinimlerinize göre kümeniz içerisindeki yerleşimini planlamak için kullanabilirsiniz. Ayrıca, işe veya uygulamaya özgü gereklilikleri karşılamak için kendi zamanlayıcınızı veya üçüncü taraf zamanlayıcıları kullanabilirsiniz.

Amazon ECS için ek ücret uygulanmaz. Uygulamanızı depolamak ve çalıştırmak amacıyla oluşturduğunuz AWS kaynakları (örneğin EC2 bulut sunucuları veya EBS birimleri) için ücret ödersiniz.


Amazon ECS’yi kullanarak node.js uygulamasını dağıtmak için aşağıdaki adım adım yönergeleri izleyin. Bölümü genişletmek için her adımın numarasını seçin.

break-the-monolith
  • 1. Adım. AWS CloudFormation kullanarak bir ECS Kümesi başlatın

    Bir Application Load Balancer arkasında dağıtılan bir Amazon ECS kümesi oluşturun.

    1. AWS CloudFormation konsoluna gidin.
    2. Yığın oluştur ‘u seçin.
    3. Bir şablon dosyası yükle’yi seçin veecs.yml dosyasını amazon-ecs-nodejs-microservice/2-containerized/infrastructure/ecs.yml adresindeki GitHub projesinden seçin ve ardından Sonraki’ni seçin.
    4. Yığın adını BreakTheMonolith-Demo (TekParçaUygulamayıAyır-Demo) olarak yazın. Diğer parametrelerin aşağıdaki değerlere sahip olduğunu doğrulayın:
      1. İstenen Kapasite = 2
      2. Bulut Sunucusu Tipi = t2.micro
      3. Maksimum Boyut = 2
    5. Sonraki ‘ni seçin.
    6. Yığın seçeneklerini yapılandır sayfasında varsayılan seçenekleri koruyun ve aşağıya kaydırarak Sonraki’ni seçin.
    7. BreakTheMonolith-Demo’yu İncele sayfasında sayfanın en altına inin, onay kutusunu seçerek Özellikler ifadesini onayladıktan sonra Yığın Oluştur’ni seçin.

    Yığın durumunun CREATE_IN_PROGRESS (OLUŞTURMA_SÜRÜYOR) olduğunu göreceksiniz. İlerlemeyi kontrol etmek için ekranın sağ üst kısmındaki yenile düğmesini seçebilirsiniz. Bu işlem normalde 5 dakikadan az sürer.

    yığın oluştur

    ⚐ NOT: İsteğe bağlı olarak AWS CloudFormation yığınlarını dağıtmak için AWS Komut Satırı Arabirimini (AWS CLI) kullanabilirsiniz. amazon-ecs-nodejs-microservices/3-microservices klasöründen aşağıdaki kodu terminalde çalıştırın ve [region] kısmına AWS Bölgenizi yazın.

    $ aws cloudformation deploy \
       --template-file infrastructure/ecs.yml \
       --region [region] \
       --stack-name BreakTheMonolith-Demo \
       --capabilities CAPABILITY_NAMED_IAM
  • 2. Adım. Kümenizin Çalıştığını Kontrol Edin

    Amazon ECS Kümeyi Doğrular
    • BreakTheMonolith-DemoTekParçaUygulamayıAyır-Demo kümesini seçin, daha sonra çalışan görev olmadığını doğrulamak için Görevler sekmesini seçin.
    Amazon ECS Küme Görevleri
    • AWS CloudFormation şablonu tarafından oluşturulan iki Amazon EC2 örneği olduğunu doğrulamak için ECS Bulut Sunucuları sekmesini seçin.
      ⚐ Not: ECS aracısının güncel olmadığına dair bir mesaj almanız durumunda ECS aracısını güncellemeye yönelik yönergeler için Daha fazla bilgi edin ‘ni seçin.
    Amazon ECS Bulut Sunucuları
  • 3. Adım. Bir Görev Tanımı Yazın

    Görev tanımları Amazon ECS'nin uygulama container’larını küme boyunca nasıl dağıtacağını belirtir.

    • Amazon ECS sol gezinme menüsünden Görev Tanımları’nı seçin.
    • Yeni Görev Tanımı oluştur’u seçin.
    • Başlama türü uyumluluğu seç sayfasında, EC2 seçeneğinin ardından Sonraki adım’ı seçin.
    • Görev ve container tanımlarını yapılandır sayfasında aşağıdaki işlemleri yapın:
      • Görev Tanımı Adı alanına api girin.
      • Container Tanımları kısmına gidin ve Container ekle’yi seçin.
      • Container ekle penceresinde:
        • Tanımlı olmayan parametreler boş bırakılabilir veya varsayılan ayarlarla değiştirilebilir.
        • Container adı alanına api girin.
        • Görüntü alanına [account-ID].dkr.ecr.[region].amazonaws.com/api:v1 girin
          [account-ID] (hesap-kimliği) ve [region](bölge) kısımlarının yerine özel bilgilerinizi ekleyin. v1 etiketinin görüntüyü etiketlemek ve göndermek için Modül 1'de kullandığınız değerle eşleştiğinden emin olun. Bu, önceki modülde oluşturulan ECR depo görüntünüzün URL'sidir.
        • Bellek Sınırları alanında Hard limit’in (Sınırı değiştirilemeyen limit) seçili olduğunu doğrulayın ve değer olarak 256 girin.
        • Bağlantı noktası eşlemelerialtında Konak bağlantı noktası = 0 ve Container bağlantı noktası = 3000.
        • ORTAM seçeneğine gidin, CPU birimleri= 256.
    • Ekle’yi seçin.
      Görev ve container tanımlarını yapılandır sayfasına döneceksiniz.
    • Sayfanın en altına gidin ve Oluştur’u seçin.

    Görev Tanımınız konsolda listelenir.

    görev tanımı
  • 4. Adım. Application Load Balancer’ı Yapılandırın: Hedef Grup

    Application Load Balancer (ALB) hizmetinizin gelen trafiği kabul etmesini sağlar. ALB, trafiği otomatik olarak hedef grup olarak kullanarak kümenizde çalışan container örneklerine yönlendirir.

    VPC Adınızı Kontrol Edin: Bu AWS hesabını ilk kez kullanmıyorsanız birden fazla VPC'niz olabilir. Hedef Grubunuzu doğru VPC ile yapılandırmanız önemlidir.

    • EC2 Konsolu’nun Yük Dengeleyici bölümüne gidin.
    • Demo adlı Yük Dengeleyici’sini bulun.
    • Yük Dengeleyici ayrıntılarını görmek için demo’nun yanındaki onay kutusunu seçin.
    • Tanım sekmesinde VPC özniteliğini bulun (şu formatta: vpc-xxxxxxxxxxxxxxxxx).
      ⚐ Not: ALB hedef grubunu yapılandırırken bir sonraki adımda VPC özniteliğine ihtiyacınız olacaktır.
    vpc özniteliği

    ALB Hedef Gruplarını Yapılandırın

    • EC2 Konsolu’nun Hedef Grup bölümüne gidin.
    • Hedef grup oluştur’u seçin.
    • Aşağıdaki Hedef Grup parametrelerini yapılandırın (aşağıda listelenmeyen parametreler için varsayılan değerleri koruyun):
      • Hedef grup adı için, api girin.
      • Protokol için HTTP’yi seçin.
      • Bağlantı noktası için 80’i girin.
      • VPC için,Yük Dengeleyici tanımlamasından bir değerle eşleşen değeri seçin. Bu, büyük olasılıkla varsayılan VPC'niz deği̇ldi̇r.
      • Gelişmiş sağlık kontrolü ayarları kısmına girin ve aşağıdaki parametreleri gerektiği gibi düzenleyin: 
        • Sağlıklı eşik için 2 değerini girin.
        • Sağlıksız eşik için  2 değerini girin.
        • Zaman aşımı için 5 değerini girin.
        • Aralık için6 değerini girin.
    • Oluştur ‘u seçin.
    hedef grupları oluştur
  • 5. Adım. Application Load Balancer’ı Yapılandırın: Dinleyici

    ALB dinleyicisi ALB'nize gelen bağlantı isteklerini kontrol eder.

    ALB’ye bir Dinleyici ekleyi̇n

    • EC2 Konsolu’nun Yük Dengeleyici bölümüne gidin.
    • Yük Dengeleyici ayrıntılarını görmek için demo’nun yanındaki onay kutusunu seçin.
    • Dinleyiciler sekmesini seçin.
    • Dinleyici ekle’yi seçin ve aşağıdaki parametreleri gerektiği gibi düzenleyin:
      • Protokol:bağlantı noktası için HTTP’yi seçerek 80 değerini girin.
      • Varsayılan eylem/eylemler için, Yönlendir’i seçerek Hedef grup alanına api girin.
    • Kaydet’i seçin.
    ALB’ye dinleyici
  • 6. Adım. Tek Parça Uygulamayı Hizmet Olarak Dağıtın

    Tek parça uygulamayı kümeye bir hizmet olarak dağıtın.

    • Amazon ECS konsolu seçeneğine gidin ve sol menü çubuğundan Kümeler’i seçin.
    • BreakTheMonolith-Demo (TekParçaUygulamayıAyır-Demo) kümesini seçin, Hizmetler sekmesini seçtikten sonra Oluştur’i seçin.
    • Hizmeti yapılandırsayfasında aşağıdaki parametreleri düzenleyin (ve aşağıda listelenmeyen parametreler için varsayılan değerleri koruyun): 
      • Başlatma türü için EC2’yi seçin.
      • Hizmet adı için api’yi girin. 
      • Görevlerin sayısı için 1 değerini girin.
      • Sonraki adım’ı seçin.
    • Ağı yapılandır sayfasında Yük dengeleme bölümünde Application Load Balancer’ı seçin.
      Şu ek parametreler görünür: Hizmet IAM rolü ve Yük dengeleyici adı.
      • Hizmet IAM rolü için BreakTheMonolith-Demo-ECSServiceRole ögesini seçin.
      • Yük dengeleyici adı için demo seçildiğini doğrulayın.
    • Denge yüklenecek container bölümünde Yük dengeleyiciye ekle seçeneğini seçin.
      api: 3000 etiketli ek bilgiler gösterilir.
    • api:3000 bölümünde aşağıdaki işlemleri yapın:
      • Üretim dinleyici bağlantı noktası alanı için 80:HTTP’yi seçin.
      • Hedef grup adı için grubunuzu seçin:api.
      • Sonraki adım seçeneğini seçin.
    • Auto Scalingyi Ayarla sayfasında, varsayılan ayarı değiştirmeden Sonraki adımseçeneğini seçin.
    • Gözden geçirme sayfasında ayarları gözden geçirdikten sonra Hizmet Oluştur’u seçin.
    • Hizmet oluşturulduktan sonra Hizmeti Görüntüle’yi seçin.
    Amazon ECS Hizmeti API

    İyi iş! Artık çalışan bir hizmetiniz var. Container’in sağlıklı olarak kaydedilmesi ve trafik almaya başlaması bir dakika sürebilir.

  • 7. Adım. Tek Parça Uygulamanızı Test Edin

    Dağıtımınızı, hizmetin internette erişilebilir olup olmadığını kontrol ederek ve ping işlemi yaparak doğrulayın.

    Hizmet URL'nizi Bulmak İçin:

    • EC2 Konsolu’nun Yük Dengeleyicileri bölümüne gidin.
    • demo yük dengeleyicinizi seçin.
    • Açıklama sekmesinde DNS adını kopyalayarak yeni bir tarayıcı sekmesine veya penceresine yapıştırın.
    • İstekleri almaya hazır mesajını görmelisiniz.


    Hizmetin Her Bölümüne Bakın:
    node.js uygulaması URL'yi esas alarak trafiği her çalışana yönlendirir. Bir çalışanı görmek için çalışan adını api / [worker-name] DNS Adının sonuna aşağıdaki gibi eklemeniz yeterlidir:

    • http://[DNS name]/api/users
    • http://[DNS name]/api/threads
    • http://[DNS name]/api/posts

    Belirli bir kaydı ayrıntılı olarak incelemek için URL'nin sonuna bir kayıt numarası da ekleyebilirsiniz. Örneğin: http://[DNS name]/api/posts/1 veya http://[DNS name]/api/users/2

    kullanıcı demosu