Belaaschtung an der Zimbra Open-Source Edition mat HAProxy

Eng vun den Haaptaufgaben beim Bau vun enger grousser Zimbra OSE Infrastruktur ass déi richteg Laaschtbalancéierung. Zousätzlech zu der Tatsaach datt et d'Fehlertoleranz vum Service erhéicht, ouni Belaaschtung ass et onméiglech déi selwecht Reaktiounsfäegkeet vum Service fir all Benotzer ze garantéieren. Fir dëse Problem ze léisen, gi Lastbalancer benotzt - Software an Hardwareléisungen déi Ufroen tëscht Serveren ëmverdeelen. Dorënner ginn et zimlech primitiv, wéi RoundRobin, déi einfach all uschléissend Ufro un den nächste Server an der Lëscht schéckt, an et ginn och méi fortgeschratt, zum Beispill HAProxy, dee vill an héichbelaaschte Recheninfrastrukturen benotzt gëtt wéinst engem Zuel vu bedeitende Virdeeler. Loosst eis kucken wéi Dir den HAProxy Loadbalancer an den Zimbra OSE zesumme maache kënnt.

Belaaschtung an der Zimbra Open-Source Edition mat HAProxy

Also, no de Bedéngungen vun der Aufgab, kréie mir d'Zimbra OSE Infrastruktur, déi zwee Zimbra Proxy, zwee LDAP an LDAP Replica Serveren huet, véier Mailspeicher mat 1000 Mailboxen all an dräi MTAs. Gitt datt mir mat engem E-Mail-Server ze dinn hunn, ginn et dräi Zorte vu Traffic déi balancéiere brauchen: HTTP fir de Webclient erofzelueden, a POP an SMTP fir E-Mail ze schécken. An dësem Fall geet den HTTP-Traffic op Zimbra Proxy-Server mat IP Adressen 192.168.0.57 an 192.168.0.58, an SMTP-Traffic geet op MTA-Server mat IP Adressen 192.168.0.77 an 192.168.0.78.

Wéi schonn erwähnt, fir sécherzestellen datt Ufroe gläichméisseg tëscht de Serveren verdeelt ginn, benotze mir den HAProxy Loadbalancer, deen op der Zimbra Infrastruktur Ingress Node lafen Ubuntu 18.04. D'Installatioun vun Haproxy op dësem Betribssystem gëtt mam Kommando gemaach sudo apt-get install haproxy. No dëser braucht Dir am Fichier /etc/default/haproxy änneren Parameter AKTIVÉIERT = 0 op AKTIVÉIERT = 1. Elo, fir sécherzestellen datt Haproxy funktionnéiert, gitt just de Kommando Service haproxy. Wann dëse Service leeft, ass dëst kloer aus dem Output vum Kommando.

Ee vun den Haapt Nodeeler vun HAProxy ass, datt Par défaut net d'IP Adress vun der Verbindung Client iwwerdréit, ersetzt se duerch seng eege. Dëst kann zu Situatioune féieren, wou E-Mailen, déi vun Ugräifer geschéckt ginn, net duerch IP Adress identifizéiert kënne ginn, fir se op d'Schwaarzlëscht ze addéieren. Allerdéngs kann dëst Thema geléist ginn. Fir dëst ze maachen, musst Dir d'Datei änneren /opt/zimbra/common/conf/master.cf.in op Serveren mat Postfix a füügt déi folgend Zeilen derbäi:

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

Dofir wäerte mir d'Ports 26, 466 an 588 opmaachen, déi erakommen Traffic vun HAProxy kréien. Nodeems d'Fichier'en gespäichert sinn, sollt Dir Postfix op all Server nei starten mat dem zmmtactl Restart Kommando.

Duerno fänke mer HAProxy opzestellen. Fir dëst ze maachen, erstellt als éischt eng Backupkopie vun der Astellungsdatei cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak. Da öffnen d'Quelldatei an engem Texteditor /etc/haproxy/haproxy.cfg a fänkt un déi néideg Astellunge Schrëtt fir Schrëtt derbäi. Den éischte Block wäert e Server bäidroen deen d'Logbicher hëlt, déi maximal erlaabt Zuel vu simultane Verbindungen festleeën, souwéi den Numm a Grupp vum Benotzer spezifizéieren, zu deem den Ausféierungsprozess gehéiert.

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

D'Figur vu 5000 simultan Verbindungen ass aus engem Grond opgetaucht. Well mir 4000 Mailboxen an eiser Infrastruktur hunn, musse mir d'Méiglechkeet berücksichtegen datt se all gläichzäiteg op hir Aarbechts-E-Mail kommen. Zousätzlech ass et néideg eng kleng Reserve ze verloossen am Fall wou hir Zuel eropgeet.

Loosst eis elo e Block mat Standardastellungen derbäi:

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

Dëse Block setzt de maximalen Timeout fir de Client an de Server fir d'Verbindung zouzemaachen wann se ofleeft, a setzt och den Operatiounsmodus vun HAProxy. An eisem Fall funktionnéiert de Lastbalancer am TCP Modus, dat heescht, et iwwerdréit einfach TCP Päckchen ouni hiren Inhalt ze analyséieren.

Als nächst wäerte mir Regele fir Verbindungen op verschiddene Ports addéieren. Zum Beispill, wann den Hafen 25 fir SMTP Verbindungen a Mail benotzt gëtt, da mécht et Sënn fir Verbindungen dohinner op d'MTAs, déi an eiser Infrastruktur verfügbar sinn, weiderzebréngen. Wann d'Verbindung um Hafen 80 ass, dann ass dëst eng http-Ufro déi op Zimbra Proxy weidergeleet muss ginn.

Regel fir Port 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

Regel fir Port 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

Regel fir Port 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

Regel fir Port 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

Regel fir Port 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

Notéiert w.e.g. datt an de Regele fir TCP-Päckchen op d'MTA weiderginn, nieft hiren Adressen gëtt et e Parameter schécken-Proxy. Dëst ass néideg fir datt, am Aklang mat den Ännerungen, déi mir virdru gemaach hunn an de Postfix-Astellungen, déi ursprénglech IP Adress vu sengem Sender zesumme mat TCP Päck geschéckt gëtt.

Elo datt all déi néideg Ännerungen op HAProxy gemaach goufen, kënnt Dir de Service mat dem Kommando nei starten Service haproxy Restart an ufänken et ze benotzen.

Fir all Froen am Zesummenhang mat Zextras Suite, kënnt Dir d'Zextras Vertrieder Ekaterina Triandafilidi per E-Mail kontaktéieren [Email geschützt]

Source: will.com

Setzt e Commentaire