Haproxy nedir? Nasıl Kurulur?

HAProxy (High Availability Proxy) bir açık kaynaklı yük dengeleyici (load balancer) ve yüksek kullanılabilirlik (high availability) çözümüdür. Sunucu yükünü birden fazla sunucu arasında dağıtmak ve bu sayede daha yüksek bir performans ve yüksek kullanılabilirlik sağlamak için kullanılır. Ayrıca, TCP veya HTTP gibi protokoller arasında trafik yönlendirme işlevi de sunar.

HAProxy, oldukça esnek ve özelleştirilebilir bir yapıya sahiptir ve hem TCP hem de HTTP protokolleri üzerinde çalışabilir. Aynı zamanda, SSL/TLS trafiği için de destek sunar ve kullanıcıların çeşitli filtreleme seçeneklerini kullanarak istenmeyen trafikleri engellemesine izin verir.

Özellikle web uygulamaları için ideal olan HAProxy, hızlı ve verimli bir şekilde yük dengelemesi yaparak web sunucusu performansını arttırır. Ayrıca, birden fazla sunucunun kullanılması sayesinde yüksek kullanılabilirlik sağlanarak, olası arıza durumlarında kesintisiz hizmet sunulmasını sağlar.

Haproxy nasıl kurulur?

apt-get update -y
sudo apt-get install haproxy

Haproxy yüklendikten sonrasında servisi başlatıp enable ediyoruz.

systemctl start haproxy
systemctl enable haproxy

Config dosyasını değiştirerek devam ediyoruz.

vi /etc/haproxy/haproxy.cfg

global
    maxconn 100

defaults
    log global
    mode tcp
    option tcp-check
    retries 2
    timeout client 30m
    timeout connect 4s
    timeout server 30m
    timeout check 5s

listen stats
    mode http
    bind *:7000
    stats enable
    stats uri /

listen postgres
    bind *:5000
    option httpchk
    http-check expect status 200
    default-server inter 3s fall 3 rise 2 on-marked-down shutdown-sessions
    server member_1 192.168.242.147:5432 maxconn 100 check port 8008
    server member_2 192.168.242.148:5432 maxconn 100 check port 8008
    server member_3 192.168.242.149:5432 maxconn 100 check port 8008

Conf dosyasının içerisindekilerini değiştirerek devam ediyoruz.

 

GLOBAL:

global bölümü, HAProxy’nin tüm ayarlarının ve yapılandırmasının başlangıç noktasıdır. Bu bölümde, genel HAProxy yapılandırması için kullanılan global seçenekler, parametreler ve varsayılan değerler belirtilir. maxconn parametresi, HAProxy’nin izin verilen maksimum eşzamanlı bağlantı sayısını belirtir. Bu değer, tüm proxy’ler için geçerlidir. Bu parametre, sunucunun donanım özellikleri ve yüküne bağlı olarak uygun bir şekilde ayarlanmalıdır.

DEFAULTS:

defaults bölümü, frontend veya backend bölümleri arasında yer alan ve varsayılan ayarları tanımlayan bölümdür. Bu bölümde belirtilen ayarlar, frontend veya backend bölümlerinde belirtilmeyen herhangi bir parametre için geçerli olacaktır. Bu bölümde belirtilen ayarlar, örneğin zaman aşımı süresi, yeniden deneme sayısı, denetim seçenekleri vb. gibi genel parametreleri içerir. Bu şekilde, defaults bölümü, yapılandırma dosyasındaki tekrarlanan parametreleri azaltarak yapılandırmayı daha okunaklı hale getirir ve genel ayarları tek bir yerde toplar.

log global: Tüm bağlantı kayıtları için kullanılacak olan genel log ayarını belirler.

mode tcp: TCP protokolünü kullanacağını belirler.

option tcp-check: TCP kontrolü yapılmasını sağlar.

