Soru Her programcı hangi sysadmin şeylerini bilmeli?


Bir programcı olarak, sysadmins'i kabul edilmeye eğilimliyiz. İyi bir sysadmin olmadan birkaç kez gerçekten yaptığınız şeyi takdir etmemi sağladı. Sysadmin olmadan bir çevreye girerken, bize hangi bilgelik sözlerini sunabilirsin?


96


Menşei




Cevaplar:


Şununla başlarım:

  1. Her zaman bir çeşit yedek sisteme sahip olmak. Bir geçmişi varsa daha da iyi.
  2. Tek başarısızlık noktalarını ve başarısız olmaları için bunlarla nasıl başa çıkacağınızı düşünün.
  3. İlgili bilgisayarların miktarına bağlı olarak, bilgisayarlarda standart bir görüntü oluşturmanın ve oluşturmanın bir yolunu bulmak, herkesin hayatını kolaylaştıracak - "benimki üzerinde çalışmamalı", çünkü normalde yüklü olmayan böyle bir program var.
  4. Sadece her şeyden ötürü, her şeyi belgeleyin irade Bir şeyi nasıl ayarladığını unutma.
  5. Güvenlik güncellemelerini takip edin.

70



Tüm adımları belgelemek, iyi bir sysadmins gördüğümü gördüm ve bunu kendim yapmaya başladım. Gerçekten çok yardımsever. - Nathan DeWitt
Kendini belgeleyen sistemleri düşünün. Örneğin, iyi yorumlanmış bir Bölge dosyasının kurallı bilgi kaynağı olduğunda neden bir metin dosyasında veya wiki'de bir ana makine adlarının listesini bulundurun. - Dave Cheney
Dave, herkes tarafından erişilebilir olan iyi yorumlanmış Bölge dosyası mı? Eğer yeni gelen bir insanım, "her şey her yerde belgelenir" yerine "tüm cevaplarınız için bu vikiye git" denmesi daha kolay değil. DNS, DNS ayarlarında belgelendi. Whozit, whozit'de belgelendi config dosyası. Veritabanı, veritabanı yapılandırma dosyasında belgelenmiştir. " Bu çok ... bana düşmanca görünüyor. - Nathan DeWitt
Nathan, Dave: Bu hile, wikiyi standart kaynaktan güncellemek için bir betik kullanmak. Benim için harikalar yarattı, gerçekten çalıştığım yerde kullanamadığım için üzgünüm. - Anders Eurenius
Buna ekleyeceğim: Bir test sistemi kurmak. Başarısızlığın bir seçenek olduğu bir ortama ihtiyacınız var. Bunun için VirtualBox çalıştıran bir sunucum var, ancak sunucular mevcut olmadığında kişisel iş istasyonumu kullandım - Mark Porter


<büyük gönderi feragatnamesi buraya ekle>

Bunlardan bazıları daha önce söylendi, ama tekrar etmeye değer.

Belgeler:

  • Her şeyi belgeleyin. Biriniz yoksa, bir radar wiki'sini kurun, ancak yedeklediğinizden emin olun. Gerçekleri toplayarak başlayın, bir gün büyük bir resim oluşacaktır.

  • Her mantıksal yığın için diyagramlar oluşturun ve bunları güncel tutun. Doğru bir ağ haritasının veya küme şemasının beni kaç kez kurtardığını sayabilirdim.

  • Her sistem için, nasıl oluşturulacağına ilişkin komutları kopyalayıp yapıştırsa bile, günlükler oluşturmaya devam edin.

  • Sisteminizi kurarken, uygulamalarınızı yükleyip yapılandırın, test edin ve kıyaslamalarınızı yapın. Şimdi diskleri silin. Ciddi anlamda. Disklerin önündeki ilk megabayt 'dd' veya kutuyu önyüklenebilir hale getirme. Saat geçiyor: belgelerinizin sıfırdan yeniden oluşturduğunu kanıtlayın (ya da daha da iyisi, meslektaşınızın belgelerinizden başka bir şey yapamayacağını kanıtlayın). Bu, Afet Kurtarma planınızın yarısını oluşturacaktır.

  • Şimdi, Felaket Kurtarma planınızın ilk yarısına sahipsiniz, gerisini belgeleyin; Uygulamanızın durumunu nasıl geri alırsınız (dosyaları teypten geri yükler, veri tabanlarındaki veri tabanlarını yeniden yükler), satıcı / destek detayları, ağ gereksinimleri, nasıl ve nereden yedek donanım almanız gerekir - sisteminizi yedeklemenize yardımcı olacak bir şey.

