Değişmez sunucular nelerdir?


23

Hakkında bazı sorular vardır değişmez sunucular gibi:

Sunucularla (bu bölümü aldığım) ilgisi olduğu açık. Ve sadece değişmez gramerini sindirmek, bunun " susturmanın mümkün olmaması" ile bir ilgisi olduğunu düşünürdüm . Eğer bu tahmin yakınsa, tam olarak neyin kısılmayacağına dair hiçbir fikrim yok (ve bunun ses kartları veya başka bir şeyle ilgisi olduğundan şüpheliyim ...).

Sorularım :

  • Aslında “değişmez sunucular” nedir (DevOps bağlamında)?
  • Neden kullanılırlar?

4
mutasyona uğramak mümkün değil
Evgeny

3
@Eggeny: ggggggggggggrgrrrrrrrrrrrrrrrrr, yakındım, ancak dilsiz tahminim ile tamamen yanlıştı (lütfen bana gülme).
Pierre.Vriens


Bu kadar kör olduğum için özür dilerim ama "değişmez" i tanımlayan basit bir internet araştırması mıydı? Sorunun bundan daha büyük olduğunu biliyorum ama tahmin etmekten çok kelimenin anlamını aramak size iyi bir kafa başlangıcı vermiş olabilir.
Adrian

@Adrian künt olmakta hiçbir sorun yok (ESL'ye maruz kaldığım için, küntün tam anlamıyla giderilmesini sağlamak için Google'a gitmek zorunda kalıyorum). Ancak merak ediyorum bu meta.SA sorununun farkında mısın ? Bunun dışında Vikipedi benzeri alternatifler yerine DevOps uzmanlarından öğrenmeyi tercih ederim.
Pierre.Vriens

Yanıtlar:


19

Taklit edilebilirlik, genellikle bilgisayar bilim çevrelerinde kullanılan ve genellikle "yaratıldıktan sonra değiştirilemeyecek" olan bir terimdir. Paralellik, eşzamanlılık ve iş parçacığı güvenliği referans olarak kullanılır.

Bu konunun tartışması büyüleyici, ancak genellikle Yığın Taşması üzerinde başka bir yerde bulunabilir . Buraya dalma dürtüsüne direniyorum. Anahtar kavram 'yaratıldıktan sonra değiştirilemez'.

Amazon'da bir web servisini Makine Görüntüsüne (AMI - tekrar tekrar sağlayabileceğiniz önceden hazırlanmış bir örnek) pişirerek yerleştirdiğinizi hayal edin. Başlangıçta kayıt defterinden aldığı kimlik bilgileriyle arka uç veritabanına bağlanır. Günlükleri Splunk gibi bir günlük aracına atar. Normal günlük operasyon için, bu kutuya girmek için hiçbir nedeniniz yoktur. Bu servisi büyütmeniz gerekirse, yalnızca bu AMI'den daha fazla örnek yaratır ve bir yük dengeleyicisini ayarlarsınız. Aşağı doğru döndürmek basitçe örneklerin ve yük dengeleyicilerin imhasıdır.

Günlük operasyon için bu kutunun değişmesi için bir sebep yoktur . AMI'den daha fazla ateş açabiliriz.

İşletim sistemi düzeyinde bir güvenlik düzeltme eki sağlamanız gerektiğinde ne olur? Bu, bir karar vermeye karar verdiğiniz zamandır… yamalı yamalı ve çalışan tüm örnekleri yeniden uygulayan yeni bir AMI hazırlar mısınız ya da mevcut görüntülere ekler ve yamayı günceller misiniz? İçinde ssh olacak pek çok insan var. “Değişmez mimarinin” taraftarları bana böyle bir şeyin mümkün olduğunu öne sürdüğü için bile bağırdı.

İmmmübilistler (eğer böyle bir kelime varsa) yeni ami'yi pişirmeyi savunuyorlar. Makinenin içine ssh atmak için bütün nedenlerin kaldırılmasını savunuyorlar. Yapılandırma ayrıntılarını bir havuzdan çekerek, o makinenin başlangıcında herhangi bir özel makine yapılandırmasının yapılması gerektiğini savunuyorlar. Bu “evcil hayvanların değil sığırların” nihai ifadesidir.

Uygulanabilir mimari, özellikle makine görüntüsünün oluşturulmasından sonra değişmesi gerekmeyen makine konfigürasyonları ile ilgilidir . Bir şeylerin değişmesi gerekiyorsa, yeni bir örnek imaj oluşturun, eskisini kapatın, yenisini getirin.


"eskiyi kapat, yenisini getir". Veya mimariniz izin veriyorsa, yeniyi getirin, yük dengeleyicisini ayarlayın, eskisini kapatın. Bu şekilde, istediğiniz zaman, hatta yoğun zamanın ortasında bile yapabilirsiniz. :)
Tim Malone

