2011-10-09 13 views
6

Bulut tabanlı (AWS EC2) bir PHP Web Uygulaması üzerinde çalışıyorum ve birden fazla sunucuyla çalışmaya geldiğimde bir sorunla uğraşıyorum (hepsi bir AWS Elastic altında) Yük dengeleyici). Bir sunucuda, en yeni dosyaları yüklediğimde, tüm uygulama genelinde anında üretime geçiyorlar. Ancak bu, birden fazla sunucu kullanırken geçerli değildir - her değişiklik yaptığınızda her birine dosya yüklemeniz gerekir. Çok sık herhangi bir şey güncelleme yapmazsanız veya yalnızca bir veya iki sunucunuz varsa, bu sorun yaratabilir. Ancak, sistemi on hafta boyunca, bir sunucuda birden çok kez güncelleştirirseniz ne olur?İçeriği Birden Çok Sunucuya Dağıtma (EC2)

Aramak istediklerim, dev veya test sunucumuzdaki değişiklikleri "kaydetme" ve tüm üretim sunucularımıza derhal "gönderme" olanağı sağlıyor. İdeal olarak, güncelleme her seferinde yalnızca bir sunucuya uygulanacak (her sunucuda bir veya iki saniye sürse bile), böylece dosyalar değişirken herhangi bir üretim trafiğini kesintiye uğratmamak için ELB'ye trafik göndermeyecektir. ELB'ye akan. Bunu yapmanın en iyi yolu nedir? Düşüncelerden biri de SVN'yi dev sunucusunda kullanmak olurdu, ancak bu sunuculara gerçekten "itme" yapmıyor. Bir güncelleme yapmak için birkaç saniye süren ve ardından sunuculara uygulamaya başlatan bir süreç arıyorum. Ayrıca, AWS'ye aşina olduğunuzlar için, bir AMI'yı en son güncellemelerle güncellemenin en iyi yolu nedir? Otomatik ölçekleyici yazılımın en yeni sürümüyle her zaman yeni örnekleri başlatır?

Bunu yapmanın iyi yolları olmalı. Facebook, Google, Apple, Amazon, Twitter, vb. Gibi siteleri resmediyor ve yüzlerce veya binlerce sunucuyu elle ve tek tek güncelleştiriyorlar. bir değişiklik yap.

Yardımlarınız için şimdiden teşekkür ederiz. Bu soruna bir çözüm bulabileceğimizi umuyoruz. Hem kendim hem de iş ortağım tarafından son günde en az 100 Google araması olması gereken, bu sorunun çözümünde çoğunlukla başarısız oldu. Alex

+0

Buradaki soru aynıdır: http://stackoverflow.com/questions/6730360/best-way-to-load-php-classes-in-ec2-instancestore-ebs-or-s3 – andig

cevap

0

KwateeSDCM iyi bir bakın. Dosya ve yazılımları istediğiniz sayıda sunucuya dağıtmanızı ve gerektiğinde sunucuya özgü parametreleri özelleştirmenizi sağlar. Birden fazla tomcat örneğiyle ilgili deploying a web application ile ilgili bir gönderi var ancak bu dil agnostik ve PHP için de çalışacak, AWS sunucularınızda ssh etkin olduğunuz sürece.

1

Web sunucularımızı ve yük dengeleyici örneklerini yönetmek için scalr.net'i kullanıyoruz. Şimdiye kadar gayet iyi çalıştı. Her çevremiz için bir sunucu çiftliğimiz var (2 üretim çiftliği, evreleme, kum havuzu). Web sunucuları için önceden yapılandırılmış bir rolümüz var, bu yüzden ihtiyaç duyulduğunda yeni örnekleri ve ölçekleri kolayca açabiliriz. Web sunucusu, bot açılırken github'dan kodu alır. Her web üzerinde kaynak kodunu ve dağıtım güncellemek için Phing kullanın

  1. : Biz temelde burada yapmak istediğimiz tüm dağıtım değişiklikleri tamamlanmış olmasına rağmen henüz

    bizim üretim ortamına yeni sürümlerini dağıtmak nasıl hizmet. Bir git çekimi yürüten ve veritabanı değişikliklerini (dbdeploy phing görevi) çalıştıran bir görev oluşturduk.

  2. phing'i yürüten bir kabuk komut dosyası yazdık ve bunu bir komut dosyası olarak scalr'e ekledik. Scalr komut dosyalarını yönetmek için güzel bir arayüze sahiptir.

    #!/bin/sh 
    
    cd /var/www 
    phing -f /var/www/build.xml -Denvironment=production deploy 
    
  3. scalr belirli bir grupta bulunan tüm örneklerini komut dosyalarını yürütmek için bir seçenek vardır, bu yüzden her sürüm sadece github usta dalına itmek ve scalr senaryoyu yürütmek.

Biz ana dalına itmek otomatik dağıtır bir github kanca oluşturmak istiyorum. Scalr komut dosyalarını çalıştırabilecek bir api var, bu yüzden mümkün.

İlgili konular