HAProxy yük dengeleyicisini CentOS'a yükleme

Makalenin çevirisi kursun başlamasının arifesinde hazırlanmıştır. "Linux Yöneticisi. Sanallaştırma ve kümeleme"

HAProxy yük dengeleyicisini CentOS'a yükleme

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 yüksek kullanılabilirlik ve proxy işlevselliği de sağlayan en popüler açık kaynaklı yük dengeleme yazılımlarından biridir.

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. Debian 8 и Ubuntu 16.

HAProxy yük dengeleyicisini CentOS'a yükleme

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: HAProxy indirme sayfası.

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 dokümantasyon sayfasındaEğer bu konuda daha fazla bilgi edinmek istiyorsanız.

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 UpCloud kontrol panelinde ve sekmede Özel ağ menüde .

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!

HAProxy yük dengeleyicisini CentOS'a yükleme

İ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. eksiksiz belgeler.

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. kapsamlı belgelerHAProxy'de kullanılabilir ve ardından üretim ortamınız için yük dengelemeyi planlamaya başlayın.

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. UpCloud'da değişken IP adresleri hakkında makale.

Kurs hakkında daha fazla bilgi "Linux Yöneticisi. Sanallaştırma ve kümeleme"***

Kaynak: habr.com

Yorum ekle