otomatik linux dağıtımı ve küçük ölçekli yapılandırma yönetimi - buna değer mi?


24

Debian çalıştıran ~ 25 sunucu dağıtmak üzereyim . Makinelerin farklı rolleri olacaktır - web sunucuları, Java uygulama sunucuları, proxy'ler, MySQL kutuları. Çevre gelecekte çok fazla büyümeyecek - gelecek 2 yılda belki 2-5 sunucu daha.

Muhtemelen kullanacağız Fai sistemi kurulumu için, ama onun değerinde de eklemek eğer emin değilim cfengine veya kukla gibi küçük ölçek için merkezi konfigürasyon yönetimi.

Konfigürasyon yönetimi bu boyutta bir ortam için anlam ifade ediyor mu?

Yanıtlar:


29

Kurulum öncesi kurucuya soracağı tüm soruları yanıtlayan bir metin dosyası ve Kukla'yı vereceğiniz bir ekim öncesi Debian tohumlama karışımı kullanmanızı öneririm.

FAI yerine preseeding'i kullanmanın nedeni, önce bir görüntü oluşturmak ve güncel tutmakla uğraşmak zorunda olmamanızdır. Eğer hepsini el ile yaparsanız, sahip olduğunuza çok benzer bir yükleme gerçekleştireceksiniz. Yeni bir sürüm yüklemeye başladığınızda, yeni bir görüntüyü yeniden oluşturmak yerine bir yapılandırma dosyasını değişikliklerle güncellemeniz gerekir.

Bir konfigürasyon yönetimi aracı, özellikle aynı rolü yapan birkaç sunucunuzun olduğu ve bunların aynı olmasını istediğiniz, örneğin web sunucusu kümesi gibi yerlerde kullanışlıdır. Ancak, tüm sunucuların temel kurulumunu yapılandırmak için de yararlı olabilirler. Ntpd ve MTA gibi tüm sunucularınıza özel paketler yüklemek isteyeceksiniz. Tüm sunucularınızdaki bir config dosyasını değiştirmek isteyeceksiniz. Ek bir fayda, tezahürlerinizi yıkılma gibi bir şeyde tutabilir ve bir sunucuda neyin değiştiğini ve kimin ve neden yaptığını kaydedebilirsiniz. Yapılandırma yönetimi, sunucu arızası durumunda da hayat kurtarıcı olabilir ve hızlıca yeniden oluşturmanız gerekir. İşletim sistemini kurun (FAI kullanarak veya önceden ayarlayarak), kuklayı kurun ve ilerledi, aynen eskisi gibi yapıldı. Açıkçası, verilerin yedeğini almanız gerekecek.

Yapılandırma yönetimi, yalnızca kullanarak değişiklik yaptığınızdan ve işleri önceden ayarlayan bir maliyet ayarına sahip olduğunuzdan emin olmak için kararlılık gerektirir, ancak çalışan bir kurulumunuz olduğunda pişman olmayacaksınız.

Kukla, bahsettiğiniz iki araçtan daha modern. Gerçekten herkese tavsiye ederim. Yapılandırma bildirimsel bir dildir ve daha yüksek seviyeli yapılar oluşturmak kolaydır. Çevresinde çok büyük bir topluluk var ve her zaman posta listesinde ya da IRC kanalında yardımcı olmaktan memnuniyet duyan insanlar var.


tohumlama hakkında ipucu için teşekkürler. Şu anda doktora bir göz atacağım.
pQd

FAI eski skool; Kesinlikle tavsiye etmem. Preseeding + Kukla ftw.
womble

FAI ve cfengine kullanıyoruz, yaklaşık 1000 makinemiz var ve çok iyi çalışıyor. Mikro betiğin yazılmasını çok daha kolay hale getirebilmek için, makineyi kendi oluşturduğu gibi ssh yapabileceğinize dikkat çekiyor.
James,

