RHEL/CentOS'ta 'POUND' Kullanarak Web Sunucularını Yük Dengelemeyi Kurma
POUND, ITSECURITY Şirketi tarafından geliştirilen bir yük dengeleme programıdır. Yükü birkaç sunucu arasında dağıtmak için web sunucusu yük dengeleyici olarak kullanılabilen, hafif, açık kaynaklı bir ters proxy aracıdır. POUND'un son kullanıcıya sağladığı çok kullanışlı ve işini doğru yapan birçok avantaj vardır.
- Sanal ana bilgisayarları destekler.
- Yapılandırılabilir.
- Bir arka uç sunucusu arızalandığında veya bir arızadan kurtarıldığında, bunu otomatik olarak algılar ve yük dengeleme kararlarını buna göre alır.
- Yanlış istekleri reddeder.
- Belirtilen tarayıcı veya web sunucusu yok.
Bu hack'in nasıl yapılabileceğine bir göz atalım.
Öncelikle bunu nasıl yapacağınızı daha iyi anlamak için bir senaryoya ihtiyacınız olacak. Bu nedenle, ağ geçidi sunucusundan web sunucularına gelen istekleri dengelemesi gereken iki web sunucusu ve bir ağ geçidi sunucusunun olduğu bir senaryo kullanacağım.
Pound Gateway Server : 172.16.1.222
Web Server 01 : 172.16.1.204
Web Server 02 : 192.168.1.161
Adım 1: Pound Load Balancer'ı Ağ Geçidi Sunucusuna Kurun
1. Pound'u kurmanın en kolay yolu, önceden derlenmiş RPM paketlerini kullanmaktır; RedHat tabanlı dağıtımlar için RPM'leri şu adreste bulabilirsiniz:
- http://www.invoca.ch/pub/packages/pound/
Alternatif olarak Pound, aşağıda gösterildiği gibi EPEL deposundan kolayca kurulabilir.
yum install epel-release
yum install Pound
Pound kurulduktan sonra bu komutu vererek kurulup kurulmadığını doğrulayabilirsiniz.
rpm –qa |grep Pound
2. İkinci olarak, yükü dengelemek ve pound yapılandırmasının düzgün çalıştığını test etmek için net tanımlayıcılara sahip olduğunuzdan emin olmak için iki web sunucusuna ihtiyacınız var.
Burada 172.16.1.204 ve 192.168.1.161 IP adreslerini taşıyan iki sunucum var.
Kullanım kolaylığı için her iki sunucuda da anlık web sunucusu oluşturmak için python SimpleHTTPServer'ı oluşturdum. Python SimpleHTTPServer hakkında bilgi edinin
Senaryomda, webserver01'im 172.16.1.204 üzerinde 8888 bağlantı noktası üzerinden çalışıyor ve webserver02'm üzerinde çalışıyor >192.168.1.161, 5555 bağlantı noktası üzerinden.
Adım 2: Pound Yük Dengeleyiciyi Yapılandırın
3. Şimdi yapılandırmaları yapma zamanı geldi. Pound'u başarıyla yükledikten sonra, pound'un yapılandırma dosyasını /etc dosyasında, yani pound.cfg
oluşturur.
Web sunucuları arasındaki yükü dengelemek için sunucu ve arka uç ayrıntılarını düzenlememiz gerekiyor. /etc adresine gidin ve düzenlemek için pound.cfg
dosyasını açın.
vi /etc/pound.cfg
Değişiklikleri aşağıda önerildiği şekilde yapın.
ListenHTTP
Address 172.16.1.222
Port 80
End
ListenHTTPS
Address 172.16.1.222
Port 443
Cert "/etc/pki/tls/certs/pound.pem"
End
Service
BackEnd
Address 172.16.1.204
Port 8888
End
BackEnd
Address 192.168.1.161
Port 5555
End
End
pound.cfg dosyam böyle görünüyor.
“ListenHTTP” ve “ListenHTTPS” etiketleri altına POUND kurduğunuz sunucunun IP adresini girmeniz gerekmektedir.
Varsayılan olarak bir sunucu, HTTP isteklerini 80 bağlantı noktası üzerinden ve HTTPS isteklerini 443 bağlantı noktası üzerinden işler. "Hizmet " etiketinin altına "BackEnd" adı verilen istediğiniz miktarda alt etiket ekleyebilirsiniz. BackEnd etiketleri, web sunucularının üzerinde çalıştığı IP adreslerini ve port numaralarını taşır.
Şimdi dosyayı doğru şekilde düzenledikten sonra kaydedin ve aşağıdaki komutlardan birini vererek POUND hizmetini yeniden başlatın.
/etc/init.d/pound restart
OR
service pound restart
OR
systemctl restart pound.service
4. Şimdi kontrol etme zamanı. Yapılandırmalarımızın düzgün çalışıp çalışmadığını kontrol etmek için iki web tarayıcısı açın. Adres çubuğuna POUND ağ geçidinizin IP adresini yazın ve ne göründüğüne bakın.
İlk istek ilk web sunucusu01'i yüklemeli ve diğer web tarayıcısından gelen ikinci istek ikinci web sunucusu02'yi yüklemelidir.
Ayrıca, yükü dengelemek için iki web sunucunuz varsa ve sunuculardan birinin performansı iyi, diğerinin performansı o kadar iyi değilse gibi bir senaryo düşünün.
Dolayısıyla bunlar arasında yük dengeleme yaparken hangi sunucuya daha fazla ağırlık vermeniz gerektiğini düşünmeniz gerekecektir. Açıkçası iyi performans özelliklerine sahip sunucu için.
Yükü bu şekilde dengelemek için pound.cfg
dosyasının içine tek bir parametre eklemeniz yeterlidir. Gelin ona bir göz atalım.
192.168.1.161:5555 sunucusunun daha iyi bir sunucu olduğunu düşünün. O zaman o sunucuya daha fazla istek akışı sağlamanız gerekir. 192.168.1.161 sunucusu için yapılandırılmış olan "BackEnd " etiketinin altında, Bitiş etiketinin önüne "Priority " parametresini ekleyin.
Aşağıdaki örneğe bakın.
“Öncelik” parametresi için kullanabileceğimiz aralık 1-9 arasındadır. Tanımlamadığımız takdirde varsayılan olarak 5 değeri atanacaktır.
Daha sonra yük eşit olarak dengelenecektir. Öncelik numarasını tanımlarsak POUND, öncelik numarası daha yüksek olan sunucuyu daha sık yükleyecektir. Dolayısıyla bu durumda 192.168.1.161:5555, 172.16.1.204:8888 sunucusundan daha sık yüklenecektir.
Adım 3: Acil Durum Arızalarının Planlanması
Acil Durum Etiketi: Bu etiket, tüm arka uç sunucuların ölmesi durumunda sunucuyu yüklemek için kullanılır. Aşağıdaki gibi pound.cfg'nin son Bitiş etiketinin öncesine ekleyebilirsiniz.
“Emergency
Address 192.168.5.10
Port 8080
End”
6. POUND her zaman hangi arka uç sunucularının aktif olduğunu ve hangilerinin olmadığını takip eder. pound.cfg dosyasına “Alive” parametresini ekleyerek POUND'un arka uç sunucuları kaç saniye sonra kontrol etmesi gerektiğini tanımlayabiliriz.
30 saniyeye ayarlamak için parametreyi “Alive 30” olarak kullanabilirsiniz. Pound, yanıt vermeyen arka uç sunucularını geçici olarak devre dışı bırakacaktır. Yanıt vermiyor dediğimizde sunucu ölmüş olabilir ya da o anda bağlantı kuramıyor olabilir.
POUND, pound.cfg dosyasında tanımladığınız her zaman aralığından sonra devre dışı bırakılan arka uç sunucusunu kontrol edecek ve sunucunun bağlantı kurabilmesi durumunda POUND sunucuyla çalışmaya geri dönebilecektir.
7. POUND arka plan programı poundctl komutu tarafından işlenecektir. Bunu yaparak pound.cfg dosyasını düzenlememize gerek kalmaz ve Listner Server, BackEnd sunucuları ve oturumlarını vb. aracılığıyla düzenleyebiliriz. tek bir komut.
Syntax: poundctl -c /path/to/socket [-L/-l] [-S/-s] [-B/-b] [-N/-n] [-H] [-X]
- -c soketinizin yolunu tanımlar.
- -L/-l mimarinizin dinleyicisini tanımlar.
- -S/-s hizmeti tanımlar.
- -B/-b arka uç sunucularını tanımlar.
Daha fazla bilgi için poundctl kılavuz sayfalarına bakın.
Umarım bu tüyodan hoşlanırsınız ve bununla ilgili daha fazla seçenek keşfedersiniz. Her türlü öneri ve fikirleriniz için aşağıya yorum yapmaktan çekinmeyin. Kullanışlı ve en yeni Nasıl Yapılır'lar için Tecmint ile bağlantıda kalın.
Ayrıca Okuyun: Web Sunucuları için XR Crossroads Load Balancer'ı Yükleme