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.