Bir ölçeklendirme grubundaki ECS örneklerinde uygulamaları dağıtın ve güncelleyin. Yaşam döngüsü kancaları, ölçek büyütme sırasında yayınlamayı ve ölçek küçültme sırasında zarif kapatmayı otomatikleştirir.
Genel Bakış
Uygulama yayınlama, kaynak dosyaları ve başlatma/durdurma betiklerini bir dağıtım yapıtı içinde paketler ve bunları standart bir yayın süreci aracılığıyla ölçeklendirme grubu örneklerine dağıtır.
Desteklenen dağıtım yapıtı türleri
Uygulama kaynak dosyalarınızın depolandığı yere göre bir dağıtım yapıtı türü seçin:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Yayınlama yetenekleri
Yayınlama modu: Tam yayınlama (tüm örnekler) veya kanarya sürümü (doğrulama için seçilen bir alt küme).
Toplu iş kontrolü: Dağıtım riskini azaltmak için yapılandırılabilir duraklamalarla toplu işler halinde yayınlama yapın.
-
Auto Scaling entegrasyonu:
Ölçek büyütmede otomatik yayınlama: Yeni örnekler en son sürümü otomatik olarak dağıtarak tutarlılığı sağlar.
Ölçek küçültmede zarif kapatma: Bir örneği kaldırmadan önce sistem durdurma betiğini yürüterek iş süreçlerinin sonlandırmadan önce tamamlandığından emin olur.
Sınırlamalar
Örnek işletim sistemi: Yalnızca Linux tabanlı ECS örnekleri desteklenir.
Betik dili: Başlatma ve durdurma betikleri shell betikleri olmalıdır.
Dağıtım akışı: Sistem başlatma betiğinden önce durdurma betiğini çalıştıran önce durdur-sonra başlat ilkesini izler.
Veri riski: ECS görüntüsü dağıtım türünü kullandığınızda sistem örneğin sistem diskini değiştirir. İlerlemeden önce verilerinizi yedeklemelisiniz.
Dağıtım yapıtı oluşturma
Auto Scaling konsolu üzerinde oturum açın.
Sol gezinme bölmesinde Scaling Groups seçeneğine tıklayın.
Üst gezinme çubuğunda Auto Scaling'in etkinleştirildiği bölgeyi seçin.
Ölçeklendirme grubu ayrıntıları sayfasına gitmek için bir Scaling Group ID seçin. seçeneklerini belirleyin.
-
Kullanım durumunuza göre bir dağıtım yapıtı türü seçin ve yapılandırın.
OSS dosyası
OSS'de depolanan uygulama paketleri (JAR, WAR, ZIP) içindir. Yayınlama sırasında sistem dosyaları çalışma dizinine indirir, durdurma betiğini ve ardından başlatma betiğini çalıştırır.
-
Yapılandırma öğeleri:
OSS Bilgileri: OSS Region ve OSS Bucket seçin. OSS file alanına paketteki dosyanın yolunu girin; örneğin
apps/sample-spring-1.0-SNAPSHOT.jar.İç ağ üzerinden indirme: ECS örneği ile OSS paketi aynı bölgedeyse daha hızlı indirme için bu özelliği etkinleştirin.
-
Örnek başlatma/durdurma betikleri:
Uygulama başlatma betiği:
start_application() { set -e yum install -y maven-3.5.4 java -jar ./sample-spring-1.0-SNAPSHOT.jar & } start_applicationUygulama durdurma betiği:
ÖnemliDurdurma işlemine gerek yoksa durdurma betiğini boş bırakın. Sistem dağıtım sırasında bunu atlar.
### Stop the application (if any) stop_application() { PID=$(ps -ef | grep "sample-spring-1.0-SNAPSHOT.jar" | grep -v "grep" | awk '{print $2}') if [ -n "$PID" ]; then kill -9 $PID fi } stop_application
ECS görüntüsü
Karmaşık ortamlara veya sıkı başlatma süresi gereksinimlerine sahip uygulamalar içindir. Yayınlama sırasında sistem örnek sistem disklerini belirtilen görüntüyle değiştirir.
ECS image dağıtım yapıtı türünü seçtiğinizde Add düğmesine tıklayın ve ölçeklendirme grubunuzla aynı bölgedeki bir görüntü seçin.
-
Yapılandırma öğeleri:
Bölge: Ölçeklendirme grubuyla aynı bölgeyi seçin.
Görüntü Kimliği: Dağıtılan uygulamayı içeren ve ölçeklendirme grubuyla aynı bölgede bulunan özel bir görüntü seçin.
ÖnemliECS image dağıtım yapıtı türü uygulama başlatma/durdurma betiklerini desteklemez. Uygulamayı otomatik olarak başlatmak için uygulamanın önyüklemede başlamasını yapılandırın veya bir yaşam döngüsü kancasını manuel olarak yapılandırın.
Docker görüntüsü
Konteynerleştirilmiş uygulamalar içindir. Yayınlama sırasında sistem ACR'den görüntüyü çeker, önceki konteyneri kaldırmak için durdurma betiğini çalıştırır (varsa) ve ardından yeni konteyneri başlatmak için başlatma betiğini çalıştırır.
ÖnemliBu özellik yalnızca Container Registry (ACR) Kurumsal Sürüm örneklerinden Docker görüntülerini destekler. ACR Kişisel Sürüm örneklerinden veya üçüncü taraf görüntü depolarından görüntüleri dağıtmak için yalnızca komut çalıştırma dağıtım türünü kullanın.
-
Yapılandırma öğeleri:
Docker Görüntü Bilgileri: Container Registry Region, Container Registry Instance ID, Namespace, Repository Name, ve Image Tag gibi parametreleri ayarlayın.
İç ağ üzerinden çekme: Görüntü deponuzun ve ECS örneğinizin aynı VPC'de olduğundan emin olun. VPC için erişim denetimini yapılandırma.
-
Başlatma/durdurma betikleri:
Uygulama başlatma betiği:
ÖnemliHedef örneklerde Docker yüklü olmalıdır.
Sistem betik yürütmeden önce Docker görüntüsünü otomatik olarak çeker. Betiğe görüntü çekme komutlarını dahil etmeyin.
### During a release, the Docker image is automatically pulled to the ECS instance. You can directly start the container. ### Start the current version of the container. ### Replace <image_name> with the actual image address. start_application() { image_name="<image_name>" container_name="my-container" docker run -d -p 8080:8080 --name ${container_name} ${image_name} } start_applicationUygulama durdurma betiği:
ÖnemliDurdurma işlemine gerek yoksa durdurma betiğini boş bırakın. Sistem dağıtım sırasında bunu atlar.
stop_application() { # Find the container by its name and delete it if it exists. container_name="my-container" container_id=$(docker ps -aq -f name=${container_name}) if [ -n "$container_id" ]; then docker rm -f $container_id fi } stop_application
Yalnızca komut
Kaynak dosya gerekmez — yalnızca bir shell betiği çalıştırır; örneğin kodu üçüncü taraf bir kaynaktan çekme. Sistem durdurma betiğini ve ardından başlatma betiğini çalıştırır.
Yapılandırma öğeleri: Dağıtım kaynağı gerekmez. Yalnızca Working Directory belirtin.
-
Örnek başlatma/durdurma betiği (genel görüntü çekme):
Uygulama Başlatma Betiği:
### Start the current version of the application. start_application() { repo="<repo>" image="<image>" container_name="my-container" docker login --username=${username} --password=${password} $repo docker pull $image docker run -d -p 8080:8080 --name $container_name $image } start_applicationUygulama durdurma betiği:
ÖnemliDurdurma işlemine gerek yoksa durdurma betiğini boş bırakın. Sistem dağıtım sırasında bunu atlar.
### Stop the container (if any). stop_application() { # Find the container by its name and delete it if it exists. container_name="my-container" container_id=$(docker ps -aq -f name=${container_name}) if [ -n "$container_id" ]; then docker rm -f $container_id fi } stop_application
-
-
Yapılandırmayı tamamladıktan sonra Create and Publish veya Create Only düğmesine tıklayın.
Create and Publish düğmesine tıklamak sizi Deployment Release yapılandırma sayfasına yönlendirir.
Dağıtım yapıtı yayınlama
App Release sekmesinde seçeneklerini belirleyin.
Yayınlamak istediğiniz dağıtım yapıtının Deployment Artifact ID değerini seçin.
-
Yayınlama ilkesini yapılandırın:
-
Yayınlama Modu:
Tam yayınlama: Gruptaki tüm örneklere dağıtım yapar.
Canary Release: Doğrulama için manuel olarak seçilen örneklere dağıtım yapar.
Toplu İş İlkesi: Execution Batch sayısını (örneğin 2) ayarlayın ve bir Batch Mode (Duraklama Yok, İlk Toplu İşten Sonra Durakla veya Her Toplu İşten Sonra Durakla) seçin.
-
Ölçeklendirme Senaryoları: Ölçek büyütmede otomatik yayınlama ve ölçek küçültmede zarif kapatma özelliklerini etkin tutun.
Ölçek büyütmede otomatik yayınlama: Ölçek büyütme sırasında eklenen yeni örneklere uygulamayı dağıtır. Bir ölçek büyütme yaşam döngüsü kancası otomatik olarak yapılandırılır.
Ölçek küçültmede zarif kapatma: Örnek kaldırılmadan önce durdurma betiğini yürütür. Bir ölçek küçültme yaşam döngüsü kancası otomatik olarak yapılandırılır.
-
Yayınlamayı başlatmak için OK düğmesine tıklayın. Yürütme durumunu ve günlükleri görüntülemek için listedeki Details bağlantısına tıklayın.
Üretim ortamı en iyi uygulamaları
Üretim kararlılığı için en iyi uygulamalar:
-
Yayınlama risklerini azaltma:
Yeni sürümü önce küçük bir örnek kümesinde doğrulamak için Canary Release kullanın.
Tam bir yayınlama için toplu iş yayınlamalarını etkinleştirin ve Suspend First Batch seçeneğini belirleyin. Sonraki toplu işlere geçmeden önce ilk toplu işi doğrulayın.
İş sürekliliğini sağlama: Uçuştaki isteklerin tamamlanmasını bekleyen ve sonlandırmadan önce bağlantıları kapatan bir durdurma betiği ile ölçek küçültmede zarif kapatma özelliğini etkinleştirin.
Sürüm tutarlılığını sağlama: Yeni örneklerin her zaman en son sürümü çalıştırması için ölçek büyütmede otomatik yayınlama özelliğini etkinleştirin.
SSS
-
Windows desteği
Hayır. Yalnızca Linux tabanlı ECS örnekleri desteklenir.
-
Yayınlama sırasında ölçeklendirme
Evet. Uygulama yayınlama, ölçeklendirme etkinliklerini engellemez.
-
Yayınlama günlükleri ve sonuçları
Deployment Release listesine gidin ve her örnek için yürütme durumu ile betik çıkış günlüklerini görüntülemek üzere bir Execution ID değerine tıklayın.
-
Dağıtım hatasının etkisi
Bir betik başarısız olursa ilgili örnek Başarısız durumunda görünür. Toplu iş yayınlaması ve Suspend Each Batch veya Suspend First Batch seçeneğiyle sonraki toplu işler işlenmez, böylece etki alanı sınırlanır. Önce küçük bir örnek kümesi üzerinde doğrulama yapmak için Canary Release kullanın.
-
Betik yürütme dizini
Betikler, dağıtım yapıtı oluşturulurken belirtilen Çalışma Dizini'nde yürütülür.