Slodzes līdzsvaroŔana programmā Zimbra Open-Source Edition, izmantojot HAProxy

Viens no galvenajiem uzdevumiem, veidojot liela mēroga Zimbra OSE infrastruktÅ«ru, ir pareiza slodzes lÄ«dzsvaroÅ”ana. Papildus tam, ka tas palielina pakalpojuma kļūdu toleranci, bez slodzes balansēŔanas nav iespējams nodroÅ”ināt vienādu pakalpojuma atsaucÄ«bu visiem lietotājiem. Å Ä«s problēmas risināŔanai tiek izmantoti slodzes balansētāji – programmatÅ«ras un aparatÅ«ras risinājumi, kas pārdala pieprasÄ«jumus starp serveriem. Starp tiem ir diezgan primitÄ«vi, piemēram, RoundRobin, kas katru nākamo pieprasÄ«jumu vienkārÅ”i nosÅ«ta nākamajam sarakstā esoÅ”ajam serverim, un ir arÄ« progresÄ«vāki, piemēram, HAProxy, ko plaÅ”i izmanto augstas slodzes skaitļoÅ”anas infrastruktÅ«rās. vairākas bÅ«tiskas priekÅ”rocÄ«bas. ApskatÄ«sim, kā jÅ«s varat panākt, lai HAProxy slodzes lÄ«dzsvarotājs un Zimbra OSE darbotos kopā.

Slodzes līdzsvaroŔana programmā Zimbra Open-Source Edition, izmantojot HAProxy

Tātad, saskaņā ar problēmas specifikācijām, mums ir dota Zimbra OSE infrastruktÅ«ra, kas ietver divus Zimbra starpniekserverus, divus LDAP serverus, LDAP repliku, četras pastkastīŔu krātuves ar 1000 pastkastēm katrā un trÄ«s MTA. Ņemot vērā, ka mums ir darīŔana ar pasta serveri, tas saņems trÄ«s veidu trafiku, kam nepiecieÅ”ama lÄ«dzsvaroÅ”ana: HTTP tÄ«mekļa klienta ielādei, kā arÄ« POP un SMTP e-pasta pārsÅ«tīŔanai. HTTP trafika tiks nosÅ«tÄ«ta uz serveri Zimbra starpniekserveris ar IP adresēm 192.168.0.57 un 192.168.0.58, un SMTP datplÅ«sma nonāks MTA serveros ar IP adresēm 192.168.0.77 un 192.168.0.78.

Как уже Š³Š¾Š²Š¾Ń€ŠøŠ»Š¾ŃŃŒ, Š“Š»Ń Š¾Š±ŠµŃŠæŠµŃ‡ŠµŠ½ŠøŃ равномерного Ń€Š°ŃŠæŃ€ŠµŠ“ŠµŠ»ŠµŠ½ŠøŃ запросов межГу серверами мы буГем ŠøŃŠæŠ¾Š»ŃŒŠ·Š¾Š²Š°Ń‚ŃŒ балансировщик Š½Š°Š³Ń€ŃƒŠ·ŠŗŠø HAProxy, который Š±ŃƒŠ“ет Ń€Š°Š±Š¾Ń‚Š°Ń‚ŃŒ на вхоГном узле ŠøŠ½Ń„Ń€Š°ŃŃ‚Ń€ŃƒŠŗŃ‚ŃƒŃ€Ń‹ Zimbra поГ ŃƒŠæŃ€Š°Š²Š»ŠµŠ½ŠøŠµŠ¼ Ubuntu 18.04. Установка haproxy в ŃŃ‚Š¾Š¹ операционной системе Š¾ŃŃƒŃ‰ŠµŃŃ‚Š²Š»ŃŠµŃ‚ŃŃ при помощи команГы sudo apt-get instalēt haproxy. Pēc tam jums ir nepiecieÅ”ams failā /etc/default/haproxy mainÄ«t parametru IESPĒJOTS=0 par IESPĒJOTS=1. Tagad, lai pārliecinātos, ka haproxy darbojas, vienkārÅ”i ievadiet komandu pakalpojumu haproxy. Ja Å”is pakalpojums darbojas, tas bÅ«s skaidrs no komandas izvades.