Otomasyon:

  • Mümkün olduğu kadar otomatikleştirin. Üç kez bir şey yapmanız gerekiyorsa, ikincinin otomasyonunuzu geliştirmek için harcadığından emin olun, böylece üçüncü tam otomatik hale gelir. Otomatikleştiremezseniz, belgeleyin. Orada otomasyon paketi var - onlara işlerini yapıp yapamayacağınıza bakın.

İzleme:

  • Uygulama enstrümantasyonu saf altındır. Sistemden geçen işlemleri izleyebilmek, hata ayıklamayı ve sorun gidermeyi çok daha kolay hale getirir.

  • Sadece uygulamanın canlı olduğunu kanıtlayan uçtan uca testler oluşturun, ancak gerçekten ne gerekiyorsa onu gerçekleştirin. Uyarı amaçlı olarak izleme sistemine takılabilirlerse, puanlarınız size aittir. Bu çift görevde bulunur; uygulama çalışmalarını kanıtlamanın yanı sıra, sistem yükseltmelerini önemli ölçüde kolaylaştırır (izleme sistemi yeşil raporlar, çalışmayı yükseltmek, eve gitme zamanı).

  • Benchmark yapın, bunu yapmak için her şeyi aklınızda tutun. Karşılaştırmalar, ne zaman bir şeyin sihirli dumanı dışarı çıkaracağını beklediğinizi söyler. İzleme, ne zaman olduğunu söyler. Metrikler ve istatistikler, yönetim yoluyla yeni kit (taze sihirli dumanla) almayı kolaylaştırır.

  • Bir izleme sisteminiz yoksa, bir tane uygulayın. Yukarıdaki uçtan uca testleri gerçekten gerçekleştirirseniz bonus puanları.

Güvenlik:

  • "chmod 777" (tüm erişimi / ayrıcalıkları hibe eder) asla çözüm değildir.

  • 'En az bit' ilkesine abone olun; Yüklenmemiş, kopyalanmamış veya disk üzerinde başka bir yerde yaşamıyorsa, bu durum ele alınamaz. "Mutfak lavabosu" İşletim sistemi ve yazılım yüklemeleri, yapım aşamasında hayatınızı kolaylaştırabilir, ancak sonuçta parça başına ödeme yapabilirsiniz.

  • Bir sunucudaki her açık bağlantı noktasının ne için olduğunu bilin. Yenilerinin görünmediğinden emin olmak için onları sık sık denetleyin.

  • Güvenliği ihlal edilmiş bir sunucuyu temizlemeyi denemeyin; sıfırdan yeniden inşa edilmesi gerekiyor. Yeni indirilen bir medya ile yedek bir sunucuya yeniden oluşturma, yalnızca yedeklerden gelen verileri geri yükleme (ikili dosyalar tehlikeye girebilir) veya güvenliği bozulan ana bilgisayarı analiz için bir yere kopyalayın, böylece aynı kitte yeniden oluşturabilirsiniz. Bunun etrafında yasal bir kabus var, bu yüzden yasal yollara gitmeniz gerektiğinde koruma tarafında yanılıyorsunuz. (Not: IANAL).