FAI eski scool? YOK HAYIR! FAI oldukça sağlam ve 10 yıldan fazla deneyime sahip. FAI kullanıcılarının uzun listesine bakınız
Thomas Lange

İyi tavsiye, benzer bir yaklaşım kullanıyoruz ve iyi çalışıyor. Ancak, FAI'yi reddetmem. FAI kurulum için görüntüleri kullanmıyor (SystemImager bunu yapıyor). FAI yükleyicisini çalıştırmak için kullanılan minimal bir nfs kök dizini kurmalısınız. Yükleme işlemi, konfigürasyon dosyalarıyla otomatikleştirilir ve çeşitli kullanıcı tanımlı kancalar yürütülür. Preseeding'in avantajı, FAI sınıfları konseptinin, farklı rollere sahip olan birden fazla sunucuyu (ve hatta iş istasyonlarını) yönetmeyi kolaylaştırmasıdır.
JooMing

10

CFengine'i 2-3 kutudan daha fazla olan ve bazı 'şablonlar' veya belirli roller gerçekleştiren sunucular konseptine sahip olduğunuz her ortam için öneririm.

Niye ya? Basitçe söylemek gerekirse hataları azaltır, dosya / dizin izinlerinin ortamın her yerinde doğru olmasını sağlayacak bir araca sahipsiniz ve daha fazla sunucu dağıtmaya başladığınızda, araç kesinlikle her şeyi ele alır ve asla hata yapmaz.

Zaten bir şeyler yanlış gittiğinde on iki saatlik bir vardiya sonunda bir web sunucusunu bile çalıştıran yetenekli bir Sistem Yöneticisi ile kontrast .... Büyük olasılıkla / etc / random / location konumuna gitmesi gereken kötü küçük konfigürasyon dosyasını hatırlamaları muhtemeldir. / foo / bar aksi takdirde uygulama, fatura müşterileri gibi, oldukça önemli bir şeyi yapmadan sessizce başarısız olur mu? :)

CFengine gibi araçlar, çevre genelinde güvenlik güncellemeleri yapmak için harika bir yoldur. Bir Nagios konfigürasyonunu (NRPE) tüm kutulara bırakmak aynı zamanda bir sorun. Beş kutuları veya beş uğraşıyoruz olsun yüz kutuları sen olacaktır CFengine ile zamandan tasarruf.

Muhtemelen ortamımın biraz daha büyük olduğuna dikkat etmek önemlidir, ancak not ettiğinizden daha küçük ortamlar için de CFengine kullandım, bu yüzden öneri!

Muhtemelen bir sonraki sorunuz CFengine vs Puppet olacak? Bu daha zor bir karar ve her zaman (ilk günlerde) Kukla'dan gelen bazı olgunluklar nedeniyle, özellikle de hata günlüğü nedeniyle ... her zaman CFengine'e gittim. Geri Kukla ile benim belirli konulara bakıldığında, onlar, acı hala sunucu teşhis 3 saat harcanan zamanı hatırlamak ilgili SSL sertifika idi <-> Bazı iri KKO ve RTFs ile irc.freenode.net/#puppet istemci bağlantı sorunları sadece bulmak için kaydedilmemiş bir hata ve Luke, “Ah, düzeltmesi gerçekten zor” dedi ve asla yapmadı. :(


iyi bir nokta. Sorun benim durumumda işler oldukça uzmanlaşacak, şablonların sayısı [fazlalık nedeniyle] muhtemelen n / 2 civarında olacak [n toplam sunucu sayısı].
pQd

1
Bu kötü bir şey değil, WWW kümelerimin çoğu n / 2 değilse n + 2'dir ve HAproxy gibi yük dengeleyicilerinizin arkasındaki düğümleri dağıtırken CFengine ile oldukça esnek olabilirsiniz. IPVS'yi ve eşlik eden şeyleri de yönetmek mükemmel bir şekilde uygulanabilir :-) N / 2 fazlalık gereksinimi olsa bile, ortamınızda birçok benzer veya benzer yapılandırma dosyanız olduğuna bahse girerim? CFengine ile gibi bir şey içeren bir "şablonlu" yapılandırma dosyasında gibi şeyler yapmak için 'editfiles' aracını var unutmayın IP (zamanında) daha sonra ve a bulmak ve sağ bilgi ile değiştirin. ;)
nixgeek

@astinus Yorumlarınız için teşekkürler. Ben de merkezi konfigürasyonda üretime katlanmaktan korkuyorum. otomatik olarak yapılan ve otomatik olarak yapılan sorgulamayı devre dışı bırakmak ve her bir makinede oturum açmak ve her şeyin yolunda olup olmadığını kontrol etmeye zorlamak hakkında ne düşünüyorsunuz? [evet, yerinde nagios / custom izleme de olacak ... ama yine de]
pQd

1
Yapılandırma yönetimi tekniklerinize olan güvenin zamanla geldiğini düşünüyorum, ancak geçici olarak, kutuların otomatik olarak yok edilmesini devre dışı bırakın ve 'cfagent -qv' komutunu çalıştırmak için her kutu sınıfında oturum açmak için 'cssh' kullanın (veya ne olursa olsun!) güncellemeleri zorlamak istiyorsun. Güveninizi artırmak için bir ipucu istiyorsanız, sanal bir makineyi 'evreleme' ortamı olarak dağıtın ve tüm değişikliklerin ilk önce bu işlemi gerçekleştirdiğinden emin olun. CFengine veya Kukla yapılandırmanızı Subversion'da tutarsanız oldukça kolay, sadece dallar ve etiketler kullanın.
nixgeek

Ayrıca, sistemleri (yeniden) kurulum, yapılandırma yönetimini gülünç basitleştirmek için SLACK kullanmanızı tavsiye ederim. Burada bulunabilir: sundell.net/~alan/projects/slack
HK_

5

Cfengine ve kukla yanı sıra, şef var . Her şey beklenmedik yönlerde büyümeye devam edeceğinden, bu araçlardan birini kullanmanızı şiddetle tavsiye ederim. Bu, merkezi bir konumda işleri yönetmenize yardımcı olur.

Tanınması gereken en önemli şey, şansınızı her şeyi elde edemeyeceğinizdir, ancak orada en azından% 90 elde ederseniz, bu bir başlangıçtır. Ayrıca, eğlenceli ve uzun vadede hayatınızı kolaylaştıracak. Son olarak, ileriye gitmek iyi bir beceridir.


chef, konfigürasyon yönetimi sahnesine yeni giren bir firma. Kuklanın özel bildirim dili yerine, istediğiniz şeyi yapmak için yakut yazarak yapılandırılmak üzere tasarlanmıştır. Zaman, hangi yöntemin işe yaradığını söyleyecektir. Şu anda kukla kampında oturuyorum.
David Pashley

3

