Yksi tärkeimmistä tehtävistä rakennettaessa suuria Zimbra OSE -infrastruktuureja on oikea kuormituksen tasapainotus. Sen lisäksi, että se lisää palvelun vikasietoisuutta, ilman kuormituksen tasausta on mahdotonta varmistaa kaikille käyttäjille samanlaista palvelun reagointikykyä. Tämän ongelman ratkaisemiseksi käytetään kuormituksen tasapainottajia - ohjelmisto- ja laitteistoratkaisuja, jotka jakavat pyynnöt uudelleen palvelimien välillä. Niiden joukossa on varsin primitiivisiä, kuten RoundRobin, joka yksinkertaisesti lähettää jokaisen seuraavan pyynnön luettelon seuraavalle palvelimelle, ja on myös edistyneempiä, esimerkiksi HAProxy, jota käytetään laajalti korkean kuormituksen laskentainfrastruktuureissa. useita merkittäviä etuja. Katsotaanpa, kuinka voit saada HAProxy-kuormituksen tasapainottimen ja Zimbra OSE:n toimimaan yhdessä.

Ongelmamäärittelyn mukaan meille annetaan siis Zimbra OSE -infrastruktuuri, joka sisältää kaksi Zimbra-välityspalvelinta, kaksi LDAP-palvelinta, LDAP-replikan, neljä postilaatikkotallennustilaa, joissa kussakin on 1 000 postilaatikkoa, ja kolme MTA:ta. Koska kyseessä on postipalvelin, se vastaanottaa kolmen tyyppistä liikennettä, jotka vaativat tasapainottamista: HTTP web-asiakasohjelman lataamiseen sekä POP ja SMTP sähköpostin edelleenlähetykseen. HTTP-liikenne lähetetään osoitteeseen serveria Zimbra-välityspalvelin, jonka IP-osoitteet ovat 192.168.0.57 ja 192.168.0.58, ja SMTP-liikenne menee MTA-palvelimille, joiden IP-osoitteet ovat 192.168.0.77 ja 192.168.0.78.
Kuten aiemmin mainittiin, pyyntöjen tasaisen jakautumisen varmistamiseksi palvelimien välillä käytämme HAProxy-kuormituksen tasaajaa, joka toimii Zimbra-infrastruktuurin sisääntulosolmulla, jossa on Ubuntu 18.04. Haproxyn asennus tähän käyttöjärjestelmään suoritetaan komennolla sudo apt-get install haproxy. Tämän jälkeen tarvitset tiedostoon /etc/default/haproxy muuta parametria KÄYTÖSSÄ = 0 päälle KÄYTÖSSÄ = 1. Anna nyt komento varmistaaksesi, että haproxy toimii palvelun haproxy. Jos tämä palvelu on käynnissä, tämä käy selvästi ilmi komennon lähdöstä.
Yksi HAProxyn suurimmista haitoista on, että se ei oletuksena lähetä yhteyden muodostavan asiakkaan IP-osoitetta, vaan korvaa sen omalla osoitteellaan. Tämä voi johtaa tilanteisiin, joissa hyökkääjien lähettämiä sähköposteja ei voida tunnistaa... IP-osoitelisätäksesi sen mustalle listalle. Tämä ongelma voidaan kuitenkin ratkaista. Tätä varten sinun on muokattava tiedostoa /opt/zimbra/common/conf/master.cf.in palvelimilla, joissa on Postfix, ja lisää siihen seuraavat rivit:
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_adjustTästä johtuen avaamme portit 26, 466 ja 588, jotka vastaanottavat tulevaa liikennettä HAProxylta. Kun tiedostot on tallennettu, sinun tulee käynnistää Postfix uudelleen kaikilla palvelimilla käyttämällä zmmtactl restart -komentoa.
Sen jälkeen aloitetaan HAProxyn määrittäminen. Voit tehdä tämän luomalla ensin varmuuskopion asetustiedostosta cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak. Avaa sitten lähdetiedosto tekstieditorissa /etc/haproxy/haproxy.cfg ja aloita tarvittavien asetusten lisääminen siihen askel askeleelta. Ensimmäinen lohko on lokeja vastaanottavan palvelimen lisääminen, samanaikaisten yhteyksien enimmäismäärän asettaminen sekä käyttäjän nimen ja ryhmän määrittäminen, johon suoritusprosessi kuuluu.
global
user daemon
group daemon
daemon
log 127.0.0.1 daemon
maxconn 5000
chroot /var/lib/haproxy5000 samanaikaisen yhteyden luku ilmestyi syystä. Koska meillä on infrastruktuurissamme 4000 postilaatikkoa, meidän on harkittava mahdollisuutta, että he kaikki pääsevät työsähköpostiinsa samaan aikaan. Lisäksi on tarpeen jättää pieni varaus siltä varalta, että niiden lukumäärä kasvaa.
Lisätään nyt lohko oletusasetuksilla:
defaults
timeout client 1m
log global
mode tcp
timeout server 1m
timeout connect 5sTämä lohko asettaa enimmäisaikakatkaisun, jonka ajan asiakas ja palvelin sulkevat yhteyden, kun se vanhenee, ja asettaa myös HAProxyn toimintatilan. Meidän tapauksessamme kuormituksen tasapainotin toimii TCP-tilassa, eli se yksinkertaisesti lähettää TCP-paketteja analysoimatta niiden sisältöä.
Seuraavaksi lisäämme säännöt eri porttien yhteyksille. Esimerkiksi jos porttia 25 käytetään SMTP-yhteyksille ja postille, on järkevää välittää yhteydet siihen infrastruktuurissamme oleville MTA:ille. Jos yhteys on portissa 80, tämä on http-pyyntö, joka on välitettävä Zimbra Proxylle.
Portin 25 sääntö:
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-proxyPortin 465 sääntö:
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-proxyPortin 587 sääntö:
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-proxyPortin 80 sääntö:
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 checkPortin 443 sääntö:
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 checkHuomaa, että säännöissä TCP-pakettien välittämisestä MTA:lle niiden osoitteiden vieressä on parametri lähetä välityspalvelin. Tämä on tarpeen, jotta aiemmin Postfix-asetuksiin tekemiemme muutosten mukaisesti lähettäjän alkuperäinen IP-osoite lähetetään TCP-pakettien mukana.
Nyt kun kaikki tarvittavat muutokset on tehty HAProxyin, voit käynnistää palvelun uudelleen komennolla palvelun haproxy käynnistys uudelleen ja alkaa käyttää sitä.
Kaikissa Zextras Suiteen liittyvissä kysymyksissä voit ottaa yhteyttä Zextrasin edustajaan Ekaterina Triandafilidiin sähköpostitse katerina@zextras.com
Lähde: will.com
