Zimbra Open-Source Edition-da HAProxy vasitəsilə yük balanslaşdırma

Zimbra OSE-in genişmiqyaslı infrastrukturaların qurulmasında əsas vəzifələrdən biri düzgün yük balanslaşdırmasıdır. Yük balanslaşdırması xidmətin etibarsızlığını artırmaqla yanaşı, bütün istifadəçilər üçün eyni xidmət reaktivliyini təmin etməyə imkan vermir. Bu məsələnin həlli üçün yük balanslaşdırıcıları - serverlər arasında sorğuları yenidən bölüşdürən proqram və ya aparat həlləri istifadə olunur. Onlardan bəziləri, məsələn, RoundRobin, sadəcə olaraq, növbəti sorğunu siyahıdakı növbəti serverə yönləndirirsə, daha inkişaf etmiş versiyaları da var, məsələn HAProxy, yüksək yüklü hesablama infrastrukturlarında bir sıra əhəmiyyətli üstünlükləri səbəbindən geniş şəkildə istifadə olunur. Gəlin HAProxy yük balanslaşdırıcısının Zimbra OSE ilə necə birgə işlədiyini nəzərdən keçirək.

Zimbra Open-Source Edition-da HAProxy vasitəsilə yük balanslaşdırma

Beləliklə, tapşırığın şərtlərinə görə, bizdə Zimbra OSE infrastrukturu var, burada iki Zimbra Proxy, iki LDAP serveri və LDAP Replica, hər birində 1000 poçt qutusu olan dörd poçt anbarı və üç MTA var. Poçt serveri ilə işlədiyimiz üçün üç növ balanslaşdırma tələb edən trafik olacaq: Veb müştərinin yüklənməsi üçün HTTP, eyni zamanda POP və SMTP elektron poçt göndərilməsi üçün. Bu zaman HTTP trafiki serverlər 192.168.0.57 və 192.168.0.58 ip ünvanlarına malik Zimbra Proxy-yə yönləndiriləcək, SMTP trafiki isə 192.168.0.77 və 192.168.0.78 ip ünvanlarına malik MTA serverlərinə yönləndiriləcək.

Artıq qeyd edildiyi kimi, serverlər arasında sorğuların bərabər bölüşdürülməsini təmin etmək üçün HAProxy yük balanslaşdırıcısından istifadə edəcəyik, bu da Zimbra infrastrukturunun giriş düyünündə Ubuntu 18.04 altında çalışacaq. Bu əməliyyat sistemində haproxy quraşdırılması aşağıdakı əmr vasitəsilə həyata keçirilir. sudo apt-get install haproxy. Bundan sonra, /etc/default/haproxy faylında ENABLED=0 buna ENABLED=1parametrini dəyişdirmək lazımdır. İndi, haproxynin işlədiyini təsdiqləmək üçün, sadəcə olaraq, aşağıdakı əmri daxil etmək kifayətdir. service haproxy. Bu xidmət işləyirsə, bu, komandanın nəticəsindən aydın olacaq.

HAProxy-nin başlıca çatışmazlıqlarından biri, onun avtomatik olaraq qoşulmuş müştərinin IP ünvanını öz IP ünvanı ilə əvəz etməsidir. Bu, zərərli proqramların göndərdiyi e-poçtları IP ünvanıidentifikasiya etmək üçün qara siyahıya salmaqda çətinliklərə səbəb ola bilər. Bununla belə, bu məsələni həll etmək mümkündür. Bunun üçün /opt/zimbra/common/conf/master.cf.in serverlərində Postfix olan faylı redaktə etmək və oraya aşağıdakı sətrləri əlavə etmək lazımdır:

26 inet n - n - 1 postscreen
 -o postscreen_upstream_proxy_protocol=haproxy

466 inet n - n - - smtpd
%%uncomment SERVICE:opendkim%% -o content_filter=scan:[%%zimbraLocalBindAddress%%]:10030
 -o smtpd_tls_wrappermode=yes
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=
 -o smtpd_data_restrictions=
 -o smtpd_helo_restrictions=
 -o smtpd_recipient_restrictions=
 -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
 -o syslog_name=postfix/smtps
 -o milter_macro_daemon_name=ORIGINATING
 -o smtpd_upstream_proxy_protocol=haproxy
%%uncomment LOCAL:postjournal_enabled%% -o smtpd_proxy_filter=[%%zimbraLocalBindAddress%%]:10027
%%uncomment LOCAL:postjournal_enabled%% -o smtpd_proxy_options=speed_adjust

588 inet n - n - - smtpd
%%uncomment SERVICE:opendkim%% -o content_filter=scan:[%%zimbraLocalBindAddress%%]:10030
 -o smtpd_etrn_restrictions=reject
 -o smtpd_sasl_auth_enable=%%zimbraMtaSaslAuthEnable%%
 -o smtpd_tls_security_level=%%zimbraMtaTlsSecurityLevel%%
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
 -o smtpd_data_restrictions=
 -o smtpd_helo_restrictions=
 -o smtpd_recipient_restrictions=
 -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
 -o syslog_name=postfix/submission
 -o milter_macro_daemon_name=ORIGINATING
 -o smtpd_upstream_proxy_protocol=haproxy
