Bu rehber, elinizde bulunan 4 sunucudan birini operatör sunucusu olarak kullanarak, diğer 3 sunucuyu otomasyonla nasıl kurup yöneteceğinizi anlatır. Bu sistem, manuel kontrol süreçlerini otomasyona geçirerek zamandan tasarruf etmenizi ve hataları minimize etmenizi sağlar.
- Zamandan Tasarruf: Tek bir komutla birden fazla sunucuyu kurabilir ve yönetebilirsiniz.
- Hata Azaltma: Manuel süreçlerde meydana gelebilecek insan hatalarını en aza indirir.
- Kolay Ölçeklenebilirlik: Yeni sunucu eklemek veya mevcut bir sunucuyu yapıdan çıkarmak kolaydır.
- Otomatik İzleme: Sistem durumunu otomatik olarak kontrol eder ve gerekli durumlarda Telegram üzerinden bilgilendirme yapar.
- Modern Entegrasyonlar: Prometheus ve Grafana gibi araçlarla entegrasyon sağlayarak metrikleri görselleştirebilirsiniz.
-
Sunucu Listesi:
-
Operatör Sunucusu (Merkez):
Bu sunucu üzerinden tüm diğer sunucuları otomatik kurar, yönetir ve izlersiniz. Ayrıca Prometheus, Grafana gibi izleme araçlarını burada barındırabilirsiniz. -
Alt Sunucu 1 (Kullanıcısı Var):
Bu sunucudaUSER_BOT_TOKENveUSER_CHAT_IDayarlı, yani bioauth inaktif olduğunda kullanıcıya Telegram üzerinden mesaj gider. -
Alt Sunucu 2 (Kullanıcısı Var):
İkinci sunucu da benzer şekilde kendi kullanıcısına mesaj gönderebilir. -
Alt Sunucu 3 (Kullanıcısı Yok):
Bu sunucuda kullanıcı tanımlanmamış, bu nedenle sessiz modda çalışır. Yani Telegram mesajı göndermez, fakat node_exporter ile metrik sağlar.
-
-
Daha Önce Nasıldı?
Eskiden manuel olarak tek tek kontrol yapıyordunuz. Örneğin, bioauth inaktif mi, tünel kapalı mı, senkronizasyon geride mi? Tüm bunları elle incelemek zorundaydınız. Her bir kontrol için farklı komutları çalıştırmak, raporları yorumlamak ve ardından düzeltici işlemleri uygulamak saatlerinizi alabiliyordu. Özellikle birden fazla sunucu varsa bu süreç daha da karmaşık ve zaman alıcı hale geliyordu. -
Şimdi Neler Değişiyor?
check_all.pyscripti sayesinde bu kontroller otomatik yapılır ve Telegram’a mesaj atılır.setup_subnode.shile her alt sunucu otomatik kurulur.deploy_subnodes.shile tek komutla tüm alt sunucuları operatör sunucusundan yönetebilirsiniz.
-
check_all.py:
Alt sunucularda çalışır, periyodik (her dakika) kontrol yapar. Bioauth, tünel, senkronizasyon, validator durumunu izler. Gerekirse kullanıcıya (varsa) veya operatöre Telegram mesajı gönderir. Kullanıcı tanımlı değilse sessiz kalır. -
setup_subnode.sh:
Alt sunucuya göndereceğiniz kurulum scripti. Otomatik olarak paketleri,node_exporter’ı,check_all.py’yi ve servisleri ayarlar. Parametre olarak kullanıcı ve operatör bilgilerini alır,check_all.envdosyasıyla konfigüre eder. -
deploy_subnodes.sh:
Operatör sunucusunda çalışır.subnodes.enviçindeki alt sunucu IP’lerini ve belirlediğiniz kullanıcı/operatör bilgilerini kullanaraksetup_subnode.sh’yi her sunucuya kopyalar ve çalıştırır. Tek komutla çoklu kurulum sağlar. -
subnodes.env:
Alt sunucuların IP adreslerini tutar. Yeni sunucu eklerken, çıkarırken bu dosyayı güncellersiniz. Örnek birsubnodes.envdosyası aşağıdaki gibi olabilir:# subnodes.env örnek içeriği NODE_1_IP=192.168.1.101 NODE_2_IP=192.168.1.102 NODE_3_IP=192.168.1.103 # Kullanıcı bilgileri NODE_1_USER_CHAT_ID=123456789 NODE_1_USER_BOT_TOKEN=abcdefg12345 NODE_2_USER_CHAT_ID=987654321 NODE_2_USER_BOT_TOKEN=hijklmn67890 # Operatör bilgileri OPERATOR_CHAT_ID=1122334455 OPERATOR_BOT_TOKEN=opertoken12345
-
GitHub’dan Dosyaları İndirin:
Operatör sunucunuza SSH ile bağlanın ve:wget https://raw.githubusercontent.com/halilunay/humanode/main/subnodes.env wget https://raw.githubusercontent.com/halilunay/humanode/main/deploy_subnodes.sh chmod +x deploy_subnodes.sh
-
Dosya İçeriklerini Düzenleyin:
subnodes.enviçine alt sunucuların IP adreslerini yazın.deploy_subnodes.shiçinde her alt sunucu içinUSER_BOT_TOKEN,USER_CHAT_ID,NODE_NAMEdeğerlerini belirleyin.- Kullanıcısı olan sunuculara geçerli token ve chat_id verin.
- Kullanıcısız sunucularda bu değerleri boş bırakın.
OPERATOR_BOT_TOKENveOPERATOR_CHAT_IDsabit kalabilir.
-
Kurulumu Başlatın:
./deploy_subnodes.sh
Bu komut:
setup_subnode.sh’yi GitHub’dan indirir.- Her alt sunucuya
setup_subnode.sh’yiscpile kopyalar. sshile alt sunucuya bağlanıpsetup_subnode.shparametrelerle çalıştırır.- Sunucu otomatik paket kurulumlarını yapar,
check_all.py’yi indirir, servisleri başlatır.
-
Kontrol Edin: Alt sunucuya bağlanarak:
systemctl status check_all.timer systemctl status node_exporter
Her şeyin çalıştığını doğrulayın.
- Eğer kullanıcı tanımlıysa bioauth inaktif olduğunda kullanıcıya mesaj gelecek. Tünel kapalıysa operatöre mesaj gidecek.
- Kullanıcısı olmayan sunucular sessiz modda. Yani
USER_BOT_TOKENveUSER_CHAT_IDboş ise mesaj atmaz.
-
Yeni Sunucu Ekleme:
subnodes.envdosyasına yeni sunucu IP’sini ekleyin,deploy_subnodes.shiçinde o sunucuya özelUSER_BOT_TOKEN,USER_CHAT_ID,NODE_NAMEdeğerlerini girin. Tekrar./deploy_subnodes.shçalıştırın. Yeni sunucu otomatik kurulacaktır. -
Kullanıcısı Olan Sunucuya Kullanıcı Ekleme / Silme: Daha önce kullanıcısız bir sunucuya kullanıcı eklemek mi istiyorsunuz?
deploy_subnodes.shdosyasında o sunucununUSER_BOT_TOKENveUSER_CHAT_IDdeğerlerini doldurun. Tekrar./deploy_subnodes.shyapın, script alt sunucudacheck_all.env’i günceller, artık mesaj atar. Kullanıcıyı kaldırmak isterseniz değerleri boş bırakın, aynı işlemi yapın, sunucu artık sessiz olur.
systemctl status check_all.serviceveyajournalctl -u check_all.service -fkomutlarıyla logları inceleyin.- Telegram mesajı gelmiyorsa token veya chat_id’yi test edin.
curlile Telegram API’ına test mesajı gönderebilirsiniz. Örnek bir komut:curl -X POST https://api.telegram.org/bot<YOUR_BOT_TOKEN>/sendMessage \ -d chat_id=<YOUR_CHAT_ID> \ -d text="Test mesajı gönder"
- Eğer API bağlantısı kurulamazsa, sunucunuzun internet bağlantısını ve Telegram API erişimlerini doğrulayın.
setup_subnode.shile ilgili hatalar için scripti manuel çalıştırarak daha detaylı hata bilgisi alabilirsiniz:bash /root/setup_subnode.sh --debug
- Prometheus veya Grafana entegrasyonlarında sorun yaşıyorsanız, Prometheus yapılandırma dosyasını (
prometheus.yml) kontrol edin ve yeniden başlatmayı deneyin:systemctl restart prometheus
- Node exporter çalışmıyorsa ilgili servis durumunu kontrol edin:
Gerekirse servisi yeniden başlatın:
systemctl status node_exporter
systemctl restart node_exporter