Caddy - Dosya ve Tekil Vekil Sunucusu (Sanallaştırmalı Çözüm)
Caddy Go dilinde yazılmış çok kullanışlı bir sunucu. Lokal ve Uzak dosya sunucusu hizmeti verebildiği gibi reverse proxy (ters vekil sunucu) hizmeti de verebiliyor.Hem de tüm bunları otomatik https üzerinden ve düzenli güncelleme garantisi ile.
Caddy yönetimini Caddyfile dediğimiz bir dosya üzerinden sağlıyoruz.
Dosyaya çeşitli konfigurasyonlar ekleyerek sunucunun davranışını düzenliyoruz. Herşey oldukça kolay.
Ön şart olarak sunucumuzun çalışması için isteklerin DNS kayıtları üzerinden yönlendirilmesi gerekiyor.
Biz testimizi lokalde yapacağımız için windows ta host file ımızı kullanıp bir domain yönlendirmesi ile requesti localimizde tutabiliriz.
Bu requesti, üreteceğimiz iki adet docker container ile ters vekil sunucu yük dağıtmasini yapalım.
Şimdi hızlıca notepad ı administrator modunda açıp abc.com u lokalimize yönlendirelim.Sonra muhakkak silmeyi unutmayın :)
Not: Burada niyetimiz ilk https testinde sertifika oluşumunun sürecini görebilmek. Dilerseniz hiç karıştırmadan localhost çağrısı yapıp bu kismi atlayabilirsiniz.
Şimdi ise githubdan projemizi indirebiliriz.
https://github.com/Gmotes/CaddyTest
Yapılan işlerimizi kısaca özetleyelim;
Node projesi için yapılanlar
1-) npx express-generator ile projemizi oluşturduk.
2-) Environment yönetimi için "dotenv" ı package.json a ekledik. App.js e de konfigurasyon olarak ekleyelim.
3-) .env , .env.server1 ve .env.server2 dosyalarımızı ekleyelim.
4-) app.js dosyamıza
Caddy in kullanacağı healthcheck servisi ve load balance testini yapacağımız getMessage servisini ekliyoruz.
Node.js projesi için bu işlemler yeterli.
Sanallaştırma ve Caddyfile işlemleri
Caddyfile;
Bu kısımda dikkat edilmesi gereken eğer domain i özellikle http olarak belirtmez iseniz Caddy in https üzerinde reverse proxy yapacağı. Eğer host dosyasını değiştirmiş iseniz başına http eklemeyerek
https://caddyserver.com/docs/automatic-https otomatik https loglarını takip edebilirsiniz. DNS tanımınız yanlış olduğu için sertifika oluşumu hata verecektir.
http://abc.com {
reverse_proxy server1:4000 server2:5000 {
lb_policy random_choose 2
health_path /healthcheck
health_interval 10s
}
}
İki build alıyoruz. Her seferinde server1 ve server2 için kapalı alanları açıp kapatıyoruz.
docker build -t server1 .
docker build -t server2 .
Son olarak ise Docker-compose.yml
Bu dosyayı docker-compose up -d komutuyla çalıştırıyoruz. Compose içeriğindeki servisleri gözlemleyebiliriz.

Yorumlar
Yorum Gönder