%%uncomment LOCAL:postjournal_enabled%% -o smtpd_proxy_filter=[%%zimbraLocalBindAddress%%]:10027
%%uncomment LOCAL:postjournal_enabled%% -o smtpd_proxy_options=speed_adjust

Bununla 26, 466 ve 588 numaralı portları açacağız, bu portlar HAProxy'den gelen trafiği kabul edecek. Dosyalar kaydedildikten sonra Postfix'i tüm sunucularda tekrar başlatmak için zmmtactl restart komutunu kullanmalıyız.

Bundan sonra HAProxy yapılandırmasını ayarlamaya başlayacağız. Bunun için önce yapılandırma dosyasının yedeğini oluşturacağız. cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak. Ardından metin düzenleyicide kaynak dosyayı açacağız. /etc/haproxy/haproxy.cfg Ve adım adım gerekli ayarları eklemeye başlayacağız. İlk blok, log kaydı tutan bir sunucunun eklenmesi, maksimum eşzamanlı bağlantı sayısının belirlenmesi ve işlemciyi çalıştıracak kullanıcı adı ve grubunun belirtilmesi olacak.

global
    user daemon
    group daemon
    daemon
    log 127.0.0.1 daemon
    maxconn 5000
    chroot /var/lib/haproxy

5000 eşzamanlı bağlantı sayısı boşuna ortaya çıkmadı. Altyapımızda 4000 e-posta kutusu olduğu için, hepsinin aynı anda iş e-postalarına girebileceği olasılığını göz önünde bulundurmak gerekir. Ayrıca, sayılarının artması durumunda az miktarda bir rezerv de bırakmak gereklidir.

Şimdi varsayılan ayarlarla bir blok ekleyeceğiz:

defaults
        timeout client 1m
        log global
        mode tcp
        timeout server 1m
        timeout connect 5s

Bu blokta, bağlantının kesilmesi durumunda istemci ve sunucu için maksimum bekleme süresi tanımlanır ve HAProxy'nin çalışma modu belirlenir. Bizim durumumuzda yük dengeleyici TCP modunda çalışır, yani TCP paketlerini içeriklerini analiz etmeden iletir.

Daha sonra müxtəlif portlarda bağlantılar üçün qaydalar əlavə edəcəyik. Məsələn, əgər 25-ci porta SMTP bağlantıları və poçt göndərmə üçün istifadə olunursa, bu portla olan bağlantıları infrastrukturumuzda olan MTA-yə yönləndirmək məna kəsb edir. Əgər bağlantı 80-ci portda baş verirsə, o zaman bu http sorğusudur ki, Zimbra Proxy-yə yönləndirilməlidir.

25-ci port üçün qayda:

frontend smtp-25
bind *:27
default_backend backend-smtp-25
 
backend backend-smtp-25
server mta1 192.168.0.77:26 send-proxy
server mta2 192.168.0.78:26 send-proxy

465-ci port üçün qayda:

frontend smtp-465
bind *:467
default_backend backend-smtp-465

backend backend-smtp-465
server mta1 192.168.0.77:466 send-proxy
server mta2 192.168.0.78:466 send-proxy

587-ci port üçün qayda:

frontend smtp-587
bind *:589
default_backend backend-smtp-587
 
backend backend-smtp-587
server mail1 192.168.0.77:588 send-proxy
server mail2 192.168.0.78:588 send-proxy

80-ci port üçün qayda:

frontend http-80
bind    *:80
default_backend http-80
 
backend http-80
mode tcp
server zproxy1 192.168.0.57:80 check
server zproxy2 192.168.0.58:80 check

443-cü port üçün qayda:

frontend https
bind  *:443
default_backend https-443
 
backend https-443
mode tcp
server zproxy1 192.168.0.57:80 check
server zproxy2 192.168.0.58:80 check

Qeyd edin ki, TCP paketlərini MTA-ya yönləndirmək üçün qaydalarda onların ünvanları yanında send-proxyparametri var. Bu, əvvəlki Postfix tənzimləmələrimizdəki dəyişikliklərə uyğun olaraq, TCP paketləri ilə göndərənin orijinal IP adresinin də göndərilməsini təmin etmək üçündür.

İndi, bütün lazımi dəyişikliklər HAProxy-ə tətbiq edildikdən sonra xidməti aşağıdakı əmr ilə yenidən başladırıq: service haproxy restart və onun istifadəsinə başlaya bilərik.

Zextras Suite ilə bağlı bütün suallarınız üçün şirkətimizin nümayəndəsi Yekaterina Triandafiliidi ilə katerina@zextras.com elektron poçtu vasitəsilə əlaqə saxlaya bilərsiniz.

Mənbə: habr.com

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster