Suuremahuliste Zimbra OSE infrastruktuuride ehitamisel on üks peamisi ülesandeid õige koormuse tasakaalustamine. Lisaks sellele, et see suurendab teenuse tõrketaluvust, on ilma koormuse tasakaalustamiseta võimatu tagada kõigile kasutajatele teenuse samasugune reageerimisvõime. Selle probleemi lahendamiseks kasutatakse koormuse tasakaalustajaid – tarkvara- ja riistvaralahendusi, mis jagavad päringuid serverite vahel ümber. Nende hulgas on üsna primitiivseid, nagu RoundRobin, mis saadab iga järgmise päringu lihtsalt loendis järgmisele serverile, ja on ka täiustatumaid, näiteks HAProxy, mida kasutatakse laialdaselt suure koormusega andmetöötluse infrastruktuurides. mitmeid olulisi eeliseid. Vaatame, kuidas saate HAProxy koormuse tasakaalustaja ja Zimbra OSE koos töötama.
Seega antakse meile vastavalt ülesande tingimustele Zimbra OSE infrastruktuur, millel on kaks Zimbra puhverserverit, kaks LDAP ja LDAP Replica serverit, neli 1000 postkastiga meilisalvestusruumi ja kolm MTA-d. Arvestades, et tegemist on meiliserveriga, saab see tasakaalustamist vajavat kolme tüüpi liiklust: HTTP veebikliendi allalaadimiseks ning POP ja SMTP e-kirjade saatmiseks. Sel juhul suunatakse HTTP-liiklus Zimbra puhverserveritesse IP-aadressidega 192.168.0.57 ja 192.168.0.58 ning SMTP-liiklus MTA-serveritesse IP-aadressidega 192.168.0.77 ja 192.168.0.78.
Nagu juba mainitud, kasutame päringute ühtlase jaotuse tagamiseks serverite vahel HAProxy koormuse tasakaalustajat, mis töötab Zimbra infrastruktuuri sissepääsusõlmes, kus töötab Ubuntu 18.04. Haproxy installimine sellele operatsioonisüsteemile toimub käsu abil sudo apt-get install haproxy. Pärast seda peate faili sisestama /etc/default/haproxy muuta parameetrit LUBATUD = 0 edasi LUBATUD = 1. Nüüd, veendumaks, et haproxy töötab, sisestage lihtsalt käsk teenuse haproxy. Kui see teenus töötab, selgub see käsu väljundist.
HAProxy üks peamisi puudusi on see, et vaikimisi ei edasta ta ühendava kliendi IP-aadressi, asendades selle enda omaga. See võib põhjustada olukordi, kus ründajate saadetud kirju ei saa IP-aadressi järgi tuvastada, et neid musta nimekirja lisada. Selle probleemi saab siiski lahendada. Selleks peate faili redigeerima /opt/zimbra/common/conf/master.cf.in Postfixiga serverites ja lisage sellele järgmised read:
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
Seoses sellega avame pordid 26, 466 ja 588, mis hakkavad HAProxylt sissetulevat liiklust vastu võtma. Pärast failide salvestamist peaksite taaskäivitama Postfixi kõigis serverites, kasutades käsku zmmtactl restart.
Pärast seda alustame HAProxy seadistamist. Selleks looge esmalt seadete failist varukoopia cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak. Seejärel avage lähtefail tekstiredaktoris /etc/haproxy/haproxy.cfg ja alustage sellele samm-sammult vajalike sätete lisamist. Esimene plokk on logisid võtva serveri lisamine, samaaegsete ühenduste maksimaalse lubatud arvu määramine, samuti kasutaja nime ja grupi määramine, kuhu käivitav protsess kuulub.
global
user daemon
group daemon
daemon
log 127.0.0.1 daemon
maxconn 5000
chroot /var/lib/haproxy
Arv 5000 samaaegset ühendust ilmus põhjusega. Kuna meie infrastruktuuris on 4000 postkasti, siis peame arvestama võimalusega, et nad kõik pääsevad korraga ligi oma töömeilile. Lisaks on vaja jätta väike reserv juhuks, kui nende arv suureneb.
Nüüd lisame vaikesätetega ploki:
defaults
timeout client 1m
log global
mode tcp
timeout server 1m
timeout connect 5s
See plokk määrab maksimaalse ajalõpu, mille jooksul klient ja server ühenduse aegumisel sulgevad, ning määrab ka HAProxy töörežiimi. Meie puhul töötab koormuse tasakaalustaja TCP-režiimis, see tähendab, et see lihtsalt edastab TCP-pakette ilma nende sisu analüüsimata.
Järgmisena lisame erinevate portide ühenduste reeglid. Näiteks kui porti 25 kasutatakse SMTP-ühenduste ja kirjade jaoks, siis on mõttekas suunata sellega ühendused meie infrastruktuuris saadaolevatele MTA-dele. Kui ühendus on pordis 80, siis on see http-päring, mis tuleb Zimbra puhverserverile edastada.
Reegel pordi 25 jaoks:
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
Reegel pordi 465 jaoks:
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
Reegel pordi 587 jaoks:
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
Reegel pordi 80 jaoks:
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
Reegel pordi 443 jaoks:
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
Pange tähele, et TCP-pakettide MTA-le edastamise reeglites on nende aadresside kõrval parameeter saada-puhverserver. See on vajalik selleks, et vastavalt muudatustele, mida me varem Postfixi sätetes tegime, saadetakse koos TCP-pakettidega ka selle saatja algne IP-aadress.
Nüüd, kui HAProxys on kõik vajalikud muudatused tehtud, saate käsu abil teenuse taaskäivitada teenuse haproxy taaskäivitamine ja hakka seda kasutama.
Kõigi Zextras Suite'i puudutavate küsimuste korral võite pöörduda Zextras esindaja Ekaterina Triandafilidi poole e-posti teel [meiliga kaitstud]
Allikas: www.habr.com