HAProxy istifadə edərək Zimbra Açıq Mənbə Edition-da yük balansı

Genişmiqyaslı Zimbra OSE infrastrukturlarının qurulması zamanı əsas vəzifələrdən biri düzgün yük balansının qurulmasıdır. Xidmətin nasazlıqlara qarşı dözümlülüyünü artırdığına əlavə olaraq, yük balanslaşdırmadan bütün istifadəçilər üçün xidmətin eyni həssaslığını təmin etmək mümkün deyil. Bu problemi həll etmək üçün yük balanslaşdırıcılarından istifadə olunur - sorğuları serverlər arasında yenidən bölüşdürən proqram və aparat həlləri. Onların arasında hər bir sonrakı sorğunu sadəcə siyahıdakı növbəti serverə göndərən RoundRobin kimi olduqca primitiv olanlar var və daha təkmil olanları da var, məsələn, yüksək yüklü hesablama infrastrukturlarında geniş istifadə olunan HAProxy. əhəmiyyətli üstünlüklərin sayı. Gəlin HAProxy yük balanslaşdırıcısı və Zimbra OSE-nin birlikdə işləməsini necə təmin edə biləcəyinizi nəzərdən keçirək.

HAProxy istifadə edərək Zimbra Açıq Mənbə Edition-da yük balansı

Beləliklə, tapşırığın şərtlərinə görə, bizə iki Zimbra Proxy, iki LDAP və LDAP Replica serverləri, hər biri 1000 poçt qutusu olan dörd poçt anbarı və üç MTA olan Zimbra OSE infrastrukturu verilir. Bir poçt serveri ilə məşğul olduğumuzu nəzərə alsaq, o, balanslaşdırmaya ehtiyacı olan üç növ trafik alacaq: veb müştərini yükləmək üçün HTTP, həmçinin e-poçt göndərmək üçün POP və SMTP. Bu halda HTTP trafiki 192.168.0.57 və 192.168.0.58 IP ünvanlı Zimbra Proxy serverlərinə, SMTP trafiki isə 192.168.0.77 və 192.168.0.78 IP ünvanlı MTA serverlərinə gedəcək.

Artıq qeyd edildiyi kimi, sorğuların serverlər arasında bərabər paylanmasını təmin etmək üçün Ubuntu 18.04 ilə işləyən Zimbra infrastruktur giriş qovşağında işləyəcək HAProxy yük balanslaşdırıcısından istifadə edəcəyik. Bu əməliyyat sistemində haproxy quraşdırılması əmrdən istifadə etməklə həyata keçirilir sudo apt-get quraşdırma haproxy. Bundan sonra faylda lazımdır /etc/default/haproxy parametrini dəyişdirin ENABLE=0 haqqında ENABLE=1. İndi, haproxy-nin işlədiyinə əmin olmaq üçün sadəcə əmri daxil edin xidmət haproxy. Bu xidmət işləyirsə, bu, komandanın çıxışından aydın olacaq.

HAProxy-nin əsas çatışmazlıqlarından biri odur ki, o, standart olaraq qoşulan müştərinin IP ünvanını ötürmür, onu özü ilə əvəz edir. Bu, təcavüzkarlar tərəfindən göndərilən e-poçtları qara siyahıya əlavə etmək üçün IP ünvanı ilə müəyyən edilə bilməyəcəyi vəziyyətlərə səbəb ola bilər. Ancaq bu məsələni həll etmək olar. Bunu etmək üçün faylı redaktə etməlisiniz /opt/zimbra/common/conf/master.cf.in Postfix ilə serverlərdə və ona aşağıdakı sətirləri əlavə edin:

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

Bunun sayəsində biz HAProxy-dən gələn trafiki qəbul edəcək 26, 466 və 588 portlarını açacağıq. Fayllar saxlandıqdan sonra zmmtactl restart əmrindən istifadə edərək bütün serverlərdə Postfix-i yenidən başlatmalısınız.

Bundan sonra HAProxy-ni qurmağa başlayaq. Bunu etmək üçün əvvəlcə parametrlər faylının ehtiyat nüsxəsini yaradın cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak. Sonra mənbə faylı mətn redaktorunda açın /etc/haproxy/haproxy.cfg və ona addım-addım lazımi parametrləri əlavə etməyə başlayın. Birinci blok, qeydləri götürən, eyni vaxtda icazə verilən maksimum sayda əlaqəni təyin edən, həmçinin icra prosesinin aid olacağı istifadəçinin adını və qrupunu təyin edən bir server əlavə edəcəkdir.

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

5000 eyni vaxtda əlaqə rəqəmi bir səbəbdən ortaya çıxdı. İnfrastrukturumuzda 4000 poçt qutumuz olduğundan, onların hamısının eyni vaxtda iş e-poçtlarına daxil olma ehtimalını nəzərə almalıyıq. Bundan əlavə, onların sayı artacağı təqdirdə kiçik bir ehtiyat buraxmaq lazımdır.

İndi standart parametrləri olan bir blok əlavə edək:

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

Bu blok müştəri və server üçün əlaqənin müddəti bitdikdə əlaqəni bağlamaq üçün maksimum fasilə müddəti təyin edir və həmçinin HAProxy-nin iş rejimini təyin edir. Bizim vəziyyətimizdə yük balanslaşdırıcısı TCP rejimində işləyir, yəni TCP paketlərini onların məzmununu təhlil etmədən sadəcə ötürür.

Sonra müxtəlif portlarda əlaqə qaydaları əlavə edəcəyik. Məsələn, əgər port 25 SMTP əlaqələri və poçt üçün istifadə olunursa, o zaman ona qoşulmaları infrastrukturumuzda mövcud olan MTA-lara yönləndirməyin mənası var. Bağlantı 80-ci portdadırsa, bu Zimbra Proxy-ə yönləndirilməli olan http sorğusudur.

Port 25 üçü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

Port 465 üçü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

Port 587 üçü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

Port 80 üçü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

Port 443 üçü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

Nəzərə alın ki, TCP paketlərinin MTA-ya yönləndirilməsi qaydalarında onların ünvanlarının yanında bir parametr var. göndərmək-proksi. Bu, Postfix parametrlərində əvvəllər etdiyimiz dəyişikliklərə uyğun olaraq, göndəricinin orijinal IP ünvanı TCP paketləri ilə birlikdə göndərilməsi üçün lazımdır.

İndi HAProxy-də bütün lazımi dəyişikliklər edildikdən sonra, əmrdən istifadə edərək xidməti yenidən başlada bilərsiniz xidmət haproxy yenidən başladın və istifadə etməyə başlayın.

Zextras Suite ilə bağlı bütün suallar üçün siz Zextras nümayəndəsi Ekaterina Triandafilidi ilə e-poçt vasitəsilə əlaqə saxlaya bilərsiniz. [e-poçt qorunur]

Mənbə: www.habr.com

Добавить комментарий