Backend

Bir backendbölümü, yük dengelemek ve istekleri işlemek için atanacak bir grup sunucu tanımlar. Her arka uca web_servers gibi özel bir etiket eklenir. Genel olarak oldukça basittir ve burada birçok ayara ihtiyaç duymazsınız.

backend web_servers
    balance roundrobin
    cookie SERVERUSED insert indirect nocache
    option httpchk HEAD /
    default-server check maxconn 20
    server server1 10.0.1.3:80 cookie server1
    server server2 10.0.1.4:80 cookie server2

balance

Hiçbir kalıcılık yöntemi bu seçimi geçersiz kılmazsa, isteğe yanıt vermek için HAProxy'nin sunucuyu nasıl seçeceğini denetler. Kalıcılık yöntemi, belirli bir istemciyi her zaman bir çereze dayalı olarak aynı sunucuya göndermek olabilir. Genel yük dengeleme değerleri, bir sonraki sunucuyu seçip tekrar listenin en üstünde başlayan roundrobin ve leastconn içerir; burada HAProxy, sunucuyu en az aktif oturumla seçer.

Çerez tabanlı kalıcılığı etkinleştirir. HAProxy'ye istemciye SERVERUSED (yukarıda belirttiğimiz) adlı bir çerez göndermesini ve bunu ilk yanıtı veren sunucunun adıyla ilişkilendirmesini söyler. Bu, istemcinin oturumu boyunca bu sunucuyla konuşmaya devam etmesini sağlar.

option httpchk

HAProxy'nin backend sunucularınıza Katman 4 (TCP) denetimleri yerine Katman 7 (HTTP) sistem durumu denetimleri göndermesini sağlar. Yanıt vermeyen sunuculara başka istek sunulmaz. TCP kontrolleri, arka uç sunucusunun IP ve bağlantı noktasına bağlantı kurabiliyorsa başarılı olurken, HTTP sistem durumu denetimleri başarılı bir HTTP yanıtı almayı bekler. Yanıt vermeyen 500 Sunucu Hatası gibi kötü bir HTTP yanıtı almak anlamına gelse de, daha akıllı sağlık denetimleri yanıt vermeyen sunucuların kaldırılmasında etkilidir.

Varsayılan olarak, bir HTTP sistem durumu denetimi, OPTIONS metodu kullanarak '/' adresine istekte bulunur. Ancak, burada belirtilen argümanlar bunu özelleştirebilir. HAProxy, 2xx veya 3xx yanıt kodunu alan tüm kontrolleri başarılı kılacaktır, ancak bu da bir http-kontrol hattı ile özelleştirilebilir. Httpchk seçeneğini kullanmak, http modunu kullanan arka uçlarla sınırlı değildir, bu nedenle HTTP kullanarak iletişim kuran sunucular proxy modundan bağımsız olarak denetlenebilir.

default-server

Varsayılan sunucu ayarı, sağlık denetimlerini etkinleştirme, maksimum bağlantılar vb. gibi ayarları tüm sunucu satırları için ayarlamayı sağlar. Bu, yapılandırmanızın okunmasını ve değiştirilmesini kolaylaştırabilir. Alternatif olarak, bu bağımsız değişkenleri her sunucuda belirleyebilirsiniz.

server

İlk argümanı bir isimdir, arkasından backend sunucusunun IP adresi ve bağlantı noktası gelir. IP adresi yerine bir alan adı yazabilirsiniz. Bu durumda, başlangıçta çözümlenir veya çözümleyici bağımsız değişkeni eklerseniz, çalışma zamanı sırasında güncelleştirilir. DNS girişi bir SRV kaydı içeriyorsa, bağlantı noktası ve ağırlık da ondan doldurulur. Bağlantı noktası belirtilmezse, HAProxy istemcinin bağlandığı bağlantı noktasını kullanır; bu, etkin mod FTP gibi rasgele kullanılan bağlantı noktaları için yararlıdır.

Her ne kadar sunucularımızın HTTP tabanlı sağlık kontrolünü ayarlamak için httpchk seçeneğini eklesek de, her sunucunun bir kontrol argümanı ekleyerek sağlık kontrollerini etkinleştirmesi gerekir. Bu, sunucu satırında veya bu örnekte yaptığımız gibi varsayılan sunucu satırında ayarlanabilir.

Her sunucu satırında, sunucunun verileceği maksimum eşzamanlı istek sayısını sınırlayan bir maxconn ayarı olmalıdır. Sadece bir tahmin olsa bile, burada bir değere sahip olmak, sunucularınızı isteklerle boğmayı engeller.

Last updated