RHEL / CentOS'ta 'POUND' Kullanarak Web Sunucuları Yük Dengelemesini Ayarlama


POUND, ITSECURITY Company tarafından geliştirilmiş bir yük dengeleme programıdır. Yükü birkaç sunucu arasında dağıtmak için bir web sunucusu yük dengeleyicisi olarak kullanılabilen hafif bir açık kaynaklı ters proxy aracıdır. POUND'un son kullanıcıya sağladığı çok kullanışlı ve işi doğru yapan birçok avantajı vardır.

  1. Supports virtual hosts.
  2. Configurable.
  3. When a backend server is failed or recovered from a failure, it detects it automatically and bases its load balancing decisions according to that.
  4. It rejects incorrect requests.
  5. No specified browser or webservers.

Bu saldırının nasıl yapılacağına bir göz atalım.

Her şeyden önce, bunun yapılmasını daha iyi anlamak için bir senaryoya ihtiyacınız olacak. Bu yüzden, ağ geçidi sunucusuna gelen istekleri dengelemesi gereken iki web sunucusu ve bir ağ geçidi sunucusu 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: Ağ Geçidi Sunucusuna Pound Yük Dengeleyiciyi Kurun

1. Pound'u kurmanın en kolay yolu önceden derlenmiş RPM paketleri kullanmaktır, RedHat tabanlı dağıtımlar için RPM'leri şu adreste bulabilirsiniz:

  1. http://www.invoca.ch/pub/packages/pound/

Alternatif olarak Pound, aşağıda gösterildiği gibi EPEL deposundan kolayca yüklenebilir.

# 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 açık 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 bir 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 ve webserver02 üzerinde 192.168.1.161 üzerinden 5555 numaralı bağlantı noktasında çalışıyor.

2. Adım: Pound Yük Dengeleyiciyi Yapılandırın

3. Şimdi konfigürasyonları yapma zamanı. Pound'u başarıyla yükledikten sonra, pound'un yapılandırma dosyasını/etc içinde oluşturur, yani pound.cfg .

Web sunucuları arasındaki yükü dengelemek için sunucu ve arka uç ayrıntılarını düzenlemeliyiz./Etc'ye gidin ve düzenlemek için pound.cfg dosyasını açın.

# vi /etc/pound.cfg

Aşağıda önerilen değişiklikleri 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

Benim pound.cfg dosyam böyle görünüyor.

“ListenHTTP” ve “ListenHTTPS” etiketlerinin altına, POUND'u kurduğunuz sunucunun IP adresini girmelisiniz.

Varsayılan olarak bir sunucu, 80 numaralı bağlantı noktası aracılığıyla HTTP isteklerini ve 443 numaralı bağlantı noktası aracılığıyla HTTPS isteklerini işler. "Hizmet" etiketi altında, "BackEnd" adı verilen herhangi bir miktarda alt etiket ekleyebilirsiniz. BackEnd etiketleri, web sunucularının üzerinde çalıştığı IP adreslerini ve bağlantı noktası numaralarını taşır.

Şimdi dosyayı doğru bir ş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 neyin göründüğüne bakın.

İlk istek ilk web sunucusunu01 yüklemeli ve diğer web tarayıcısından gelen ikinci istek ikinci web sunucusunu02 yüklemelidir.

Ayrıca, dengeleyecek iki web sunucunuz varsa ve sunucunun performansından birinin iyi, diğerinin performansının o kadar iyi olmaması gibi bir senaryo düşünün.

Dolayısıyla, araları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. Şuna bir bakalım.

192.168.1.161:5555 sunucusu daha iyi bir sunucudur. O zaman bu sunucuya daha fazla istek akışı koymanız gerekir. 192.168.1.161 sunucusu için yapılandırılan "BackEnd" etiketi altında, End etiketinin önüne "Priority" parametresini ekleyin.

Aşağıdaki örneğe bakın.

"Öncelik" parametresi için kullanabileceğimiz aralık 1-9 arasıdır. Tanımlamazsak varsayılan 5 değeri verilecektir.

Daha sonra yük eşit olarak dengelenecektir. Öncelik numarasını tanımlarsak, POUND daha yüksek öncelik numaralı sunucuyu daha sık yükleyecektir. Yani 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ı Planlama

Acil Durum Etiketi: Bu etiket, tüm arka uç sunucuların ölmesi durumunda bir sunucuyu yüklemek için kullanılır. Bunu pound.cfg'nin son End etiketinin önüne aşağıdaki gibi ekleyebilirsiniz.

“Emergency
           Address 192.168.5.10
           Port        8080
   End”

6. POUND her zaman hangi arka uç sunucularının canlı olduğunu ve hangilerinin olmadığını takip eder. POUND'un kaç saniye sonra arka uç sunucularını kontrol etmesi gerektiğini pound.cfg'ye “Canlı” parametresi ekleyerek tanımlayabiliriz.

Parametreyi 30 saniyeye ayarlamak için "Canlı 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 veya o anda bağlantı kuramayabilir.

POUND, sunucu bir bağlantı kurabilirse, pound.cfg dosyasında tanımladığınız her süreden sonra devre dışı bırakılan arka uç sunucusunu kontrol eder, ardından POUND sunucuyla çalışmaya geri dönebilir.

7. POUND daemon, poundctl komutu ile ele alınacaktır. Bunu sağlayarak pound.cfg dosyasını düzenlememize gerek kalmaz ve tek bir komutla Listner Sunucusu, BackEnd sunucuları ve oturumları vb. Yayınlayabiliriz.

Syntax: poundctl -c /path/to/socket [-L/-l] [-S/-s] [-B/-b] [-N/-n] [-H] [-X]
  1. -c defines path to your socket.
  2. -L / -l defines the listener of your architecture.
  3. -S / -s defines the service.
  4. -B / -b defines the backend servers.

Daha fazla bilgi için poundctl man sayfalarına bakın.

Umarım bu hacklemeyi beğenirsiniz ve bununla ilgili daha fazla seçenek keşfedersiniz. Herhangi bir öneri ve fikir için aşağıya yorum yapmaktan çekinmeyin. Kullanışlı ve en yeni Nasıl Yapılırlar için Tecmint ile bağlantıda kalın.