Makalenin çevirisi kursun başlamasının arifesinde hazırlanmıştır.
Yük dengeleme, kullanıcılara hizmete tek bir noktadan erişim sağlarken web uygulamalarını birden çok ana makinede yatay olarak ölçeklendirmek için yaygın bir çözümdür.
HAProxy, kaynak kullanımını optimize etmeye, verimi en üst düzeye çıkarmaya, yanıt süresini en aza indirmeye ve herhangi bir kaynağın aşırı yüklenmesini önlemeye çalışır. Bu kılavuzda odaklanacağımız CentOS 8 gibi çeşitli Linux dağıtımlarının yanı sıra sistemlere de kurulabilir.
HAProxy özellikle trafiği çok yüksek olan web siteleri için uygundur ve bu nedenle sıklıkla çok sunuculu web hizmeti yapılandırmalarının güvenilirliğini ve performansını artırmak için kullanılır. Bu kılavuz, HAProxy'yi bir CentOS 8 bulut ana bilgisayarında bir yük dengeleyici olarak kurma adımlarını özetlemekte ve daha sonra trafiği web sunucularınıza yönlendirmektedir.
En iyi sonuçların ön koşulu olarak en az iki web sunucunuz ve bir yük dengeleme sunucunuz olmalıdır. Web sunucuları, aralarındaki yük dengelemesinin test edilebilmesi için en azından nginx veya httpd gibi temel bir web hizmetini çalıştırıyor olmalıdır.
HAProxy'yi CentOS 8'e yükleme
HAProxy hızla gelişen bir açık kaynak uygulaması olduğundan, standart CentOS depolarında kullanımınıza sunulan dağıtım en son sürüm olmayabilir. Geçerli sürümü bulmak için aşağıdaki komutu çalıştırın:
sudo yum info haproxy
HAProxy her zaman aralarından seçim yapabileceğiniz üç kararlı sürüm sunar: desteklenen en yeni iki sürüm ve hala kritik güncellemeleri alan üçüncü, daha eski bir sürüm. HAProxy web sitesinde listelenen en son kararlı sürümü her zaman kontrol edebilir ve ardından hangi sürümle çalışmak istediğinize karar verebilirsiniz.
Bu kılavuzda, kılavuzun yazıldığı sırada standart depolarda henüz bulunmayan en son kararlı sürüm 2.0'ı yükleyeceğiz. Orijinal kaynaktan yüklemeniz gerekecek. Ancak önce programı indirip derlemek için gerekli koşulları karşılayıp karşılamadığınızı kontrol edin.
sudo yum install gcc pcre-devel tar make -y
Aşağıdaki komutu kullanarak kaynak kodunu indirin. Daha yeni bir sürümün mevcut olup olmadığını şu adreste kontrol edebilirsiniz:
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz
İndirme işlemi tamamlandıktan sonra aşağıdaki komutu kullanarak dosyaları çıkartın:
tar xzvf ~/haproxy.tar.gz -C ~/
Paketlenmemiş kaynak dizine gidin:
cd ~/haproxy-2.0.7
Daha sonra sisteminize uygun programı derleyin:
make TARGET=linux-glibc
Ve son olarak HAProxy'nin kendisini yükleyin:
sudo make install
HAProxy artık yüklenmiştir ancak çalışması için bazı ek manipülasyonlar gerekmektedir. Aşağıda yazılım ve hizmetlerin kurulumuna devam edelim.
Sunucunuz için HAProxy'yi ayarlama
Şimdi HAProxy girişleri için aşağıdaki dizinleri ve istatistik dosyasını ekleyin:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/stats
HAProxy komutlarını normal bir kullanıcı olarak çalıştırabilmeniz için ikili dosyalar için sembolik bir bağlantı oluşturun:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
Sisteminize hizmet olarak proxy eklemek istiyorsanız örneklerden haproxy.init dosyasını /etc/init.d dizininize kopyalayın. Komut dosyasının çalışabilmesi için dosya izinlerini düzenleyin ve ardından systemd arka plan programını yeniden başlatın:
sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload
Ayrıca sistem başlatıldığında hizmetin otomatik olarak yeniden başlatılmasına da izin vermeniz gerekir:
sudo chkconfig haproxy on
Kolaylık sağlamak amacıyla, HAProxy'yi çalıştırmak için yeni bir kullanıcı eklemeniz de önerilir:
sudo useradd -r haproxy
Bundan sonra aşağıdaki komutu kullanarak kurulu sürüm numarasını tekrar kontrol edebilirsiniz:
haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/
Bizim durumumuzda yukarıdaki örnek çıktıda gösterildiği gibi sürüm 2.0.7 olmalıdır.
Son olarak CentOS 8'deki varsayılan güvenlik duvarı bu proje için oldukça kısıtlayıcıdır. Gerekli hizmetlere izin vermek ve güvenlik duvarını sıfırlamak için aşağıdaki komutları kullanın:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload
Yük Dengeleyici Kurulumu
HAProxy'yi kurmak oldukça basit bir işlemdir. Temel olarak yapmanız gereken tek şey HAProxy'ye hangi bağlantıları dinlemesi gerektiğini ve bunları nereye aktarması gerektiğini söylemektir.
Bu, ayarları tanımlayan /etc/haproxy/haproxy.cfg yapılandırma dosyası oluşturularak yapılır. HAProxy yapılandırma seçeneklerini okuyabilirsiniz
Taşıma katmanında yük dengeleme (katman 4)
Temel kurulumla başlayalım. Örneğin kullanarak yeni bir yapılandırma dosyası oluşturun. vi aşağıdaki komutla:
sudo vi /etc/haproxy/haproxy.cfg
Aşağıdaki bölümleri dosyaya ekleyin. Yer değiştirmek sunucu adı istatistik sayfasında sunucularınızı ne çağırmalı ve özel_ip — web trafiğini yönlendirmek istediğiniz sunucuların özel IP adresleri. Özel IP adreslerini kontrol edebilirsiniz
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server server_name1 private_ip1:80 check
server server_name2 private_ip2:80 check
Bu, 4 numaralı bağlantı noktasını dinleyen harici olarak http_front adlı bir taşıma katmanı yük dengeleyicisini (katman 80) tanımlar ve daha sonra trafiği http_back adlı varsayılan bir arka uca iletir. Ek istatistikler /haproxy?stats istatistik sayfasını belirtilen adrese bağlar.
Çeşitli yük dengeleme algoritmaları.
Arka uç bölümünde sunucuların belirtilmesi, HAProxy'nin bu sunucuları mümkün olduğunda bir kez deneme algoritmasına göre yük dengeleme için kullanmasına olanak tanır.
Dengeleme algoritmaları, her bağlantının arka uçtaki hangi sunucuya aktarıldığını belirlemek için kullanılır. İşte yararlı seçeneklerden bazıları:
- Roundrobin: Her sunucu ağırlığına göre sırayla kullanılır. Bu, sunucuların işlem süresinin eşit olarak dağıtıldığı durumlarda en sorunsuz ve en adil algoritmadır. Bu algoritma dinamiktir ve sunucunun ağırlığının anında ayarlanmasına olanak tanır.
- En azconn: en az bağlantıya sahip sunucu seçilir. Round robin, aynı yüke sahip sunucular arasında gerçekleştirilir. Bu algoritmanın kullanılması LDAP, SQL, TSE vb. gibi uzun oturumlar için önerilir ancak HTTP gibi kısa oturumlar için pek uygun değildir.
- İlk: Bağlantı yuvaları mevcut olan ilk sunucu bağlantıyı alır. Sunucular, en düşük sayısal kimlikten en yükseğe doğru seçilir; bu, varsayılan olarak sunucunun gruptaki konumuna göre belirlenir. Bir sunucu maxconn'a ulaştığında bir sonraki sunucu kullanılır.
- Kaynak: Kaynak IP adresinin karma işlemi yapılır ve hangi sunucunun isteği alacağını belirlemek için çalışan sunucuların toplam ağırlığına bölünür. Bu şekilde, aynı istemci IP adresi her zaman aynı sunucuya gidecek, sunucular ise aynı kalacaktır.
Uygulama düzeyinde yük dengelemeyi ayarlama (katman 7)
Mevcut diğer bir seçenek de, web uygulamanızın bazı bölümleri farklı ana bilgisayarlarda bulunduğunda yararlı olan, uygulama katmanında (katman 7) çalışacak bir yük dengeleyiciyi yapılandırmaktır. Bu, bağlantının iletiminin örneğin URL ile kısıtlanmasıyla gerçekleştirilebilir.
HAProxy yapılandırma dosyasını bir metin düzenleyici kullanarak açın:
sudo vi /etc/haproxy/haproxy.cfg
Ardından ön uç ve arka uç segmentlerini aşağıdaki örneğe göre yapılandırın:
frontend http_front
bind *:80
stats uri /haproxy?stats
acl url_blog path_beg /blog
use_backend blog_back if url_blog
default_backend http_back
backend http_back
balance roundrobin
server server_name1 private_ip1:80 check
server server_name2 private_ip2:80 check
backend blog_back
server server_name3 private_ip3:80 check
Ön uç, /blog ile başlayan yollara sahip tüm bağlantılar için geçerli olan url_blog adlı bir ACL kuralını bildirir. Use_backend, url_blog koşuluyla eşleşen bağlantıların blog_back adlı bir arka uç tarafından sunulması gerektiğini ve diğer tüm isteklerin varsayılan arka uç tarafından işlenmesi gerektiğini belirtir.
Arka uç tarafında, yapılandırma iki sunucu grubu kurar: daha önce olduğu gibi http_back ve example.com/blog bağlantılarını yöneten blog_back adlı yeni bir sunucu.
Ayarları değiştirdikten sonra dosyayı kaydedin ve aşağıdaki komutu kullanarak HAProxy'yi yeniden başlatın:
sudo systemctl restart haproxy
Başlatma sırasında herhangi bir uyarı veya hata mesajı alırsanız, bunlar için yapılandırmanızı kontrol edin ve gerekli tüm dosya ve klasörleri oluşturduğunuzdan emin olun, ardından yeniden başlatmayı deneyin.
Kurulumu test etme
HAProxy yapılandırılıp çalıştırıldıktan sonra, yük dengeleyici sunucusunun genel IP adresini bir tarayıcıda açın ve arka uca doğru şekilde bağlanıp bağlanmadığınızı kontrol edin. Yapılandırmadaki stats uri parametresi belirtilen adreste bir istatistik sayfası oluşturur.
http://load_balancer_public_ip/haproxy?stats
İstatistik sayfasını yüklediğinizde tüm sunucularınız yeşil görünüyorsa kurulum başarılı demektir!
İstatistik sayfası, web barındırıcılarınızı izlemeye yönelik, çalışma/kapanma süresi ve oturum sayısı dahil olmak üzere bazı yararlı bilgiler içerir. Sunucu kırmızı olarak işaretlenmişse sunucunun açık olduğundan ve yük dengeleyici makineden sunucuya ping işlemi uygulayabildiğinizden emin olun.
Yük dengeleyiciniz yanıt vermiyorsa HTTP bağlantılarının bir güvenlik duvarı tarafından engellenmediğinden emin olun. Ayrıca aşağıdaki komutu kullanarak HAProxy'nin çalıştığından emin olun:
sudo systemctl status haproxy
İstatistik sayfasını şifre ile koruma
Ancak istatistik sayfası ön uçta basitçe listeleniyorsa, o zaman herkesin görebilmesine açıktır ve bu iyi bir fikir olmayabilir. Bunun yerine aşağıdaki örneği haproxy.cfg dosyanızın sonuna ekleyerek ona özel bir port numarası atayabilirsiniz. Yer değiştirmek kullanıcı adı и şifre güvenli bir şey için:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:password
Yeni bir dinleyici grubu ekledikten sonra eski istatistik uri bağlantısını ön uç gruptan kaldırın. Bitirdiğinizde dosyayı kaydedin ve HAProxy'yi yeniden başlatın.
sudo systemctl restart haproxy
Daha sonra yük dengeleyiciyi yeni port numarasıyla tekrar açın ve yapılandırma dosyasında belirttiğiniz kullanıcı adı ve şifreyle giriş yapın.
http://load_balancer_public_ip:8181
Tüm sunucularınızın hala yeşil göründüğünden emin olun ve ardından tarayıcınızda herhangi bir bağlantı noktası numarası olmadan yalnızca yük dengeleyici IP'sini açın.
http://load_balancer_public_ip/
Arka uç sunucularınızda en azından çeşitli açılış sayfalarınız varsa, sayfayı her yeniden yüklediğinizde farklı bir ana bilgisayardan yanıt aldığınızı fark edeceksiniz. Yapılandırma bölümünde farklı dengeleme algoritmalarını deneyebilir veya kontrol edebilirsiniz.
Sonuç: HAProxy Yük Dengeleyici
HAProxy yük dengeleyicinizi başarıyla kurduğunuz için tebrikler! Temel bir yük dengeleme kurulumuyla bile web uygulamanızın performansını ve kullanılabilirliğini önemli ölçüde artırabilirsiniz. Bu kılavuz, hızlı kurulum kılavuzunda anlatılanlardan çok daha fazlasını yapabilen HAProxy ile yük dengelemeye yalnızca bir giriş niteliğindedir. kullanarak farklı konfigürasyonları denemenizi öneririz.
Web hizmetinizi boşluk payı ile korumak için birden fazla ana bilgisayar kullandığınızda, yük dengeleyicinin kendisi yine de bir arıza noktası teşkil edebilir. Birden fazla yük dengeleyici arasına kayan bir IP kurarak yüksek kullanılabilirliği daha da artırabilirsiniz. Bu konuda daha fazla bilgiyi sitemizde bulabilirsiniz.
Kurs hakkında daha fazla bilgi
Kaynak: habr.com