Merhabalar, Bu makalemde; Ubuntu 22.04 sürümünde HAProxy yük dengeleyicinizi (load-balance) kurulumunu sizlere adım adım anlatıyor olacağım.
Ubuntu’yu en yeni kullanıcılar için bile erişilebilir kılan özelliklerden biri de paket yöneticisi apt, yani Advanced Packaging Tool’dır. apt, genellikle dosya yolları, kütüphaneler, derleyiciler ve sürüm çakışmaları gibi ince ayrıntılar hakkında endişelenmenize gerek kalmadan paketleri ve bağımlılıkları kolayca yüklemenizi ve kaldırmanızı sağlar.
O kadar kolaydır ki, HAProxy’yi yepyeni bir Ubuntu sunucusuna kurmak tek satırlık bir apt komutu kadar basit olacaktır.
sudo apt install haproxy
Ama ben size basit ve tek bir komut ile kurmak yerine adım adım bütün detayları anlatıyor olacağım. Evet bu basit komut sizi HAProxy ile hızlı ve kolay bir şekilde ayarlayacaktır, ancak yeni yüklediğiniz sürümün muhtemelen mevcut sürümün bir veya iki küçük sürüm numarası, bazen de bir ana sürüm numarası kadar gerisinde olduğunu göreceksiniz.
apt ile çıkan sürüm kararlı ve güvenli olacaktır, ancak FIX protokol desteği, HTTP/2 WebSockets veya Dinamik SSL Sertifika Depolama gibi bazı yeni özelliklerden yoksun olacaktır.
Kaynak kodunu kendiniz derleyebilirsiniz, ancak bu çok fazla ekstra adım gerektirebilir. Resmi kaynaklar tarafından zaten sağlanan HAProxy durumunda, PPA yüklendikten sonra apt bu özel paketi varsayılanın üzerinde kullanacaktır.
PPA kullanarak en son HAProxy’yi yüklenmesi
HAProxy veya High Availability Proxy, çok fazla trafiği idare edebilen iyi bilinen açık kaynaklı bir TCP/HTTP yük dengeleyici ve proxy çözümüdür. HAProxy çok düşük miktarda bellek tüketir ve genellikle çok sayıda eşzamanlı bağlantıyı idare etmek için iş yükünü birden fazla sunucuya dağıtarak sunucuların performansını artırmak için kullanılır. Yoğun web siteleriniz varsa, HAProxy’yi web sunucularınıza ters proxy olarak yükleyebilir ve yapılandırabilirsiniz.
Yük dengeleme, kullanıcılara hizmete tek bir noktadan erişim sağlarken web uygulamalarını yatay olarak birden fazla sunucuya dağıtmak için yaygın bir çözümdür.
HAProxy, yüksek kullanılabilirlik ve proxy işlevselliği de sunan en popüler açık kaynaklı yük dengeleme yazılımlarından biridir.
Bu makalemde sizlere dünyanın en popüler işletim sistemlerinden biri olan Ubuntu’nun en güncel sürümlerinden olan 22.04 üzerinde HAProxy’nin nasıl kurulacağını ve yapılandırılacağını göstereceğiz.
Ubuntu 22.04 Server sürümünü fiziksel yada sanal bir sistem üzerine yükleyiniz. Ben bu makaleyi hazırlarken dizüstü bilgisayarımda çalışan bir sanal makine kullanıyorum. Burada yaptığımız her şey bare metal veya herhangi bir bulut sağlayıcısı üzerinde eşit derecede iyi çalışmalıdır.
Sunucunuzda uygun Ubuntu sürümünün yüklü olup olmadığını kontrol etmek için bu komutu çalıştırınız.
lsb_release -a
Bu çıktıyı görmelisiniz.
root@haproxy:/home/sysadmin# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.2 LTS
Release: 22.04
Codename: jammy
root@haproxy:/home/sysadmin#
Şimdi, kurulu tüm paketleri mevcut en son sürüme güncellemek için aşağıdaki komutu çalıştırınız.
sudo apt update && sudo apt upgrade
root@haproxy:/home/sysadmin# sudo apt update && sudo apt upgrade
Hit:1 http://tr.archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://tr.archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Get:3 http://tr.archive.ubuntu.com/ubuntu jammy-backports InRelease [108 kB]
Get:4 http://tr.archive.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Fetched 337 kB in 2s (171 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
root@haproxy:/home/sysadmin#
İşletim sisteminiz için yükleme talimatlarını seçebileceğiniz https://haproxy.debian.net adresine gidiniz. Bu yazının yazıldığı sırada en son sürüm 2.7 idi. Ubuntu 22.04 ve HAProxy 2.7-stable (LTS) seçeneklerini seçin. Bu sizi çalıştırmanız gereken komutları listeleyen bir sayfaya götürecektir.
apt-get install --no-install-recommends software-properties-common
add-apt-repository ppa:vbernat/haproxy-2.7
İlk komut, yüklediğiniz PPA’ları yönetmenize yardımcı olan software-properties-common paketini yükler. Muhtemelen bu paket zaten yüklüdür, ancak tekrar çalıştırmak kullanılabilir olmasını sağlar. İkinci komut PPA’yı yazılım kaynakları listesine ekler.
HAProxy varsayılan Ubuntu Server 22.04 deposunda mevcuttur. Ancak, mevcut paket en son kararlı sürüm olmayabilir. Ubuntu Server 22.04 deposundan yüklemek istiyorsak HAProxy sürümünü kontrol edelim.
root@haproxy:/home/sysadmin#
root@haproxy:/home/sysadmin# apt-get install --no-install-recommends software-properties-common
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
software-properties-common is already the newest version (0.99.22.6).
software-properties-common set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
root@haproxy:/home/sysadmin#
root@haproxy:/home/sysadmin# add-apt-repository ppa:vbernat/haproxy-2.7
PPA publishes dbgsym, you may need to include 'main/debug' component
Repository: 'deb https://ppa.launchpadcontent.net/vbernat/haproxy-2.7/ubuntu/ jammy main'
Description:
HAProxy is a free, very fast and reliable solution offering high availability, load balancing, and proxying for TCP and HTTP-based applications. It is particularly suited for web sites crawling under very high loads while needing persistence or Layer7 processing. Supporting tens of thousands of connections is clearly realistic with todays hardware. Its mode of operation makes its integration into existing architectures very easy and riskless, while still offering the possibility not to expose fragile web servers to the Net.
This PPA contains packages for HAProxy 2.7.
More info: https://launchpad.net/~vbernat/+archive/ubuntu/haproxy-2.7
Adding repository.
Press [ENTER] to continue or Ctrl-c to cancel.
Adding deb entry to /etc/apt/sources.list.d/vbernat-ubuntu-haproxy-2_7-jammy.list
Adding disabled deb-src entry to /etc/apt/sources.list.d/vbernat-ubuntu-haproxy-2_7-jammy.list
Adding key to /etc/apt/trusted.gpg.d/vbernat-ubuntu-haproxy-2_7.gpg with fingerprint CFFB779AADC995E4F350A060505D97A41C61B9CD
Hit:1 http://tr.archive.ubuntu.com/ubuntu jammy InRelease
Get:2 https://ppa.launchpadcontent.net/vbernat/haproxy-2.7/ubuntu jammy InRelease [23.8 kB]
Get:3 http://tr.archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Get:4 http://tr.archive.ubuntu.com/ubuntu jammy-backports InRelease [108 kB]
Get:5 https://ppa.launchpadcontent.net/vbernat/haproxy-2.7/ubuntu jammy/main amd64 Packages [1,028 B]
Get:6 http://tr.archive.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Get:7 https://ppa.launchpadcontent.net/vbernat/haproxy-2.7/ubuntu jammy/main Translation-en [704 B]
Fetched 362 kB in 2s (172 kB/s)
Reading package lists... Done
root@haproxy:/home/sysadmin#
sudo apt show haproxy
Bu işlem için aşağıdaki komutu kullanabilirsiniz.
root@haproxy:/home/sysadmin# sudo apt show haproxy
Package: haproxy
Version: 2.4.22-0ubuntu0.22.04.1
Priority: optional
Section: net
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian HAProxy Maintainers <team+haproxy@tracker.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 3,690 kB
Pre-Depends: dpkg (>= 1.17.14), init-system-helpers (>= 1.54~)
Depends: libc6 (>= 2.34), libcrypt1 (>= 1:4.1.0), liblua5.3-0, libpcre2-8-0 (>= 10.22), libssl3 (>= 3.0.0~~alpha1), libsystemd0, adduser, lsb-base (>= 3.0-6)
Suggests: vim-haproxy, haproxy-doc
Homepage: http://www.haproxy.org/
Download-Size: 1,644 kB
APT-Sources: http://tr.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
Description: fast and reliable load balancing reverse proxy
HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high
availability environments. It features connection persistence through HTTP
cookies, load balancing, header addition, modification, deletion both ways. It
has request blocking capabilities and provides interface to display server
status.
N: There are 2 additional records. Please use the '-a' switch to see them.
root@haproxy:/home/sysadmin#
En son kararlı sürümü http://www.haproxy.org/#down adresinden kontrol edebilirsiniz. Bu yazımızda HAPproxy 2.7 kurulumunu yapacağız. Artık en yeni HAProxy’yi kurmaya hazırız.
apt-get install haproxy=2.7.\*
root@haproxy:/home/sysadmin# apt-get install haproxy=2.7.\*
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Selected version '2.7.8-1ppa1~jammy' (HAProxy 2.7:22.04/jammy [amd64]) for 'haproxy'
The following additional packages will be installed:
liblua5.3-0 libopentracing-c-wrapper0 libopentracing1
Suggested packages:
vim-haproxy haproxy-doc
The following NEW packages will be installed:
haproxy liblua5.3-0 libopentracing-c-wrapper0 libopentracing1
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,064 kB of archives.
After this operation, 4,924 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://tr.archive.ubuntu.com/ubuntu jammy/main amd64 liblua5.3-0 amd64 5.3.6-1build1 [140 kB]
Get:2 https://ppa.launchpadcontent.net/vbernat/haproxy-2.7/ubuntu jammy/main amd64 haproxy amd64 2.7.8-1ppa1~jammy [1,844 kB]
Get:3 http://tr.archive.ubuntu.com/ubuntu jammy/universe amd64 libopentracing1 amd64 1.6.0-2ubuntu1 [52.3 kB]
Get:4 http://tr.archive.ubuntu.com/ubuntu jammy/universe amd64 libopentracing-c-wrapper0 amd64 1.1.3-3 [28.3 kB]
Fetched 2,064 kB in 1s (1,818 kB/s)
Selecting previously unselected package liblua5.3-0:amd64.
(Reading database ... 73999 files and directories currently installed.)
Preparing to unpack .../liblua5.3-0_5.3.6-1build1_amd64.deb ...
Unpacking liblua5.3-0:amd64 (5.3.6-1build1) ...
Selecting previously unselected package libopentracing1:amd64.
Preparing to unpack .../libopentracing1_1.6.0-2ubuntu1_amd64.deb ...
Unpacking libopentracing1:amd64 (1.6.0-2ubuntu1) ...
Selecting previously unselected package libopentracing-c-wrapper0:amd64.
Preparing to unpack .../libopentracing-c-wrapper0_1.1.3-3_amd64.deb ...
Unpacking libopentracing-c-wrapper0:amd64 (1.1.3-3) ...
Selecting previously unselected package haproxy.
Preparing to unpack .../haproxy_2.7.8-1ppa1~jammy_amd64.deb ...
Unpacking haproxy (2.7.8-1ppa1~jammy) ...
Setting up liblua5.3-0:amd64 (5.3.6-1build1) ...
Setting up libopentracing1:amd64 (1.6.0-2ubuntu1) ...
Setting up libopentracing-c-wrapper0:amd64 (1.1.3-3) ...
Setting up haproxy (2.7.8-1ppa1~jammy) ...
Created symlink /etc/systemd/system/multi-user.target.wants/haproxy.service → /lib/systemd/system/haproxy.service.
Processing triggers for libc-bin (2.35-0ubuntu3.1) ...
Processing triggers for rsyslog (8.2112.0-2ubuntu2.2) ...
Processing triggers for man-db (2.10.2-1) ...
Scanning processes...
Scanning linux images...
Running kernel seems to be up-to-date.
No services need to be restarted.
No containers need to be restarted.
No user sessions are running outdated binaries.
No VM guests are running outdated hypervisor (qemu) binaries on this host.
root@haproxy:/home/sysadmin#
Kurulum işleminin ardından aşağıdaki komut ile birlikte versiyon kontrolü sağlayabilirsiniz.
haproxy -v
root@haproxy:/home/sysadmin# haproxy -v
HAProxy version 2.7.8-1ppa1~jammy 2023/05/06 - https://haproxy.org/
Status: stable branch - will stop receiving fixes around Q1 2024.
Known bugs: http://www.haproxy.org/bugs/bugs-2.7.8.html
Running on: Linux 5.15.0-71-generic #78-Ubuntu SMP Tue Apr 18 09:00:29 UTC 2023 x86_64
root@haproxy:/home/sysadmin#
En son yazılım paketlerine ve güvenlik düzeltmelerine sahip olduğunuzdan emin olmak için bir güncelleme ve yükseltme yapınız.
sudo apt update -y
sudo apt upgrade -y
HAProxy uygulamasının kurulumu tamamlandıktan sonra şimdi sunucu işletim sistemi yeniden başlatıldıktan sonra HAProxy servisinin otomatik olarak yeniden başlaması için aşağıdaki komutu çalıştırıyoruz.
systemctl enable haproxy
root@haproxy:/home/sysadmin# systemctl enable haproxy
Synchronizing state of haproxy.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable haproxy
root@haproxy:/home/sysadmin#
HAProxy yapılandırmasına geçmeden önce en son işlem olarak HAProxy servisinin durumunun sorgulamamız olacaktır. HAProxy Servisinin durumunu kontrol etmek için aşağıdaki komut çalıştırılır.
systemctl status haproxy
root@haproxy:/home/sysadmin# systemctl status haproxy
● haproxy.service - HAProxy Load Balancer
Loaded: loaded (/lib/systemd/system/haproxy.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2023-05-06 23:04:33 UTC; 11min ago
Docs: man:haproxy(1)
file:/usr/share/doc/haproxy/configuration.txt.gz
Main PID: 2314 (haproxy)
Status: "Ready."
Tasks: 3 (limit: 4530)
Memory: 40.6M
CPU: 293ms
CGroup: /system.slice/haproxy.service
├─2314 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -S /run/haproxy-master.sock
└─2317 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -S /run/haproxy-master.sock
May 06 23:04:33 haproxy systemd[1]: Starting HAProxy Load Balancer...
May 06 23:04:33 haproxy haproxy[2314]: [NOTICE] (2314) : New worker (2317) forked
May 06 23:04:33 haproxy haproxy[2314]: [NOTICE] (2314) : Loading success.
May 06 23:04:33 haproxy systemd[1]: Started HAProxy Load Balancer.
root@haproxy:/home/sysadmin#
HAProxy varsayılan olarak bir port numarasını dinleyecek şekilde yapılandırılmamıştır. Bir sonraki adımda, HAProxy servisinin yapılandırmasına değineceğiz.