Lasbalansering in Zimbra Open-Source Edition met HAProxy

Een van die hooftake wanneer grootskaalse Zimbra OSE-infrastruktuur gebou word, is behoorlike lasbalansering. Benewens die feit dat dit die fouttoleransie van die diens verhoog, is dit sonder lasbalansering onmoontlik om dieselfde responsiwiteit van die diens vir alle gebruikers te verseker. Om hierdie probleem op te los, word lasbalanseerders gebruik - sagteware- en hardeware-oplossings wat versoeke tussen bedieners herverdeel. Onder hulle is daar nogal primitiewes, soos RoundRobin, wat elke daaropvolgende versoek eenvoudig na die volgende bediener in die lys stuur, en daar is ook meer gevorderdes, byvoorbeeld HAProxy, wat wyd gebruik word in hoë-lading rekenaarinfrastruktuur as gevolg van 'n aantal beduidende voordele. Kom ons kyk hoe jy die HAProxy load balancer en Zimbra OSE kan laat saamwerk.

Lasbalansering in Zimbra Open-Source Edition met HAProxy

Dus, volgens die bepalings van die taak, kry ons die Zimbra OSE-infrastruktuur, wat twee Zimbra Proxy-, twee LDAP- en LDAP Replica-bedieners, vier posbergings met 1000 192.168.0.57 posbusse elk en drie MTA's het. Aangesien ons met 'n e-posbediener te doen het, sal dit drie soorte verkeer ontvang wat balansering benodig: HTTP vir die aflaai van die webkliënt, sowel as POP en SMTP vir die stuur van e-pos. In hierdie geval sal HTTP-verkeer na Zimbra Proxy-bedieners met IP-adresse 192.168.0.58 en 192.168.0.77 gaan, en SMTP-verkeer sal na MTA-bedieners met IP-adresse 192.168.0.78 en XNUMX gaan.

Soos reeds genoem, om te verseker dat versoeke eweredig tussen die bedieners versprei word, sal ons die HAProxy load balancer gebruik, wat sal loop op die Zimbra-infrastruktuur-ingangnodus wat Ubuntu 18.04 gebruik. Die installering van haproxy op hierdie bedryfstelsel word gedoen met behulp van die opdrag sudo apt-get install haproxy. Na hierdie wat jy nodig het in die lêer /etc/default/haproxy verander parameter GEAKTIVEERD=0 op GEAKTIVEERD=1. Nou, om seker te maak dat haproxy werk, voer net die opdrag in diens haproxy. As hierdie diens loop, sal dit duidelik wees uit die uitvoer van die opdrag.

Een van die belangrikste nadele van HAProxy is dat dit by verstek nie die IP-adres van die koppelkliënt oordra nie en dit met sy eie vervang. Dit kan lei tot situasies waar e-posse wat deur aanvallers gestuur word nie deur IP-adres geïdentifiseer kan word om dit by die swartlys te voeg nie. Hierdie probleem kan egter opgelos word. Om dit te doen, moet jy die lêer wysig /opt/zimbra/common/conf/master.cf.in op bedieners met Postfix en voeg die volgende reëls daarby:

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

As gevolg hiervan sal ons poorte 26, 466 en 588 oopmaak, wat inkomende verkeer van HAProxy sal ontvang. Nadat die lêers gestoor is, moet u Postfix op alle bedieners herbegin deur die zmmtactl herstart-opdrag te gebruik.

Kom ons begin daarna HAProxy opstel. Om dit te doen, skep eers 'n rugsteunkopie van die instellingslêer cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak. Maak dan die bronlêer in 'n teksredigeerder oop /etc/haproxy/haproxy.cfg en begin stap vir stap die nodige instellings daarby voeg. Die eerste blok sal 'n bediener byvoeg wat logs neem, die maksimum toegelate aantal gelyktydige verbindings stel, asook die naam en groep van die gebruiker aan wie die uitvoeringsproses behoort, spesifiseer.

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

Die syfer van 5000 4000 gelyktydige verbindings het vir 'n rede verskyn. Aangesien ons XNUMX XNUMX posbusse in ons infrastruktuur het, moet ons die moontlikheid oorweeg dat hulle almal terselfdertyd toegang tot hul werk-e-pos sal kry. Daarbenewens is dit nodig om 'n klein reserwe te verlaat in geval hul getal toeneem.

Kom ons voeg nou 'n blok met verstekinstellings by:

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

Hierdie blok stel die maksimum uitteltyd vir die kliënt en bediener om die verbinding te sluit wanneer dit verval, en stel ook die bedryfsmodus van HAProxy in. In ons geval werk die lasbalanseerder in TCP-modus, dit wil sê, dit stuur eenvoudig TCP-pakkies sonder om die inhoud daarvan te ontleed.

Volgende sal ons reëls vir verbindings op verskeie poorte byvoeg. Byvoorbeeld, as poort 25 vir SMTP-verbindings en pos gebruik word, is dit sinvol om verbindings daarna te stuur na die MTA's wat in ons infrastruktuur beskikbaar is. As die verbinding op poort 80 is, dan is dit 'n http-versoek wat na Zimbra Proxy gestuur moet word.

Reël vir poort 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-proxy

Reël vir poort 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-proxy

Reël vir poort 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-proxy

Reël vir poort 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 check

Reël vir poort 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 check

Neem asseblief kennis dat in die reëls vir die aanstuur van TCP-pakkies na die MTA, daar langs hul adresse 'n parameter is stuur-volmag. Dit is nodig sodat, in ooreenstemming met die veranderinge wat ons vroeër aan die Postfix-instellings aangebring het, die oorspronklike IP-adres van die sender saam met TCP-pakkies gestuur word.

Noudat al die nodige veranderinge aan HAProxy aangebring is, kan u die diens herbegin met die opdrag diens haproxy herbegin en begin dit gebruik.

Vir alle vrae wat verband hou met Zextras Suite, kan jy die verteenwoordiger van Zextras Ekaterina Triandafilidi per e-pos kontak [e-pos beskerm]

Bron: will.com

Voeg 'n opmerking