retries 2: Bir sunucu erişilemezse, yineleme sayısını belirler.

timeout client 30m: Müşteri bağlantı zaman aşımı ayarını belirler.

timeout connect 4s: Sunucuya bağlanma zaman aşımı ayarını belirler.

timeout server 30m: Sunucu yanıt zaman aşımı ayarını belirler.

timeout check 5s: Kontrol sürecinin zaman aşımı ayarını belirler.

LISTEN STATS:

listen stats: HAProxy’de dinleme arayüzü (listener) oluşturur. Bu dinleme arayüzü HAProxy’ye gelen trafiği dinler ve ilgili yönlendirmeleri yapar.

mode http: Bu, dinleme arayüzünün HTTP modunda çalışacağını belirtir. HAProxy, HTTP trafiğini yönlendirmek için kullanılabildiği gibi, TCP ve diğer protokollerle de çalışabilir.

bind *:7000: Bu, HAProxy’nin 7000 numaralı tüm IP adreslerinde dinleme yapacağını belirtir.

stats enable: Bu, HAProxy’nin istatistik sayfalarını etkinleştirdiğini belirtir. Bu, HAProxy’nin istatistik sayfalarına erişim sağlamak için gereklidir.

stats uri /: Bu, HAProxy’nin istatistik sayfalarına erişmek için kullanılacak URI’yi belirtir. Bu örnekte, / URI’si kullanılır. Bu, örneğin http://localhost:7000/ adresine gidildiğinde istatistik sayfalarına erişebileceğiniz anlamına gelir.

Bu konfigürasyon bloğu, PostgreSQL sunucularının bir yük dengeleyici (load balancer) önünde yer aldığı durumları tanımlamak için kullanılır. Aşağıdaki parametreler içerir:

LISTEN POSTGRES:

listen postgres: Bu bölümün adı, PostgreSQL sunucularını dinlemek için kullanılan ağ arabiriminin IP adresi ve bağlantı noktası belirtilir.

bind *:5000: Bu satırda yük dengeleyicinin PostgreSQL sunucularını dinlemek için hangi IP adresi ve bağlantı noktasını kullanacağı belirtilir.

option httpchk: Bu satırda HTTP kontrol etme seçeneği etkinleştirilir.

http-check expect status 200: HTTP kontrolü sırasında beklenen HTTP yanıt durumu belirtilir.

default-server inter 3s fall 3 rise 2 on-marked-down shutdown-sessions: Bu satırda her sunucunun yük dengeleyici tarafından düzenli olarak kontrol edileceği belirtilir. inter seçeneği, sunucular arasındaki kontrol sıklığını belirler. fall seçeneği, sunucunun başarısız olduğu sayıyı belirler. rise seçeneği, sunucunun başarılı olduğu sayıyı belirler. on-marked-down seçeneği, sunucunun tanımlı olarak işaretlenmesi durumunda ne olacağını belirler. shutdown-sessions seçeneği, belirli bir sunucu etiketlendiğinde, o sunucuya yönlendirilen mevcut bağlantıların kesilmesini sağlar.

server member_1 192.168.242.147:5432 maxconn 100 check port 8008: Bu satırda member_1 adlı bir PostgreSQL sunucusunun belirtilen IP adresi ve bağlantı noktasına bağlanacağı belirtilir. maxconn seçeneği, sunucuya yönlendirilen eşzamanlı bağlantı sayısını belirler. check seçeneği, yük dengeleyicinin düzenli olarak sunucuyu kontrol etmesini sağlar.

server member_2 192.168.242.148:5432 maxconn 100 check port 8008: Benzer şekilde, member_2 adlı ikinci bir PostgreSQL sunucusunun IP adresi ve bağlantı noktası belirtilir.

server member_3 192.168.242.149:5432 maxconn 100 check port 8008: member_3 adlı üçüncü bir PostgreSQL sunucusu için aynı bilgiler sağlanır.

Loading