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_TOKEN
veUSER_CHAT_ID
ayarlı, 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.py
scripti sayesinde bu kontroller otomatik yapılır ve Telegram’a mesaj atılır.setup_subnode.sh
ile her alt sunucu otomatik kurulur.deploy_subnodes.sh
ile 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.env
dosyasıyla konfigüre eder. -
deploy_subnodes.sh:
Operatör sunucusunda çalışır.subnodes.env
iç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.env
dosyası 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.env
içine alt sunucuların IP adreslerini yazın.deploy_subnodes.sh
içinde her alt sunucu içinUSER_BOT_TOKEN
,USER_CHAT_ID
,NODE_NAME
değ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_TOKEN
veOPERATOR_CHAT_ID
sabit kalabilir.
-
Kurulumu Başlatın:
./deploy_subnodes.sh
Bu komut:
setup_subnode.sh
’yi GitHub’dan indirir.- Her alt sunucuya
setup_subnode.sh
’yiscp
ile kopyalar. ssh
ile alt sunucuya bağlanıpsetup_subnode.sh
parametrelerle ç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_TOKEN
veUSER_CHAT_ID
boş ise mesaj atmaz.
-
Yeni Sunucu Ekleme:
subnodes.env
dosyasına yeni sunucu IP’sini ekleyin,deploy_subnodes.sh
içinde o sunucuya özelUSER_BOT_TOKEN
,USER_CHAT_ID
,NODE_NAME
değ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.sh
dosyasında o sunucununUSER_BOT_TOKEN
veUSER_CHAT_ID
değerlerini doldurun. Tekrar./deploy_subnodes.sh
yapı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.service
veyajournalctl -u check_all.service -f
komutlarıyla logları inceleyin.- Telegram mesajı gelmiyorsa token veya chat_id’yi test edin.
curl
ile 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.sh
ile 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