Donanım:

  • Hiçbir zaman kutuda ne yazdığını bir şey yapmayacağını düşünmeyin. İhtiyacın olanı yaptığını kanıtla, sadece olması durumunda. “Neredeyse işe yarayacağını” düşündüğünüzden daha sık söyleyerek bulabilirsiniz.

  • Uzak donanım yönetiminde skimp yapmayın. Seri konsollar ve ışıkların yönetimi zorunlu olarak düşünülmelidir. Seçeneklerin dışında olduğunuz zamanlar için uzaktan kontrol edilen güç şeritleri için bonus puanları.

(Yanında: Bir sorunu 3 am'da düzeltmenin iki yolu var, biri sıcak, pijamalarınızdaki bir VPN üzerinden bir dizüstü bilgisayarda çalışıyor, diğeri kalın bir ceket ve veri merkezini / ofisini kullanıyor. tercih etmek.)

Proje Yönetimi:

  • Sistemi sürdürecek kişileri proje yaşam döngüsünden bir gün önce dahil edin. Kit ve beyin zamanındaki teslim süreleri sürpriz olabilir ve kuşkusuz ki, proje bağımlılıkları olacak standartlara veya gereksinimlere sahip olacaklardır (şüphesiz).

  • Dokümantasyon projenin bir parçasıdır. Proje kapandıktan ve sistem bakım aşamasına geçtikten sonra her şeyi yazmak için asla zaman alamayacaksınız, bu yüzden başlangıçta programda çaba olarak dahil edildiğinden emin olun.

  • Planlanan eskimeyi birinci günden projeye uygulayın ve proje belgelerinde belirttiğiniz kapanma gününden altı ay önce yenileme döngüsünü başlatın.

Sunucular, üretimde kullanıma uygun olduklarında belirli bir kullanım ömrüne sahiptir. Bu kullanım ömrünün sona ermesi genellikle, satıcının yıllık bakımda daha fazla şarj etmeye başladığı zaman, kitin yenilenmesi ya da yaklaşık üç yıl (hangisi daha kısasa) yenilenmesi gerekeceğinden tanımlanır. Bu süreden sonra, geliştirme / test ortamları için harikalar, ancak işi yürütmek için onlara güvenmemelisiniz. Ortamı 2 1/2 yıl içinde tekrar gözden geçirme, eski kiti siparişi vermeden önce, yeni kiti sipariş etmek için gerekli olan yönetim ve finans çemberinden atlamak ve eski takımı gökyüzündeki büyük satıcıya göndermeden önce düzgün bir göçü uygulamak için bolca zaman verir.

Geliştirme:

  • Geliştirme ve evreleme sisteminizin üretime benzediğinden emin olun. VM'ler veya diğer sanallaştırma teknikleri (bölgeler, LDOM'ler, vservers), gerçek anlamda her anlamda-ama-performans üreten üretim klonlarını kolaylaştırır.

Yedekler

  • Yedeklemediğiniz veriler, istemediğiniz verilerdir. Bu değişmez bir yasadır. Gerçekliğinizin buna uyduğundan emin olun.

  • Yedekler göründüğünden daha zordur; Bazı dosyalar açık veya kilitli olacak, diğerlerinin ise iyileşme umuduna sahip olmak zorunda kalması gerekiyor ve tüm bu sorunların ele alınması gerekiyor. Bazı yedekleme paketlerinde açık / kilitli dosyalar ile uğraşmak için aracılar veya başka yöntemler var, diğer paketler yok. Veritabanlarını diske dökmek ve bunları yedeklemek, bir "quiescing" biçimi olarak sayılır, ancak bu tek yöntem değildir.

  • Testler, test edilmedikçe değersizdir. Her birkaç ayda bir, arşivlerden rastgele bir bant çekin, üzerinde gerçek bir veri olduğundan ve verilerin tutarlı olduğundan emin olun.

Ve en önemlisi...

Başarısızlık modlarını seç, yoksa Murphy de ... ve Murphy programında işe yaramaz.

Başarısızlık için tasarlayın, her sistemin tasarlanmış zayıf noktalarını, neyi tetiklediğini ve nasıl kurtarılacağını belgeleyin. Bir şeyler yanlış gittiğinde tüm farkı yaratacaktır.


44



+1 Aklıma bakan biri gibi - ve güzeldi, p - Oskar Duveborn
"Benchmark, yaptığınız her şeyin aklına gelebilecek her şeyi ölçün, izleyin ve toplayın. Benchmarklar, bir şeyin sihirli dumana izin vereceğini ne zaman bekleyeceğinizi size bildirir.İzleme, ne zaman sahip olduğunuzu size söyler. Metrikler ve istatistikler, yeni bir kitin daha kolay olmasını sağlar. duman) yönetim yoluyla. "  Saf altın - T.J. Crowder


Kolay olduğunu düşünmeyin. Sadece bir web çiftliğini çalıştırabilecekleri dev bir kutuda IIS veya Apache'yi ayarlayabileceklerini düşünen birçok programcı biliyorum. İşin neleri içerdiğini anlayın, araştırmanızı ve planlamanızı yapın, sadece sysadmin çalışmasının uygulamanızı dağıtmak için 10 dakikada yapabileceğiniz kolay şey olduğunu düşünmeyin.


43



Bunun için +1. Yaptığımız için değil bak Aslında bu kadar kolay. - Gert M
Hem yönetici hem de programlama çalışmasını yapan bir generalist olarak, senin durumunuzu tamamen anlıyorum. +1 - Avery Payne
Tabii ki başka bir şekilde gidiyor, ben betik çeşit ve küçük yardımcı programların arasındaki tüm fark ve gerçekten "gerçek" programlama arasındaki farkı gerçekten anlamayan birkaç sysadmin türü buldum. - Rob Moir
+1 Robert: Ya da sysadmin, "kötü bir şekilde tasarlanmış bir ağ mimarisine geçici çözüm" diyor. Karşılıklı saygı ve anlayış önemlidir. - Steven Evers


  • Daha iyi veya daha kötüsü için, çoğu sunucu ve / veya ağ ekipmanının, ikinci bir aileden gelen çocuklara çok benzediğini fark edin. Bunlar bebekleri.  Onları eğilimliler, hasta olduklarında onlara yardımcı olurlar ve onları ihtiyatlı bir şekilde sorun için izlerler. Bu olmamalı bu şekilde ol, ama yıllar sonra, sık sık. Ekipmanı doğru ya da beklentilere uymayan endişelerinizle ilgili olarak iletişim kurduğunuzda bunu aklınızda bulundurun. Ve bir cevap alırsanız, anlamadıysanız, bu dünya görüşü üzerinden filtrelemeyi deneyin.
  • İyi çalışma koşullarında olun. Kıpır kıpır kıpır, ama altında ağırlığına değer. Bir gün özel bir iyiliğe ihtiyacın olacak. Ve bir gün, bu sysadmin hayatını sizin için biraz daha kolay hale getirmek için kendi yolunun dışına çıkmaktan mutlu olacak, sadece bu sefer.
  • Bu çalışma ilişkileri her iki yönde de geçerli. Sysadmin çok meşgulse ve küçük bir betik veya program yazarak hayatı biraz daha kolaylaştırabilirsiniz, o zaman yapın! Bunu bildiğinizden daha çok takdir edecekler.
  • Çok açık olun. "Bu berbat", "aralıklı bir ağ bağlantısına sahip olmak biraz can sıkıcı, ona bakabilme şansın var mı?" Kadar net değil.
  • Uygulamanızın ölçekleneceğini düşünüyorsanız, önce yöneticiye sorun varsayarak olacak. Yapmadığınız bir şeyi "görebilir" veya konuşlandırılacak ekipmanın performans limitleri hakkında bir şeyler bilirler.
  • Uygulamanızın ayarlanması gerekiyorsa, ancak bir kod sorunu gibi görünmüyorsa, sunucuların nasıl performans gösterdiğiyle ilgili güzel sorular sorun. Sysadmins, makinelerini sevgi dolu bir bakımla hareket ettirir ve "hasta" veya "kötü muamele" olduklarında memnun olmazlar. Güzelce sormak, bir makineyi etrafa çevirir (veya onarılmasını / değiştirilmesini).
  • (başka yerlerde belirtildiği gibi) kullandığınız ayarları belgelendirir ve niye ya onları kullanıyorsun. Sadece "checkbox X" veya "uncomment config file line Y" komutunu kullanmanız yardımcı olmaz. Tüm verilerinizi, bildiğiniz herkes için bir sonraki yeniden başlatmada silen seçeneği ayarlıyor olabilirsiniz.
  • Ayarı kağıtta belgelemek için zamanınız yoksa, mümkünse sistemde belgelemeyi deneyin. Config dosyaları ile, bu hemen hemen standart bir uygulama olmalıdır - her ayar değişikliği, bu ayarın beklenen etkisi, baş harfleri, baş harfleri ile birlikte, tarih damgası olmalıdır niye ya değiştirildi (bkz. önceki madde işareti). Bu küçük alışkanlık, pastırma zamanımı sırasında pastırmamı bir kereden fazla kurtardı. "Bunu neden yaptık?" "Çünkü, X politikasını zorunlu kıldık ve Y'nin bize politika X için ihtiyacımız olan davranışı verdiğini belirledik."
  • Bira. Veya Cola. Hatta su. İçecekler her zaman memnuniyetle karşılıyor. Bir sysadmin olmak susuz bir iştir.

27



Yapılandırma dosyası dokümantasyon / değişiklik sorunu için, tüm konfigürasyon dosyalarını bir sürüm kontrol sistemine koymanızı tavsiye ederim. Bu, programcıların yapması için çok kolay olmalı çünkü umarız ki böyle bir sistemi kendi kaynak kodları için kullanıyorlar. Bir değişiklik yaptıklarında da bir yorum eklerlerse, tarihe geri dönmek ve ne zaman ve neden değiştiğini görmek kolay olacaktır. - Anders Sandvig
Bunun için +1, değişim yönetiminde "döngüyü kapatır". Büyük öneri. - Avery Payne
Net hata raporları vermek için mükemmel öneri. Hiçbir şey bana bir problem olduğunu söylemekten çok daha fazla hüsrana uğruyor ve pek çok insanı potansiyel olarak etkileyebileceğini bilerek, ilgisiz bir programcıdan ayrıntıları kızdırmak zorundayım - Dave Cheney


Güvenlik bir sonradan değil. Saldırıya uğramış bir uygulama, programcının beceriksiz görünmesine neden olsa da (en azından), bir sysadmin için yedeklemelerin doğrulanması, temizlenmesi ve / veya geri yüklenmesi için harcanan bir hafta sonu haftasıdır.

Bu nedenle, yedeklemeleri sürüm kontrolü olarak ele almayın. Onlar felaket kurtarma için ve gerçekten ne değiştirdiğini unuttun çünkü kodunuzu geri yüklemek için tasarlanmamıştır.

Ve kodunuzun kırılması için Windows Updates'i körü körüne suçlamayı bırakın. Umrumda işe yaramadı, neden şimdi işe yaramadığını söyle - o zaman kimin hatası olduğunu görebiliriz.


23





Ağ sorunları nasıl hata ayıklanır ve programınızı sysadmin araçlarıyla çalıştırın. Sistem yönetimine başlayan bir programcı olarak, birçok programcı ağa bir kez "sadece durur" olmak için ne kadar ikna edici olur diye hayret ediyorum.

  • Wiresharkkodunuzu kara kutuda, paket-paket olarak izlemek için
  • Doğrudan ağ hizmetlerine bağlanma araçları:
    • Telnet, netcat veya socat TCP veya UDP üzerinden düz bağlantılar için
    • OpenSSL şifreleme ile aynı şey için (ipucu: deneyin openssl s_client -connect target-host:port şebeke servislerine manuel olarak bağlanmak için
  • kazmak (BIND 9 paketinde) ad çözümlemesini hata ayıklamak için
  • Ağ kümesinin hangi bölümünün başarısız bir bağlantının zamanlaması ve diğer özelliklerine bağlı olarak başarısız olduğunu söyleyebilmek
  • belki HTTPFox ve / veya Firebug

17



+1. Katı ağ performansına bağlı bir uygulama yazan herhangi bir geliştiricinin, kod yazılmadan önce, büyük W Richard Stevens tarafından 'TCP / IP Illustrated v1' yazması gerekir. - Murali Suriar
Bütün oylar için teşekkürler. Altta yatan ağ başarısız olduğunda programcıları çaresiz bir şekilde beklemek için yıllarca beni korkuttu. Ve bu günlerde, hemen hemen tüm programlama ağ programlamadır. - jhs


Sorunların nasıl giderileceğini öğrenin.

Parayı geçmek çok kolay (örneğin, ağınız veri tabanları ile iletişimimi sürdürüyor). Ağın hatası olabilir, ancak uygulama günlüklerinde, Google veya SO kullanarak, uygulamanın yapılandırmasında bir sorun ortaya çıkabileceği hatalarla karşılaşmanız gerekir.

Herkes donanımı, işletim sistemini veya ağı suçlamayı sever, bu yüzden biraz daha özenli bir çalışma yaparsanız, sysadmin'i mutlu bir insan haline getireceksiniz. Çünkü, başka bir şey olmasaydı, neyin yanlış olabileceğine dair belirli bir doğrultuda yönlendirebilirsiniz (“ağınız berbat” demenin aksine ya da eşit derecede yararlı bir şey).


14



Kesinlikle. Yanlış yerlerde sorun ararken aradığım saatleri saymaya başlayamıyorum. yanlış yön - Gert M


Yapabileceğin her şeyi belgeleyin. Son sysadmin'in 'iş güvenliği' için bir şeyi belgelemenin ne kadar sevimli olacağını ya da sadece içeri girmek ve dışarı çıkmak istediğini söyleyemem. Tıpkı bir programcının iyi yorumlar bırakması gibi, sysadminler de belgelemelidir. Topolojinin bir diyagramı da güzel olurdu.


8





B planı.

Bir çözüm tasarlarken ve geliştirirken her zaman bir felaket kurtarma planı düşünün. Bir kesintiye yol açabilecek tek arıza noktalarını tanımak.


7





Belgeleme: Kuruyup gitmeye gerek yoktur, fakat uygulama nasıl çalışır, bitlerin nasıl çalıştığını gösteren bir diyagram ve her bir bileşen yanlış olduğunda her bileşenin test edilmesini sağlar. Örnek veri ve çıktı güzel.

Gereksinimler: Hangi modüllere güveniyor? Sürümleri? İŞLETİM SİSTEMİ?

İzleme: ideal geliştiriciler izleme bilgilerini ve uygulama ile testleri içerir.

Ambalaj hakkında konuşmak, AMBALAJ! VCS'den bir dosyanın yeni bir revizyonunu kontrol etmek ve bir grup sunucuya kopyalamak anlamına gelen "dağıtım" dan daha kötü bir şey yoktur. Çoğu zaman programcılar yazılım dağıtmanın karmaşıklığını takdir etmezler: sürümlenmiş, paketlenmiş yazılımların çoğu işletim sisteminin omurgasını oluşturmasının nedenleri vardır.

Bir geliştirici bana kısa bir zaman dilimi, kapsamlı dokümantasyon ve bazı Nagios testleri ile kurulan bir RPM ile geldiyse benim en iyi arkadaşım olacaktı.


6