dryasarsafkan.com
Yaşar Safkan
Yazılım · Sistemler · Eğitim Software · Systems · Teaching
YazılarWriting

8401 Makinayı Nasıl Kapattım?

14 April 2021

Artık on yılı geçti, ama Google hikayeleri askerlik hikayeleri gibi oldu, anlatıp duruyorum. Hoş süresi de bir “eski zaman” askerliği kadardı, dolayısıyla çok da şaşıracak bir şey yok.

Bilenler bilir, Google’da SRE’yim, Site Reliability Engineer. Basit anlatırsak, üretim sistemlerinin sahibiyiz, uçtan uca çalışmasından sorumluyuz.

Önemli işlerden biri, “nöbetçi”lik. Birinci nöbetçi var, ikinci nöbetçi var. Birinci nöbetçi, düşen alarmları karşılar. İkinci nöbetçi ise sistemden talepleri karşılar gibi bir sistem.

İşi gücü öğrendim. İlk defa birinci nöbetçi oluyorum. Birinci nöbetçinin işlerinden biri de, “PCR”, yani “Production Change Request” işlerine destek olmak. Bu genelde makinalar yer değiştirecek, tamir için sökülecek, network değişecek gibi işler. Destek olmak da, ilgili makinaları “boşa çıkartıp” (üzerlerindeki verinin başka makinalara akmasını sağlayıp) sonra tekrar sisteme dahil edilmesini sağlamak.

Saat 16:00 gibi, bir PCR alarmı geldi. O zaman Google’da her şeyin olduğu gibi, onun da sayfası var. Girdim baktım. Tamam, yapacaklarım belli. Yaptım, kenara koydum.

Bu sırada, chat üzerinden ilgili veri merkezinde işi yapacak olan arkadaş (ben Dublin’deyim, o Almanya’da) yazdı. Dedi ki: “Şimdi biz düğmesine basıp kapatırsak, açıldığında disk kontrolü yapıyor çok uzun sürüyor. Sen şu makinaları uzaktan ‘shutdown’ verip kapat da, açılırken çabuk açılsın.”

Ben de “tamam” dedim. Sayfaya baktım, “Etkilenen makinalar: Hepsi” yazıyor. Eee, demek ki hepsi kapatılacak. O veri merkezinde yaklaşık on bin adet makina var. Karşımda (o zamanki) takım liderimiz John Looney oturuyor. Kafamı kaldırdım. Durumu anlattım. O da dedi ki “yaz bir loop, hepsine shutdown gönder…”

Google’da skala öyle bir şaşmış ki… Normal geldi yaptığım şey, hiç garip falan gelmedi.

Kara ekranda yazdım bir satırlık komutu. O veri merkezinde yetkim olan tüm makinalara ‘shutdown -h now’ komutunu gönderdim.

Sonra, chat’ten yazdım, “Orası bayağı sessizleşmiş olmalı” diye.

Beklemediğim uzunlukta bir sessizlik oldu.

Sonra chat’ten cevap geldi: “Sen ne yaptın, VERİ MERKEZİ’Nİ Mİ KAPATTIN?”

Dedim evet. Öyle olmayacak mıydı.

“Hayır, toplam iki kabin, 40 makina yer değiştirecekti…”

Rezillik.

Rezilliğin miktarını şöyle anlatayım:

On bin kadar olan makinaların %85’i benim kontrolümde. %15’i ise başka “özel” gruplara ait. Bu %15 ise, kabinlere düzensiz dağılmış durumda.

Bir kabinde 20 makina var. Eğer hepsi kapandıysa, bu güzel durum. Kabin’in power tuşuna basınca, hepsi açılıyor yeniden.

İçinde bir tane bile açık varsa, kapalı makinaların tuşlarına teker teker basmak gerekiyor. En az yarısı bu durumda…

Kontrol ettim, 8401 tane makina kapatmayı başarmışım. Veri merkezinde çalışan üç arkadaş, yaklaşık 5000 tane düğmeye bastılar makinaları açmak için.

Rezillik bununla biter mi? Bitmez.

Bir makinayı kapatırsanız, yeniden açmaya çalışınca, yüzde yarım ihtimalle geri gelmeyecektir. Bir şeyleri aslında bozulmuştur ve kapatıp açınca bu arıza yeniden açılmasını engeller.

8401 makinanın 40 tanesi geri gelmedi. Sorun şu ki, her parça verinin üç kopyası var rastgele seçilmiş makinalarda ama, 40 makinanın içinde bir sürü üçlü var. Bol miktarda kayıp veri var demek bu.

Verileri geri getirmek, makinaları canlandırarak oluyor. Hangilerinin en çok işe yarayacağını hesap edip, veri merkezine bildiriyorsun. Canlandırabildiklerini canlandırıyorlar. Sonra veriler oradan çekiliyor diğer makinalara.

On gün boyunca, ben de dahil, hem Dublin ekibi, hem Mountain View ekibi, hem de veri merkezi ekibi kayıp veri parçalarını makina canlandırarak, bazen makinanın içindeki diski başka makinaya bağlayarak kayıp verileri geri getirmeye uğraşarak geçirdik.

Ha, hepsinin arasında, bir de Gmail kesintisi oldu o gün. O da aynı binadaki yan veri merkezinde. “Acaba onu da ben mi yaptım” diye bir “kaynar su dökülmesi” yaşadım ama, neyse, onu ben yapmamışım.

İşte 8401 tane makinayı böyle kapattım.