Një nga detyrat kryesore kur ndërtohen infrastruktura në shkallë të gjerë Zimbra OSE është balancimi i duhur i ngarkesës. Përveç faktit që rrit tolerancën ndaj gabimeve të shërbimit, pa balancim të ngarkesës është e pamundur të sigurohet e njëjta përgjegjshmëri e shërbimit për të gjithë përdoruesit. Për të zgjidhur këtë problem, përdoren balancuesit e ngarkesës - zgjidhje softuerike dhe harduerike që rishpërndajnë kërkesat midis serverëve. Midis tyre ka mjaft primitive, si RoundRobin, i cili thjesht dërgon çdo kërkesë pasuese në serverin tjetër në listë, dhe ka edhe më të avancuara, për shembull HAProxy, i cili përdoret gjerësisht në infrastrukturat informatike me ngarkesë të lartë për shkak të një një numër avantazhesh domethënëse. Le të hedhim një vështrim se si mund ta bëni balancuesin e ngarkesës HAProxy dhe Zimbra OSE të punojnë së bashku.

Pra, sipas specifikimeve të problemit, na është dhënë një infrastrukturë Zimbra OSE, e cila përfshin dy Zimbra Proxies, dy servera LDAP, një LDAP Replica, katër hapësira ruajtjeje postare me nga 1000 kuti postare secila dhe tre MTA. Duke marrë parasysh që kemi të bëjmë me një server postar, ai do të marrë tre lloje trafiku që kërkojnë balancim: HTTP për ngarkimin e klientit web, si dhe POP dhe SMTP për përcjelljen e email-eve. Trafiku HTTP do të dërgohet te serverat Zimbra Proxy me adresat IP 192.168.0.57 dhe 192.168.0.58, dhe trafiku SMTP do të shkojë në serverat MTA me adresat IP 192.168.0.77 dhe 192.168.0.78.
Siç u përmend më parë, për të siguruar shpërndarje të barabartë të kërkesave midis serverave, ne do të përdorim balancuesin e ngarkesës HAProxy, i cili do të funksionojë në nyjen hyrëse të infrastrukturës Zimbra që funksionon. Ubuntu 18.04. Instalimi i haproxy në këtë sistem operativ kryhet duke përdorur komandën sudo apt-get install haproxy. Pas kësaj ju duhet në dosje /etc/default/haproxy ndryshimi i parametrit E ÇAJTSON = 0 mbi E ÇAJTSON = 1. Tani, për t'u siguruar që haproksi po funksionon, thjesht futni komandën shërbim harproksi. Nëse ky shërbim po funksionon, kjo do të jetë e qartë nga dalja e komandës.
Një nga disavantazhet kryesore të HAProxy është se si parazgjedhje nuk transmeton adresën IP të klientit që lidhet, duke e zëvendësuar atë me të vetën. Kjo mund të çojë në situata ku emailet e dërguara nga sulmuesit nuk mund të identifikohen nga... adresa IPpër ta shtuar atë në listën e zezë. Megjithatë, ky problem mund të zgjidhet. Për ta bërë këtë, duhet ta modifikoni skedarin /opt/zimbra/common/conf/master.cf.in në serverët me Postfix dhe shtoni linjat e mëposhtme në të:
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_adjustPër shkak të kësaj, ne do të hapim portet 26, 466 dhe 588, të cilat do të marrin trafikun në hyrje nga HAProxy. Pasi të jenë ruajtur skedarët, duhet të rinisni Postfix në të gjithë serverët duke përdorur komandën e rinisjes zmmtactl.
Pas kësaj, le të fillojmë të konfigurojmë HAProxy. Për ta bërë këtë, së pari krijoni një kopje rezervë të skedarit të cilësimeve cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak. Pastaj hapni skedarin burim në një redaktues teksti /etc/haproxy/haproxy.cfg dhe filloni t'i shtoni cilësimet e nevojshme hap pas hapi. Blloku i parë do të jetë shtimi i një serveri që merr regjistrat, duke vendosur numrin maksimal të lejuar të lidhjeve të njëkohshme, si dhe duke specifikuar emrin dhe grupin e përdoruesit të cilit do t'i përkasë procesi ekzekutiv.
global
user daemon
group daemon
daemon
log 127.0.0.1 daemon
maxconn 5000
chroot /var/lib/haproxyShifra e 5000 lidhjeve të njëkohshme u shfaq për një arsye. Meqenëse kemi 4000 kuti postare në infrastrukturën tonë, duhet të shqyrtojmë mundësinë që të gjithë të kenë akses në emailin e tyre të punës në të njëjtën kohë. Përveç kësaj, është e nevojshme të lihet një rezervë e vogël në rast se numri i tyre rritet.
Tani le të shtojmë një bllok me cilësimet e paracaktuara:
defaults
timeout client 1m
log global
mode tcp
timeout server 1m
timeout connect 5sKy bllok cakton kohën maksimale për klientin dhe serverin për të mbyllur lidhjen kur skadon, dhe gjithashtu cakton mënyrën e funksionimit të HAProxy. Në rastin tonë, balancuesi i ngarkesës funksionon në modalitetin TCP, domethënë thjesht transmeton paketat TCP pa analizuar përmbajtjen e tyre.
Më pas do të shtojmë rregullat për lidhjet në porte të ndryshme. Për shembull, nëse porti 25 përdoret për lidhjet SMTP dhe postën, atëherë ka kuptim t'i përcillni lidhjet me të në MTA të disponueshme në infrastrukturën tonë. Nëse lidhja është në portin 80, atëherë kjo është një kërkesë http që duhet të përcillet te Zimbra Proxy.
Rregulli për portin 25:
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-proxyRregulli për portin 465:
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-proxyRregulli për portin 587:
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-proxyRregulli për portin 80:
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 checkRregulli për portin 443:
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 checkJu lutemi vini re se në rregullat për përcjelljen e paketave TCP në MTA, pranë adresave të tyre ka një parametër dërgo-proxy. Kjo është e nevojshme në mënyrë që, në përputhje me ndryshimet që kemi bërë më parë në cilësimet e Postfix, adresa IP origjinale e dërguesit të saj të dërgohet së bashku me paketat TCP.
Tani që të gjitha ndryshimet e nevojshme janë bërë në HAProxy, mund ta rinisni shërbimin duke përdorur komandën rinisja e shërbimit haproksi dhe filloni ta përdorni.
Për të gjitha pyetjet në lidhje me Zextras Suite, mund të kontaktoni përfaqësuesen e Zextras Ekaterina Triandafilidi me email katerina@zextras.com
Burimi: www.habr.com