Viens no galvenajiem HAProxy trÅ«kumiem ir tas, ka pēc noklusējuma tas nepārraida savienojoŔā klienta IP adresi, aizstājot to ar savu. Tas var radÄ«t situācijas, kad uzbrucēju nosÅ«tÄ«tos e-pastus nevar identificēt. IP adreselai to pievienotu melnajam sarakstam. Tomēr Å”o problēmu var atrisināt. Lai to izdarÄ«tu, jums ir jārediģē fails /opt/zimbra/common/conf/master.cf.in serveros ar Postfix un pievienojiet tam Ŕādas rindiņas:

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

Sakarā ar to mēs atvērsim 26., 466. un 588. portus, kas saņems ienākoÅ”o trafiku no HAProxy. Kad faili ir saglabāti, restartējiet Postfix visos serveros, izmantojot komandu zmmtactl restart.

Pēc tam sāksim HAProxy iestatīŔanu. Lai to izdarÄ«tu, vispirms izveidojiet iestatÄ«jumu faila dublējumkopiju cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak. Pēc tam atveriet avota failu teksta redaktorā /etc/haproxy/haproxy.cfg un sāciet soli pa solim pievienot tai nepiecieÅ”amos iestatÄ«jumus. Pirmais bloks bÅ«s servera pievienoÅ”ana, kas ņem žurnālus, iestatot maksimālo atļauto vienlaicÄ«go savienojumu skaitu, kā arÄ« norādot lietotāja vārdu un grupu, kurai piederēs izpildes process.

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

5000 vienlaicÄ«gu savienojumu skaitlis parādÄ«jās kāda iemesla dēļ. Tā kā mÅ«su infrastruktÅ«rā ir 4000 pastkastīŔu, mums ir jāņem vērā iespēja, ka tās visas vienlaikus piekļūs savam darba e-pastam. Turklāt ir nepiecieÅ”ams atstāt nelielu rezervi gadÄ«jumam, ja to skaits palielinās.

Tagad pievienosim bloku ar noklusējuma iestatījumiem:

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

Å is bloks iestata maksimālo taimautu klientam un serverim, lai aizvērtu savienojumu, kad tas beidzas, kā arÄ« iestata HAProxy darbÄ«bas režīmu. MÅ«su gadÄ«jumā slodzes balansētājs darbojas TCP režīmā, tas ir, tas vienkārÅ”i pārsÅ«ta TCP paketes, neanalizējot to saturu.

Tālāk mēs pievienosim noteikumus savienojumiem dažādos portos. Piemēram, ja SMTP savienojumiem un pastam tiek izmantots ports 25, tad savienojumus uz to ir lietderīgi pārsūtīt uz mūsu infrastruktūrā pieejamajiem MTA. Ja savienojums ir portā 80, tas ir http pieprasījums, kas ir jāpārsūta uz Zimbra starpniekserveri.

Noteikums 25. portam:

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

Noteikums 465. portam:

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

Noteikums 587. portam:

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

Noteikums 80. portam:

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

Noteikums 443. portam:

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

LÅ«dzu, ņemiet vērā, ka noteikumos par TCP pakeÅ”u pārsÅ«tīŔanu uz MTA blakus to adresēm ir parametrs sÅ«tÄ«t-starpniekserveris. Tas ir nepiecieÅ”ams, lai saskaņā ar iepriekÅ” veiktajām izmaiņām Postfix iestatÄ«jumos kopā ar TCP paketēm tiktu nosÅ«tÄ«ta sākotnējā sÅ«tÄ«tāja IP adrese.

Tagad, kad HAProxy ir veiktas visas nepiecieÅ”amās izmaiņas, varat restartēt pakalpojumu, izmantojot komandu pakalpojuma haproxy restartēŔana un sāciet to lietot.

Par visiem jautājumiem, kas saistīti ar Zextras Suite, varat sazināties ar Zextras pārstāvi Jekaterinu Triandafilidi pa e-pastu katerina@zextras.com

Avots: www.habr.com

Iegādājieties uzticamu mitināŔanu vietnēm ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa vietņu mitināŔanu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster