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Ä.

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_adjustSakarÄ 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/haproxy5000 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-proxyNoteikums 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-proxyNoteikums 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-proxyNoteikums 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 checkNoteikums 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 checkLÅ«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
