Sunucu yönetimi #1
Selamlar, bugün ki konu bir sunucuya birden fazla farklı node kurarken nelere dikkat etmeliyiz ve nasıl kurulur? Bazı kavramları Türkçe/İngilizce bir yazıp aşinalığınızı da arttırmaya çalışacağım.
Kımızınızı ve çilekli sütünüzü hazırladıysanız başlayalım.
Donanım
Her şeyin başı donanımdan geliyor - biliyorsunuz ki arkadaşlar bizler node run ederken testnetlerde sanal bölünmüş makineler kiralayarak (vps) işimizi gerçekleştiririz, bu işleri gerçekleştirirken mevcut cihazlarımızı kullanmadığımız için cihaz tercih ederken bir donanım tercih etme süreci başlar. Donanımları genellikle aktif olarak node run ediyorsak stratejik bir şekilde tercih ederiz.
Yani, bazen XYZ node'u için 2 vCPU - 2 RAM tercih edebilirken aynı node'u farklı tarihte run ettiğimizde çok daha farklı donanımlar tercih edebiliyoruz. Bunun bir çok nedeni var, başta bu blogpost'un nedeni olan birden fazla node kurma..
Pekala, donanımda muhim olan kısım nedir bakalım..
Asansör:
Bilirsiniz, bu konuda eskiden bahsederken sık sık kendim tesadüfen uydurduğum ve tamda cuk oturan örnek olan asansör örneğimden bahsedeceğim.
Diyelim ki bir asansöre sahipsiniz, asansörünüz 500 kilo kadar yük taşıyabiliyor, bu şartlar altında sizinde tercihiniz tabii ki bu çerçeve içersinde bir şeyler sığdırmak. 500 kilo kapasiteniz varsa 700 kiloluk yük taşıyamazsınız (düz mantık) daha fazlasını yüklemek pekte mantıklı değil. Birde teknik olarak göz atalım.
Cihazlarımızda sadece asansörün kaldıracağı kilo bazında bir metrik yok bir çok metrik var, en çok dikkat edilmesi gerekenleri sayıyorum:
- CPU (İşlemci)
- RAM
- İnternet
- SSD (Depolama alanı)
- Trafik kapasiteniz (bandswith)
Önemliden önemsize doğru sıraladım. Burada şu nodelar veya bu nodelar böyledir, bunlara dayanarak bir hesap yapın demem pek mümkün değil, o kadar çok node çeşiti var ki -
Buraya parantez açıyorum; Bir çoğu node sandığınız şey aslında tam olarak node değil, sadece Web3 CT'nin siyah ekran görünce, gördüğü şeye node demesinden ötürü ve bir çoğunuzun böyle bildiği için node demek zorunda kalıyorum, bunlarıda zamanla ayrıştıracaksınız. Ayrıştırmak zorundasınız çünkü aralarındaki farkları benimsediğinizde çok daha fazla stratejik ve bilinçli iş yapabileceksiniz, temelinde de birden fazla node çalıştırma gelir - bir cihaza donanım yetmesine rağmen birden fazla node çalıştırabilirken, bazı işlerde birden fazla scanner çalıştıramazsınız mesela, bazende birden fazla validator çalıştıramazsınız mesela, bazen birden fazla data toplayamaz bazende birden fazla trafik hizmeti sunabileceksiniz mesela.. veya tam tersleri.. bunlar hep zamanla ama şimdilik node diyelim hepsine.
Donanım konusu bitmedi, devam:
Pekala nelere dikkat etmenizi biliyorsunuz, peki nasıl edeceksiniz?
Öncelikle ben repolarımda (github'da paylaştığım karalamalar) en başa her zaman gerekli donanımı yazarım lakin dediğim gibi gerekli donanım diye belirtirim, neden gerekli diyoruz bunun bir sabit donanımı yok mu? Aslına bakarsanız var ama her zaman değil, anlatayım:
Herhangi bir 'node' kurulumu yaptığınızda dökümasyonların çoğunda en az 2 genellikle 3 farklı donanım (aynı tip node ise, değilse iş değişir.. aynı tip node derken? - mesela full node, light node, archive node, bridge node, scanner node gibi.. aynı zincirde farklı node türleri.) görebiliyorsunuz.. bunların nedeni node tip aynı ise farklı olmasının nedenleri genellikle ikiye ayrılır:
1- Kurulum için gerekli donanım (Minimum hardware)
2- Süreklilik için gerekli donanım (Maximum hardware)
3- Önerilen donanım - Genel (Recommended hardware)
Diyorum ya hep node bir flood ile video ile çözülecek anlaşılacak bir şey değil, yukarıda 3'e ayırdığım konuda her node için geçerli değildir, kimi node 1 donanım önerirken kimisi 2/3 önerir.
1- Minimum donanım:
Ben genellikle minimum donanımı eklerim repolarıma bu 2-'yi okuyunca daha anlaşılacak olacak ama nedenlerini anlatayım: Çoğu zaman önerilen donanımlar Süreklilik için ve ağın çökmemesi için önerilir ve garantiye alınır işler, hal böyleyken bizler Türk vatandaşı ve Türk lirası kullanıyoruz, bizim 30'umuz onların 1'i, biz her kuruşumuzu korumak, sahip çıkmak durumunda kaldığımız için rahat rahat her istediğimiz donanıma sahip olamıyoruz.
Bundan mütevellit cihazlarımızı minimum fiyat / maksimum performans (f/p) tutmak durumundayız. Son olarak maddiyatı dışarıda bırakınca gerçekten bazı önerilen donanımlar çok gereksiz olabiliyor, haliyle ben repolarımı paylaşmadan önce test ediyor size en uygun (f/p) donanımı sunuyorum.
2- Maximum donanım:
Maximum donanım genellikle mainnete (dökümasyonların çoğu mainnete hazırlık süreci için hazırlandığı için ) özgü belirtilir ve mainnette gerekli olan yada şiddetsiz tavsiye edilen donanımdır. Tabii testnet için, performans vb. diğer konularda da geçerlidir - diyorum ya çok geniş yelpaze..
Örneğin daha önce yaşanan bir örnek anlatayım:
Sei node'u kurmuştuk ve ben Sei repomda Kametera (Sunucu firması) floodu hazırlayıp Sei testnetine ücretsiz nasıl katılınır diye bir içerik hazırlamıştım, o günlerde de bir çok kişi kametara sayesinde Sei'ye maliyetsiz bir şekilde katıldı. Ve Kametera ücretsiz verdiği sunucularda maksimum 8 RAM'e kadar erişilebiliyordu - Sei testnetinde aktif settin %65'inden fazla Bizim Topluluk vardı ve ağ stres testi aşamsında 8 RAM yeterli gelmedi, 8 RAM'i geçti ve 8 RAM'in altında kalan tüm node'lar çöktü, tüm validatörlerin çökmesiyle ağda çökmüştü.
Hal böyleyken tüm nodeların 16 GB RAM kullanılması, donanım yetersizliği olanların mümkünse aktif sette kalınmaması hakkında bir süreç ilerlemişti ama ufak sıyrıkla kurtulup çözüm süreci (!) başlattık.
Yani maximum donanımlar özetle bu 2 neden ile özetlenebilir. (daha fazlası çok teknik)
3- Önerilen donanım:
Bu genellikle benim gibi ekip tarafından bir usermış gibi test edilip dökümasyonda belirtlien donanımdır ama yinede maximum donanıma yatkındır. Çokta vakit harcamayacağım bu başlığa, zamanla aşina olursunuz.
En basitinden SADECE DONANIM İÇİN bir user ne yapmalı?
htop ve df -h komutlarını kullanarak bir kaç dakika analiz yapmalı
htop df -h
İkisindende bir örnek verip donanım konusunu bitirelim:
htop:
Bu benim santiment ve içersinde bir kaç işimi gördüğüm sunucum, gördüğünüz üzere ram kullanımı maksimum seviyeye oldukça yakın, CPU (görsel ortalama harcanma anında çekildi) ideal bir seviyede, böyle durumda neler yapılabilir:
Eğer CPU'da oldukça yüksek veya ortanın üzerinde olsaydı bu sunucuyu daha fazla kullanmanın, yeni sayfalar açmanın pek anlamı olmazdı, lakin mevcut durumda RAM full seviyesinde olsada bir çözüm vardır, anlatıyorum:
Swap space:
RAM'i bir otoban gibi düşünebilirsiniz, otaban ne kadar geniş ve ferah olursa arabalar (yani datalar) o kadar akıcı olur. Lakin bazen otoban çok kalabalık olur ve geçiçi çözüm olan swap space'i kullanırız (emniyet şeridi diyelim).
Swap alanı, kaç GB olarak belirlerseniz Diskinizden o kadar alanı swap'a ayırıp, artık RAM'de ki arabaların bir kısmı emniyet şeritinden ilerleyecektir.
Örneğin bir swap örneki: 2GB RAM'imim varmış ve 650 mb swap alanı kullanmışım.
E hocam o zaman RAM konusunda sorunumuz kalmaz, ihtiyacımız olduğunda swap açalım olmaz mı? - olmazdiyenözgürdemirtaş.gif
Neden olmaz, çünkü bir otobanınız var ve bu otabanın büyük kısmını emniyet şeriti yapamazsınız değil mi? Ufak bir kısım olur ve sadece 'ihtiyacı olan araçlar kullanır'. Nedir bu ihtiyacı olan araçlar; Cihazlarınızda ki dataların hepsi swap alanı kullanmaz, sadece bazı datalar.. Tıpkı trafikteki bazı araçların bazı durumlarda kullanabileceği gibidir.
2-3 GB tadındadır, fazlası performans arttırmaz, düşürür.. Otaban boşken arabaları emniyet şeridine sıkıştırmaya gerek yok.
..Kısacası zamanla donanım konusunda dengelerinizi sağlayacağınız şekilde bilgilendireceğim.
df -h:
Aslında depolama konusu çok daha derinlemesine anlatılacak bir konudur lakin ehemmiyeti bizim için diğerleri kadar önemli değildir, nedenlerini saymayacaktım ama en basit ifadeyle: İlk olarak bizler zaten ağın başlangıç aşamalarında katılıyoruz testnete haliyle ağdaki data boyutu oldukça düşük oluyor. Sonrasında data boyutu büyükse zaten bir çözüm bulmaya çalışıyor genelliklede bir çözüm buluyoruz. Ama tabii ki depolama göz ardı edilmeyecek bir konu.
Diskimizi df -h ile kontrol ederken hangi kısıma bakacaksınız?
/dev/sda1
Eğer bir VPS'niz varsa Filesystem'de ki diskinizi en basitinden burada görebilirsiniz, zaten altta ki görsele baktığınızda total diskinizin %98'i /dev/sda1'e ayrılmış.
- Size: Toplam disk boyutum (38 GB)
- Used: Kullandığım alan (35 GB)
- Avail: Mevcut kalan alanım (1.1 GB)
Bu cihazda görüyoruz ki diskim %98 dolmuş, bunun içersinde herhangi bir işlem yapmayı daha fazla düşünemeyiz.. Aksi olsaydı ve diskim %50 dolsaydı ve bana geriye kalan 20 gb Yeterli olsaydı (Yeni gelen için değil, cihazdaki tüm nodelar için) o zaman bir sonraki kurulumu yapabilirdik.
Peki disk tasarrufu veya prune (gereksiz dataları budama) yapılabilir mi? Bu çok ayrı bir konu ve her node'da çok çok fazla değişkenlik gösterir.. Bu da artık repolarımda o node'a özgü anlattığım şeyler.
Özetle bu blog'un #2'sinde anlatacağım koşullar dahilinde donanımınızı analiz edip buna göre kurulum yapmaya çalışabilirsiniz.