Nginx yapılandırma dosyasını aynı anda birçok aynı sunucuda nasıl güncelleyebilirim?


12

Amazon EC2'de yeni ayarları uygulamak için zaman zaman yapılandırma dosyalarını güncellememiz gereken bir Nginx sunucu filosuna sahibiz.

Şu anda özel bir AMI'de yapılandırmalarımız var ve güncellememiz gerekirse AMI ve ardından EC2 örneklerini yeniden oluşturmamız gerekiyor. Bazı yardımcı senaryolarımız var, ama yine de bunu yapmak için oldukça çaba var. Daha iyi bir yolu var mı?


3
ansible, birkaç isim tuzluk.
poige

Yanıtlar:


26

Kaldırabileceğiniz birkaç kavram vardır.

Başarının anahtarı otomasyon

İlk seçenek , şu anda yaptığınız işi yapmaya devam etmek , yani her yapılandırma değişikliğinde EC2'leri yeniden oluşturmaktır . Tam otomatik bir şekilde.

Şimdi AMI'ler aracılığıyla yapılandırma güncellemeleri yaparken, bunu bir adım daha ileri götürür ve bazı depolardaki yapılandırma dosyası değişikliğinde aşağıdakileri yapacak bir boru hattı oluşturursunuz :

  1. Otomatik olarak yeni bir AMI oluşturun - bunu yapmak için en popüler araçlardan biri Packer
  2. Nginx filonuzu otomatik olarak yeniden oluşturun - Nginx sunucularının tümünün Önünde bir Uygulama Yük Dengeleyici bulunan bir Otomatik Ölçeklendirme Grubunda bulunmanız gerekir . Bunu yapmazsanız , güncellemeyi ASG Lansman Yapılandırmasını güncellemek ve örneklerin yeni AMI'den yeniden oluşturulmasını beklemek kadar basit hale getirmeniz gerekir .

İkinci seçenek , örnekleri yerinde tutmak ve yalnızca yapılandırma dosyalarını yeniden oluşturmadan dağıtmaktır . Genellikle yapılandırma dosyalarına kod gibi davranabilir ve yapılandırma değişikliklerinizi kod sürümlerini dağıttığınız gibi dağıtabilirsiniz. AWS'nin bu konuda yardımcı olacak birçok aracı vardır.

  • Şefi dahili olarakkullanan AWS Elastik Beanstalk ve Nginx güncellemelerinizi bu şekilde yazabilirsiniz.
  • AWS Code Suite'in diğer bölümleriyle iyi entegre olan tamamen komut dosyası verilebilen bir dağıtım aracı olan AWS Code Deploy :
    • Kod Nginx yapılandırma dosyalarınızı Git'te tutabileceğiniz taahhüt .
    • Kod Tamamlama'da bir yapılandırma dosyası her güncelleştirildiğinde dağıtımı otomatik olarak tetikleyebilen Kod Pipeline'ı .
  • Tüm sunucuları aynı şekilde yapılandırmanıza yardımcı olabilecek popüler AWS olmayan araçlar olan Ansible veya Kukla .

Bu Nginx yapılandırma güncellemelerini otomatikleştirmek konusunda rahat olduğunuzda, otomasyonu altyapınızın geri kalanına genişletmek isteyebilirsiniz.


AWS'de size hoş bir genel bakış sunacak Dağıtım Seçeneklerine Genel Bakış için harika bir teknik inceleme var .

Umarım bu yardımcı olur :)


Ansible veya Kukla'a bir alternatif, daha büyük ölçekli dağıtımlar için optimize edilmiş bir ana / minyon tipi kurulum ve optimize edilmiş bir tür için tasarlanmış Tuz'dur.
Araho

5

Konfigürasyonlarınızı EFS'de saklayın ve EFS'yi Nginx konfigürasyonlarının beklendiği yere bağlayın. Alternatif olarak onları Amazon S3'e koyun ve zaman zaman bir senkronizasyon çalıştırın veya s3fs kullanın (s3fs'nin üretim kullanımı için yeterince iyi olmayabilir).

Yapılandırmanızı değiştirmeniz gerektiğinde, yeni yapılandırmayla yeni örnekleri tetiklemek için gerekeni ikiye katlamak üzere otomatik ölçeklendirme grubunuzu istediğiniz boyutu artırın ve sonra eski örnekleri kaldıracak olan ihtiyacınız olana geri dönün. Alternatif olarak sadece sunucuların yeniden başlatılması.

Başka bir seçenek de, AWS kodu dağıtımı gibi temel bir otomasyon aracı kullanarak yeni yapılandırmaları sunucunuza aktarmaktır.

Yukarıdaki tam otomatik seçenekler teknik olarak daha iyi ve daha temizdir, ancak yapılandırmaları nadiren değiştirirseniz ve kolay bir çözüm istiyorsanız bu yardımcı olabilir.



1

AMI'leri yeniden oluşturmak veya diğerleri gibi sadece bir yapılandırma dosyası değişikliği için önerdiği gibi tam teşekküllü bir dağıtım boru hatları oluşturmak aşırıya kaçma gibi görünüyor. Değişiklikleri dışarı atmak ve tüm düğümlerinizi senkronize tutmak için Ansible'ı kullanmalısınız. Ortak görevleri otomatikleştirmenize yardımcı olabilecek birçok Ansible modülü vardır.


Değişmez altyapının bir yararı, kırılgan ve bakımı gereken herhangi bir "evcil hayvan" sunucunuz olmadığını bilmenizdir. Bu, prod / DR / testte sorunsuz olarak daha fazla sunucu oluşturabileceğiniz konusunda size güven verir.
Tim
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.