Debian'ı kurmak için 5 yıldan beri cfengine kullanıyorum (bugünlerde odunsudan lenny'ye kadar). Etch ile özel bir debian-installer inşa ediyorum. Önceden yazılmış tek bir soru sayesinde: "ana bilgisayar adı nedir". Bu cfengine tüm sunucuyu yapılandırdıktan sonra (dns + dhcp, dnssec, samba, ntpd, varsayılan (Samba) kullanıcıları ve şifreleri, ssh, openvpn, apache vHosts, LVM'de rsnapshot ile yedekleme, özel webminmodules vb.) Yapılandırır.

Sadece bir sunucu kurarken bile araç kutumdan cfengine-scriptleri şöyle kullanırım:

control:

  Repository  = ( $(CFREPO) )
  IfElapsed = ( 0 )
  Syslog = ( on )
  actionsequence = ( editfiles shellcommands )
  CPTYPE = ( sum )

editfiles:
  { /etc/sysctl.conf
    # don't spam on tty:
    BeginGroupIfNoSuchLine "kernel.printk.*=.*2 4 1 7"
      DeleteLinesMatching "^kernel.printk.*=.*"
      Append "kernel/printk=2 4 1 7"
    EndGroup
    # no E(xplicit?) C(ongestion) N(otification) 
    BeginGroupIfNoSuchLine "net.ipv4.tcp_ecn.*=.*0"
      DeleteLinesMatching "^net.ipv4.tcp_ecn.*=.*"
      Append "net/ipv4/tcp_ecn=0"
    EndGroup
    BeginGroupIfNoSuchLine "net.ipv4.ip_forward.*=.*1"
      DeleteLinesMatching "^net.ipv4.ip_forward.*=.*"
      Append "net/ipv4/ip_forward=1"
    EndGroup
    DefineClasses "configchange_sysctl"
  }

shellcommands:
  configchange_sysctl::
    "/sbin/sysctl -p /etc/sysctl.conf"

# vim: set ts=2:

Ben cfengine'i severim, çünkü cf2-scriptleri insan tarafından okunabilir.

bu yüzden kesinlikle otomatik konfigürasyon yönetimi için araçlar ile çalışmak için değer.

/ thorsten


2

Küçük bir site için bile buna değer olmalı. Her şey büyüdükçe tutarlılık hakkında. Ve sitenizin büyüyeceğini biliyorsunuz. Hala küçükken başlamak için en iyisi. Cfengine harika. Özellikle alandaki tüm paket yöneticilerini idare edebilecek 3 ve gerçek hafif ve güvenli ve "sadece işe yarıyor" olan sürüm 3. Kukla sadece iddia ettiği şeyi vermedi. Şef'i denemedim.

Cfengine'nin diğerlerine göre avantajı ultra hafif olması ama aslında daha fazla yetenekleri var. Güvenlik, kuklaların kullandığı web sertifikalarından ziyade ssh gibidir. Patronuma cfengine'den bahsettiğimde bilim kurgu olduğunu düşünüyordu :) Fütüristik bir şey arıyorsanız, Marc Burgess'in araştırma makalelerini okumayı deneyin. Güzel şeyler.


1

Küçük bir site çalıştırırken sahip olduğum bir numaralı araç 'buton' olur. Gelecekteki sayısız diğer sorunları çözebilecek düzeltme eklerini, güncellemeleri ve yeniden yapılanmaları kolaylaştırır.

Tüm kutulara düzgün bir şekilde ssh kurulmamış mı? Curl / wget / vim ya da yok mu? peki her kutuda kullanmak istediğiniz diğer araç içi aletler nelerdir?

Sunucularınızın merkezi yönetimine sahip olmak gelecekteki çabaları kolaylaştırmak için çalışmanız gereken ilk araçlardan biridir.


1

Buradaki herkesle aynı fikirdeyim. Büyük olmadığınızda çalışma altyapısını öğrenmeye ve kurmaya başlamalısınız. Çünkü o zaman büyüdüğünüzde hazırsınız.

Neyi çalıştırmak istediğine bağlı olarak, FAI, cfengine ve Debian / Ubuntu için ön tohumlama için giderdim. FAI birçok farklı araçla çalışabilir, bu nedenle herhangi bir Debian benzeri dağıtım için iyi bir başlangıçtır. FAI (ve cfengine) sınıf kontrollü konfigürasyonla, tesislerinizi küçük modüllere bölerek makinenizin her biri için hangisinin kullanılacağını seçebilirsiniz. Bu şekilde, birçok farklı makineniz olsa bile faydalı olacaktır. Bu komut dosyasıyla kurulumunuzu belgeleyeceğinizden aslında daha kullanışlıdır. Ve yeni bir makineye kurduğunuzda hiçbir şeyi unutmayacaksınız.

Evet, değişikliklerinizi canlı bir kurulumda dağıtmanız için test etmeniz gereken bazı makineler olması gerekir. Ancak böyle bir yapılandırma komut dosyasıyla, canlı kurulumda herhangi bir adım atmayı unutmayacaksınız.

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.