İşlevsel programlama (1960'lar) 'da gerçekleşebilirlik, artık sadece hataları azaltmakla kalmayıp (genellikle umursamayan bir şeyi) azaltmakla kalmayıp aynı zamanda eşzamanlılığa da yardımcı olduğu anlaşılmaktadır.
ctrl-alt-delor

İzleyici ajanların veya orijinali hazırlaması zor olabilecek ek yazılımların burada nasıl ortaya çıkabileceği konusundaki bu harika cevaba herhangi bir ekleme yapmak isterim. Örneğin, APM izleme yazılımı, yaratıldıktan ve parametrelerini değiştirdikten sonra yeni makine ortamını tespit etmek zorundadır. Bunu AWS'ye yerleştirmek için SSM'yi ve otomasyonu araştırıyorum, ancak daha sonra kurulabilecek ilave ajanlarla uğraşırken AMI'ler / görüntüler ile değişmezliği tartışmak için çok az şey buldum.
SheldonH

10

Bulut teknolojileri donanım ve yazılım arasındaki sınırı değiştirdi, bu nedenle eskiden donanım dünyasının vatandaşı olan birçok teknik işlem aynı zamanda yazılım dünyasının da konusu olacak. Paylaşılan bilgisayar ortamlarında bilgisayarların kadar eski olabileceğini kendileri 1 ama bulut teknolojileri onlarla etkileşim kullanışlı ve tanıdık metaforlar sunarak onları sevdirmek olabilir: bulut kullanıcıları bir rezerv örneği, tam bir bilgisayar veya bir mimik eski paylaşılan bilgisayar ortamlarında mümkün olan tüm set var oysa uygunsuz sınırlamalar ve “programınız bu FTP sunucusuna yüklenmeli, X ortamında (genellikle kullanmak istediğiniz herhangi bir yazılımın 10 yıllık eski sürümüyle), en fazla 60 dakika boyunca çalışacaktır”, eski veya gerçek kullanıcılar için tanıdık gelebilir bilgi işlem merkezlerinin

Bu değişimin pratik sonucu, dağıtım prosedürlerinin artık yazılım eserleri ile temsil edilebiliyor olmasıdır . (Dağıtım prosedürleri, veritabanları, web sunucuları veya bu altyapıya ait olan bir altyapının, üzerinde çalıştıkları ağla birlikte nasıl bir altyapı kurulacağını gösteren talimatlardır.) Bu yeni lenslerle donatılmış, sunucuların manuel bakımı oldukça benzer. üretim kodunun el ile eklenmesi - yalnızca çok nadir durumlarda istenen bir şeydir. Manuel bakım, gerçekte üretimde çalışan sistemler ile bu sistemleri tanımlayan kod arasında farklılıklar ortaya çıkarmaya elverişlidir; bu da, tekrarlanamaz davranış ve imkansız hata analizi, çift hata onarımı ve diğer felaketler anlamına gelir.

Değişmez sunucu deseni koşuyoruz programların manuel bakım kaçınmalıdır hangi göre, yukarıdaki mantranın bulut işlemleri için sadece aktarılmasıdır. Değiştiricileri elle yapılandırmak yerine, değişmez sunucu deseni bu yapılandırmayı otomatikleştirmenizi önerir.

Uygulama tatları

Değişmez sunucu modeli hakkındaki genel fikir oldukça açık olmakla birlikte, birçok uygulama nüansı vardır. Örneğin, bazı yaklaşımlar sunucuları hiçbir zaman güncellememeyi, bunun yerine sistematik olarak sunucuları değiştirmeyi önerir . Bunun nedeni, güncellemenin, bir dağıtımın birkaç farklı zamanda başlatılmış sunuculardan oluştuğu ve homojen olmayan bir sunucu kümesini ifade eden ve sunucuların işlerini nasıl idare ettiği konusunda farklı farklılıklara yol açabilen çeşitli, farklı, güncelleme işlemlerinden geçtiği durumlardan oluşmasıdır. İkinci bir popüler varyasyon noktası, sunuculara uzaktan erişim ile ilgili disiplindir. Bazıları manuel bakımın asla gerçekleşmemesini sağlamak için sunuculara tamamen uzaktan yönetim erişimini devre dışı bırakmak ister.

Geçmiş notu

Bildiğim kadarıyla , “değişmez sunucu” terimi, Kief Morris tarafından popülerleştirildi, ancak fikrin kendisi daha eski. 1999'da FreeBSD hapishaneleri tek kullanımlık bilgisayar ortamlarının konfigürasyonunu tamamen otomatikleştirme fikrini zaten popüler hale getirdi , bu tekniği tanımlamak için bu adı duymadan yıllar önce “değişmez sunucu” modelini uygulamaya başladım.

Taklit edilebilirlik, CD-ROM'lara dayanan fiziksel değişmezlik gözünde, güvenilir bilişim sistemleri üretmek için de popüler bir ölçü olmuştur. Bu değişmez sunucu modeliyle karıştırılmamalıdır.


1 Otomatik tezgah masalarını veya silindir organlarını bilgisayar olarak saymazsak.


1
Vay canına, yine ilginç bir açıklama, merci! Şimdi hangi cevabın kabul edildi olarak işaretlendiğine karar vermekte gerçekten zorlanıyorum (lütfen sabrınız ve lütfen sadece en fazla 1'i işaretleyebildiğimi biliyorum, fakat şu anda hangisine karar verdim. .).
Pierre.Vriens

1
Avec plaisir! - Bence bir cevap almak için birkaç gün beklemenin iyi bir fikir olduğunu düşünüyorum, bu kullanıcıların daha fazla cevap yazma şansını arttırır.
Michael Le Barbier Grünewald

9

Değiştirilemez sunucular üzerinde değişiklik yapılamayan sunuculardır (ideal olarak güncellemeler ve güvenlik düzeltme ekleri dışında). Sunucudaki yazılımı değiştirmek yerine, yeni bir sunucuyu istediğiniz yazılımla biriktirir ve ardından eskisini sonlandırırsınız.

Bu kavram, test, geliştirme ve KG sunucunuzun tamamen aynı olduğundan emin olmanıza yardımcı olur; bu, bu sorunun kapsamı dışında kalan birçok nedenden dolayı önemlidir. Değişmez sunucuların bir başka avantajı, uygulamayı daha eski bir sunucuya geri alma yeteneğidir. Örneğin, üretim sunucusundaki K değerini değiştirmem gerekiyor, bu yüzden sunucuyu 2 biriktiriyorum ve K'yi değiştiriyorum. Şimdi 10 dakika sonra, K'nin derhal düzeltmek zorunda kalmadan uygulamamla bir şey kırdığını fark ettim. ve potansiyel olarak müşterilerim için aksama süresine neden olabilir, trafiği sunucu 1'e yeniden yönlendirirken, 2 ile sorunun ne olduğunu çözerim.


Hm, ilginç ... Bunu daha fazla sindirmek için zamana ihtiyacım var ... "Bir sorunun cevabını 1 cevapla 10 yeni soruyu tetikler mi?" ...
Pierre.Vriens

1
Hızlı bir şekilde "geri alma" uygulamasına genellikle "Mavi / Yeşil Dağıtım" denir (ayrıca kırmızı / siyah, çağrıyı yapan kişiye bağlıdır).
Evgeny

@Evgeny ve hepsinden kötüsü, A / B deneyleri ile bir araya getirerek, A / B dağıtımları olarak da adlandırılabilir. (ve daha da kötüsü, bu tür bir dağıtım türünde, aynı uygulamanın katları, özellik bayrakları yerine A / B denemeleri yapmak için canlı olduğunda)
Tensibai

Her zaman Mavi / Yeşil Dağıtımların, sunucunun kendisi değil mevcut bir uygulamanın güncellemesinin konuşlandırılması için yapıldığı söylendi. @Evgeny
Turtle

Evet. Sunucuları, kapları, uygulamaları ve başkalarını takas edebilir ve yine de Mavi / Yeşil olarak adlandırabilirsiniz . Bence burada kendi soru-cevap bilgisini hakediyor. Sadece cevabınızdaki geri dönüşü açıklamanın yolunun B / G olarak adlandırıldığını belirtmek istedim.
Evgeny

6

En iyi açıklama (her zamanki gibi) Martin Fowler'ın Immutable Servers hakkındaki bliki makalesinde bulunabilir .

Bir sunucu, bulutta donanım veya sanal sunucu olsun, genellikle üzerinde çalışan bir işletim sistemi ve uygulama vardır.

Genellikle uygulama ve işletim sisteminin bileşenleri, konfigürasyon gerektirir ve uygulanacak değişiklikler gerektirir. Örneğin güvenlik düzeltme ekleri, uygulamanın yeni sürümlerinin dağıtılması ve yapılandırma değişiklikleri.

Herhangi bir değişikliğin sunucunun durumundaki bir mutasyon olduğunu düşündüğünüzde , terim immutabledaha anlamlı olmaya başlar. Bu , böyle bir sunucuda mutasyona izin verilmediği anlamına gelir .

Genellikle, sunucunun durumunu değiştirmekle ilgili olan kişilerin durumudur - bir sürümün dağıtımı, yapılandırma değişikliği veya bir güvenlik yolu olabilir. Sonuç, artık beklendiği gibi çalışmayan bir sunucudur. Örneğin, uygulama yanlış yapılandırma vb. Nedeniyle şimdi çalışmayabilir.

Bu nedenle değişmez sunucular oluşturmak için bir uygulama oluşturulmuştur. İle değişmez sunucular, bir görüntü , bir sunucunun gruplanmış tüm yapılandırma, yamalar, uygulama sürümleri ile oluşturulur. Sunucu Sonra bu görüntü çeşitli ortamlarda sunucuları oluşturmak için kullanılabilir.

Böyle bir görüntünün kullanıldığı ilk ortam görüntünün çalışması için test edilebileceği bir ortam olacaktır. Herhangi bir anormallik tespit edilir ve ancak o zaman böyle bir görüntü, oradaki sunucuları (iyi çalıştığı bilinen) yeni sürümle değiştirmek için bir üretim ortamına yükseltilebilir .

Görüntüleri oluşturma ve görüntüleri tanıma işlemi otomatik hale getirildiğinde, çok az insan çabası ve hizmetinize başarısızlık sağlama şansı çok az olan, hatasız bir süreç elde edersiniz.

Çoğu zaman, değişmez sunucular, örneğin "ssh server" gibi, onları "girmenin" bir yolunu bile içermez. Bu durumda, genellikle bir sunucunun tüm metrolojisinin (metrikler, günlükler), metrik veri tabanı veya günlük toplama hizmeti gibi sistemlere gönderilmesi de genellikle bir durumdur.

Kaplarla (bkz: Docker ) ayrıca görüntü oluşturma ve bunları çalışan kaplara yerleştirme işlemi de vardır. Bunlar oldukça sık güncellenen resimlere dayanan yeni kaplar ile değiştirilir ve bunlar asla değiştirilmez. Yani, hiçbir insan bir değişiklik getirerek “bir şeyi düzeltmek” için kaba girmez.


İlginç bir açıklama, belki de biraz değişmek istersiniz , eğer yapabilirseniz, ve eğer mantıklıysa, bir şekilde ilgili olduğunu düşündüğüm bir şeyi, yani bir sistemi "yıkadığını" belirtmek istersiniz. Sanırım, bir kimsenin bir şeyle "oynamasına" (az ya da çok) izin verdiğiniz ve (örneğin) her gece bir başlangıç ​​durumuna geri dönmenin bir çeşit sıfırlanması konusunda onları uyardığınızdır. Bu sıfırlama girişinin… euh ... ne söyleyeceğimi… doğru: bunun için kullanılabilecek değişmez bir şey gibi geliyor.
Pierre.Vriens

2
Sunucuyu bilinen bir duruma döndüren bir hizmeti çalıştırmak (böyle bir Şef / Kukla / Ansible / vb ...), yalnızca değişmez sunucu kullanmadığınız anlamına gelir. en.wikipedia.org/wiki/Promise_theory harika, ama martinfowler.com/bliki/ImmutableServer.html daha da iyi.
Evgeny

Benimle dalga geçiyorsun, inanıyorum ya da "bana zorlu geliyor" mu (günlük soru sınırını keşfetmeye çalışmak için). "30 günde sadece 50 soru sorabilirsin" yazan bir SE kuralı da yok mu?
Pierre.Vriens

0

Tersiyle başlayalım, değişken sunucu nedir?

Geleneksel olarak, değişken bir sunucu altyapısı sürekli olarak değiştirilen ve yerinde güncellenen bir altyapıdır. Kabuğu güvenli hale getirebilir, paketleri yükseltebilir, yapılandırabilir, servis yükleyebilir ve yeni kod dağıtabilirsiniz. Onu değişken kılan şey budur, değiştirebilir veya değiştirebilirsiniz.

Değişmez bir altyapı, sunucuların dağıtıldıktan sonra hiçbir zaman değiştirilmediği bir başka altyapı paradigmasıdır. Bir şeyin güncellenmesi, düzeltilmesi veya herhangi bir şekilde değiştirilmesi gerekiyorsa, eskilerinin yerini almak üzere ortak bir görüntüden uygun değişikliklerle oluşturulan yeni sunucular sağlanır. Onaylandıktan sonra, kullanıma alınır ve eskileri kullanımdan kaldırılır.

Neden kullanılırlar? Değişmez bir altyapının faydaları, altyapınızda daha tutarlı ve güvenilirdir ve daha basit, daha öngörülebilir bir dağıtım sürecidir ve sunucu çökmesinin durması veya boşta kalma süresi gibi değişken altyapıda ortak sunucu sorunlarını azaltır.

Ancak kapsamlı dağıtım otomasyonları ve hızlı sunucu sağlama yoluyla nasıl verimli bir şekilde sağlanacağını bilmek zorundasınız.

Bitcoin madenciliği yaptığınızı, sunucunuzun çökmesi durumunda herhangi bir kesinti istemeyeceğinizi, mümkün olduğunca hızlı bir şekilde yedeklemeniz gerektiğini düşünün, bu nedenle değişmez bir altyapının çözüm olması gerekiyordu.

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.