Avalanche Node’u Ayakta tutmak

Selcuk
4 min readDec 29, 2020

--

Evinizde benim gibi Raspberry Pi4 üzerinde Avalanche node çalıştırıyorsanız, sağlıklı çalışıp çalışmadığını kontrol etmek zorundasınız ve internet kopmaları, elektrik kesintisi gibi %60 uptime sürenizin düşmesini etkileyen faktörler olabilir. Validasyon sürenizi ne kadar uzun tutarsanız, daha büyük sorunlarla karşılaştığınızda (raspberry sisteminizin tamamen çalışmaz hale gelmesi veya database inizin bozulması gibi) yeniden kurulum süreçlerinde zamandan kazanmış olursunuz.

Avalanche node’umu cep telefonunda kullandığım “juiceSSH” ve işyerinde windows işletim sistemine yüklediğim “Putty” programından API sorgulamaları ile kontrol ediyorum. Özelikle juice SSH’in tam sürümü aşağıdaki kodları kaydetmenize yarayan (snippets) eklentisi ile API sorgulamalarınızı çok kolaylaştırıyor ve fiyatı da çok uygun.

API sorgulamaları için docs.avax.network bölümünden health ve info API ları ile sorgulama yapabilirsiniz.

API sorgulamalarından herhangi birinden olumsuz sonuç alıyorsanız, node’unuz sizin kontrol edemediğiniz olaylar sebebiyle kopmalar yaşıyor olabilir. Bu kopmanın önüne geçebilmek için şu adımları kontrol etmeniz işinizi kolaylaştırabilir.

  1. Modeminiz bozuk olabilir. Modemi değişmek benim node’umun bağlantısı için çok büyük performans artışı sağladı. 7/24 çalışan bir sistemin bozulma olasılığı çok yüksektir. Ethernet portu olan kaliteli bir router işinizi görecektir.
  2. Avalanche node modeminize wireless ile bağlanıyor ise kopmalar veya database de bozulmalar oluşabilir. Modeminizi Raspberry Pi a Ethernet kablosu ile bağlayın. Ayrıca raspberry pi daki wireless ınızı config.txt bölümünden kapayın…
  3. Modem ve Raspberry Pi için mümkünse UPS kesintisiz güç kaynağı kullanın. Raspberry pi ve modem düşük elektrik çektiği için uzun süre sistemleri çalışır durumda tutacaktır.
  4. Avalanchego yu çalıştırırken “service” dosyası oluşturun. Bu istenmeyen kopmalarda, avalanchego yu otomatik başlatmanızı sağlar.

2.ci ve 4.cü maddeyi biraz açalım:

2.ci maddedeki config.txt dosyasının olduğu dizini bulalım… benim kullandığım ubuntu mate de /boot/firmware dosyası içinde bulunuyor…sizin sisteme bağlı olarak /boot içinde olabilir…

sudo nano /boot/firmware/config.txt

komutu ile açarak aşağıdakileri ikinci # ile yazılan dizinin altına ekleyip ctrl + O ile kaydedip çıkalım.

dtoverlay=disable-wifi
dtoverlay=disable-bt

(dtoverlay=disable-bt bluetooth u kapar isterseniz bu komutu yazmayabilirsiniz)

hostname -I ile raspberry nin bağlı olduğu iç IP adresinizi sorgulayabilirsiniz…wireless ı kapadığımıza göre artık 2 adet iç ip adresi gözükmeyecektir.

4.cü madde için yapmamız gereken şey avalanchego için bir servis dosyası yaratalım.

sudo nano /etc/systemd/system/avalanchego.service

nano text editorümüz açıldıktan sonra alttaki kodları editördeki boş sayfaya yapıştıralım

[Unit]
Description=AVAX node
Wants=network-online.target
After=network.target network-online.target
[Unit]
Description=AVAX node
Wants=network-online.target
After=network.target network-online.target
[Service]
User=xxxx
WorkingDirectory=/home/Xkullanıcı/avalanchego-v1.4.2
ExecStart=/home/Xkullanıcı/avalanchego-v1.4.2/avalanchego --public-ip=x.x.x.x
KillMode=process
KillSignal=SIGINT
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=avalanchego
Restart=always
RestartSec=0
# Hardening measures
####################
# Provide a private /tmp and /var/tmp.
PrivateTmp=true
# Mount /usr, /boot/ and /etc read-only for the process.
ProtectSystem=full
# Deny access to /home, /root and /run/user
# ProtectHome=true
# Disallow the process and all of its children to gain
# new privileges through execve().
NoNewPrivileges=true
# Use a new /dev namespace only populated with API pseudo devices
# such as /dev/null, /dev/zero and /dev/random.
PrivateDevices=true
[Install]
WantedBy=multi-user.target

çıkarken Ctrl + O ile dosyamızı kaydedip çıkış yapalım ve

yarattığımız servisi çalıştırmak için şu kodları uygulayalım:

sudo chmod 644 /etc/systemd/system/avalanchego.service
sudo systemctl start avalanchego
sudo systemctl enable avalanchego

ps aux | grep avalanchego komutu ile servisimizin başlayıp başlamadığını kontrol edebiliriz…ayırıca systemctl status avalanchego ile de bu işlemin çalışıp çalışmadığını kontrol edebiliriz.

yukarıdaki linux tabanında yarattığı bir servis dosyasıdır. Avalanchego yu açar ve kapar.

bir sonraki aşamada ise Cron a bir betik yazalım(Yazarı Emre Beye teşekkürler). İlk önce shell dosyamızı oluşturalım. Nano editör ile ;

sudo nano avax-restart.sh

Aşağıdaki komutları nano editör içine kopyalayalım.

#!/bin/bashproc=”avalanchego”for pl in $proc
do
pc=`pidof $pl | wc -l`
if [ $pc -lt 1 ]; then
#Not working
sudo systemctl start avalanchego
#service avalanchego restart
fi
done

ctrl + x ile kaydettikten sonra bunu cron ile 5 dakikada bir kontrol etmesini isteyelim.

crontab -e

editör açıldıktan sonra satırın aşağısına # comment işareti olmaksızın şunları ekleyelim.

*/5 * * * * USER /home/USER/avax-restart.sh

yıldızlar arasında boşluk olmasına dikkat edin. Yazdıklarımız kaydederek çıkış yapalım. avax-restart.sh aktive etmek için şunları uygulayalım;

chmod +x /home/USER/avax-restart.shchown kullanıcı adınız? /home/USER/avax-restart.sh

Önemli not: yukarıda yarattığımız service ve shell dosyasını yukarıda bahsettiğim API sorgulamalarıyla sık sık kontrol etmeyi ihmal etmeyin. ayrıca aşağıdaki iki kod ile avalanchego.service ve avax-restart.sh in çalışmasını sorgulayabilirsiniz;

systemctl status avalanchegosystemctl status cron

Teşekkürler: yardımları için service.avalanchego yazarı olan Burcusan ve telegram da betik yazıp yollayan emre NOP [AMST] ye çok teşekkür ederim. Sayelerinde Avalanche node um çok yüksek uptime a ulaştı…

https://avascan.info/staking/validator/NodeID-62XYpHtuv92hHhJJXVd4wxJqPFv9rbWA8 için Avaxlarınızı gönül rahatlığıyla yatırabilirsiniz :)

--

--