Bir AWS Otomatik Ölçeklendirme Grubunda yeni bir görüntüyü otomatik olarak nasıl değiştirebilirim?


21

Ölçeklendirmeyi yönetmek için bir yük dengeleyici ve otomatik ölçekleme grubuyla bir web uygulaması kurulumum var. Kaynak kodu git deposunda, bu yüzden kod değiştiğinde görüntüleri güncellemem gerekmiyor, ancak bazen ortam değişiyor, bu yüzden yeni bir görüntü oluşturuyoruz. Daha sonra bu görüntünün otomatik ölçekleme grubuna çevrilmesi gerekir.

Görüntüleri otomatik olarak çevirmenin bir yolu var mı? Şu anda eski örneklerden kurtulan bir ölçeklendirme ve ölçeklendirme eylemi planlıyorum.


2
Yeni başlatma yapılandırmanızı oluşturduktan ve otomatik ölçeklendirme grubunuzu güncelledikten sonra, her örneği sağlıksız (örn. Kullanarak as-set-instance-health) olarak işaretlerseniz , otomatik ölçeklendirme yalnızca yeni bir örnekle değiştirilirse daha etkilidir .
cyberx86

Yanıtlar:


10

Bunu yapmak için "AWS-HA-Release" önermek istiyorum - AWS-HA-Release'nin çalışma şekli:

  1. Mevcut otomatik ölçeklendirme grubu ve ELB sağlıklı 5 durum bildiriyorsa,
  2. AWS-HA-Release yeni bir örneği üretime getirir ve ELB'nin onu sağlıklı olarak tanımlamasını bekler (toplam sağlıklı örnek sayısını 6'ya getirir)
  3. Eski bir örneği kaldırır (toplam 5'e kadar)
  4. Başka bir örneği hizmete sokar (toplam 6)
  5. Eski bir örneği kaldırır (toplam 5'e kadar)
  6. vb. tüm örnekler değiştirilene kadar

Bu durumda, yeni kodu veya yeni AMI sürümlerini kesinti olmadan gönderebilir ve tamamen yeni örneklerden yararlanabilirsiniz. AWS-HA-Release aracını https://github.com/colinbjohnson/aws-missing-tools adresinde bulabilirsiniz .


9

Daha kolay yol, Otomatik Ölçekleme Grubu'ndaki (ASG) minimum örnek sayısını mevcut sayınızın iki katına çıkarmak, hepsinin başlatıldığını beklemek ve daha sonra bu minimum örnek sayısını olduğu gibi değiştirmek. ELB, eski örnekleri öldürecek ve daha yeni örnekleri kodla bırakacaktır. Bunu sağlamak için Fesih politikasının amaçlandığı şekilde çalışması için 'En Eski Anlaşma ' olarak ayarlanması gerekir . Varsayılan fesih politikasının istenmeyen yan etkileri olabilir.

AWS CLI parametrelerine ve örneklerine buradan bakabilirsiniz: http://docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html


Şerefe, bu süper kullanışlı, sorunsuz bir yöntemdir.
Elad Nava

1
Bu, AWS belgelerine göre, özel bir sonlandırma politikası seçerken bile ASG, sonlandırma politikasını uygulamadan önce AZ'nin dengesini koruyacaktır. Yani sadece iki katına çıkarmak ve boyutu yarıya indirmek sizi birkaç eski örnekle bırakabilir. Bu, özellikle birden çok örnek türüne ve satın alma seçeneğine sahip bir ASG kullanıldığında mümkündür, çünkü ASG, 'OldestInstance' politikasını uygulamadan önce AZ'nin dengeli VE piyasa seçeneğini (talep üzerine spot) dengeli tutacaktır: docs.aws.amazon.com / autoscaling / ec2 / userguide /…
Shahad

6

Bu senaryoyu yönetmenin yolu bulut oluşumunda AWS :: AutoScaling :: AutoScalingGroup nesnesinin UpdatePolicy özelliğini kullanmaktır. bulut oluşturma yığını güncellendiğinde, örneklerin döngüsünü yönetir.

bazı referanslar. http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy .html


Bir ton @graeme teşekkürler. Cloudformation'ın bu işlevi sunduğu hakkında hiçbir fikrim yoktu.
AJB

Tam aradığım şey. AWS konsolundaki değişiklikler kilitlendiğinden yığınlarımızı Jenkins aracılığıyla dağıtırız.
Greg Biles

3

Ayrıca şimdi açık kaynak olan Netflix Asgard aracına da göz atın . Yalnızca Otomatik Ölçekleme Grupları oluşturmakla kalmaz, aynı zamanda bir grup örnek için yeni AMI görüntülerinin yuvarlanma sürümlerini de gerçekleştirebilir.


Yani "Netflix Asgard"

4
Netflix Asgard artık kullanımdan kaldırıldı, yerini Netflix Spinnaker aldı
dlaidlaw

0

Dürüst olmak gerekirse bunu yapmanın gerçekten iyi bir yolu yok. Bunu yapmanın en iyi yolu ASG adına bir sürüm koymaktır. AMI'yi her güncellediğimde, diğer grupla çakışmaması için yeni sürümle yeni bir ASG + Launch Config oluşturuyorum. Sonra eski gruptaki tüm örnekleri sonlandırıyorum.

Daha fazla hataya dayanıklı dağıtım gerekirse, yeni bir yük dengeleyici de oluşturarak başka bir adım eklemenizi tavsiye ederim. Bu, her iki ASG'nin birbirinden izole edilmesini sağlar. Ayrıca, güncellemeden önce değişikliklerinizi son bir kez test etmek için bir "Aşama" alanına sahip olmanızı sağlar. Sonra geçiş yapmaya hazır olduğunuzda, DNS kayıtlarını güncelleyin ve eski gruptaki tüm örnekleri sonlandırın.


0

Ben yayınlanmıştır gibi burada (benzer bir soru, sadece Terraform ile), bu cloudformation kullanırsanız dışında herhangi bir şekilde ASG yerleşik değildir. Ben de onunla mücadele etti, böylece birden fazla ASG izleyen, durumlarını ve güncellemelerini kontrol eden bir "silindir" yazdı. Geri bildirim almaktan her zaman mutlu oluruz. http://github.com/deitch/aws-asg-roller

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.