Cydbwyso llwyth yn Zimbra Open-Source Edition gan ddefnyddio HAProxy

Un o'r prif dasgau wrth adeiladu seilweithiau Zimbra OSE ar raddfa fawr yw cydbwyso llwyth yn iawn. Yn ogystal Γ’'r ffaith ei fod yn cynyddu goddefgarwch bai'r gwasanaeth, heb gydbwyso llwyth mae'n amhosibl sicrhau'r un ymatebolrwydd i'r gwasanaeth i bob defnyddiwr. Er mwyn datrys y broblem hon, defnyddir cydbwyswyr llwyth - datrysiadau meddalwedd a chaledwedd sy'n ailddosbarthu ceisiadau rhwng gweinyddwyr. Yn eu plith mae rhai eithaf cyntefig, fel RoundRobin, sydd yn syml yn anfon pob cais dilynol i'r gweinydd nesaf yn y rhestr, ac mae yna rai mwy datblygedig hefyd, er enghraifft HAProxy, a ddefnyddir yn eang mewn seilweithiau cyfrifiadurol llwyth uchel oherwydd a nifer o fanteision sylweddol. Gadewch i ni edrych ar sut y gallwch chi wneud i'r cydbwysedd llwyth HAProxy a Zimbra OSE weithio gyda'i gilydd.

Cydbwyso llwyth yn Zimbra Open-Source Edition gan ddefnyddio HAProxy

Felly, yn Γ΄l telerau'r dasg, rhoddir seilwaith Zimbra OSE inni, sydd Γ’ dau weinydd Zimbra Proxy, dau weinyddwr LDAP a LDAP Replica, pedwar storfa bost gyda 1000 o flychau post yr un a thri MTA. O ystyried ein bod yn delio Γ’ gweinydd post, bydd yn derbyn tri math o draffig y mae angen ei gydbwyso: HTTP ar gyfer lawrlwytho'r cleient gwe, yn ogystal Γ’ POP a SMTP ar gyfer anfon e-bost. Yn yr achos hwn, bydd traffig HTTP yn mynd i weinyddion Zimbra Proxy gyda chyfeiriadau IP 192.168.0.57 a 192.168.0.58, a bydd traffig SMTP yn mynd i weinyddion MTA gyda chyfeiriadau IP 192.168.0.77 a 192.168.0.78.

Fel y soniwyd eisoes, er mwyn sicrhau bod ceisiadau'n cael eu dosbarthu'n gyfartal rhwng y gweinyddwyr, byddwn yn defnyddio'r balancer llwyth HAProxy, a fydd yn rhedeg ar nod mynediad seilwaith Zimbra sy'n rhedeg Ubuntu 18.04. Mae gosod haproxy ar y system weithredu hon yn cael ei wneud gan ddefnyddio'r gorchymyn sudo apt-get install haproxy. Ar Γ΄l hyn mae angen yn y ffeil /etc/default/haproxy newid paramedr GALLUOGWYD=0 ar GALLUOGWYD=1. Nawr, er mwyn sicrhau bod haproxy yn gweithio, rhowch y gorchymyn haproxy gwasanaeth. Os yw'r gwasanaeth hwn yn rhedeg, bydd hyn yn glir o allbwn y gorchymyn.

Un o brif anfanteision HAProxy yw nad yw'n trosglwyddo cyfeiriad IP y cleient cyswllt yn ddiofyn, gan roi ei gyfeiriad ei hun yn ei le. Gall hyn arwain at sefyllfaoedd lle na all negeseuon e-bost a anfonwyd gan ymosodwyr gael eu hadnabod yn Γ΄l cyfeiriad IP er mwyn ei ychwanegu at y rhestr ddu. Fodd bynnag, gellir datrys y mater hwn. I wneud hyn mae angen i chi olygu'r ffeil /opt/zimbra/common/conf/master.cf.in ar weinyddion gyda Postfix ac ychwanegwch y llinellau canlynol ato:

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

Oherwydd hyn, byddwn yn agor porthladdoedd 26, 466 a 588, a fydd yn derbyn traffig sy'n dod i mewn gan HAProxy. Ar Γ΄l i'r ffeiliau gael eu cadw, dylech ailgychwyn Postfix ar bob gweinydd gan ddefnyddio'r gorchymyn ailgychwyn zmmtactl.

Ar Γ΄l hynny, gadewch i ni ddechrau sefydlu HAProxy. I wneud hyn, yn gyntaf creu copi wrth gefn o'r ffeil gosodiadau cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak. Yna agorwch y ffeil ffynhonnell mewn golygydd testun /etc/haproxy/haproxy.cfg a dechrau ychwanegu'r gosodiadau angenrheidiol ato gam wrth gam. Bydd y bloc cyntaf yn ychwanegu gweinydd sy'n cymryd logiau, gan osod y nifer uchaf a ganiateir o gysylltiadau cydamserol, yn ogystal Γ’ nodi enw a grΕ΅p y defnyddiwr y bydd y broses weithredu yn perthyn iddo.

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

Ymddangosodd y ffigwr o 5000 o gysylltiadau cydamserol am reswm. Gan fod gennym 4000 o flychau post yn ein seilwaith, mae angen inni ystyried y posibilrwydd y byddant i gyd yn cyrchu eu e-bost gwaith ar yr un pryd. Yn ogystal, mae angen gadael cronfa wrth gefn fach rhag ofn y bydd eu nifer yn cynyddu.

Nawr, gadewch i ni ychwanegu bloc gyda gosodiadau diofyn:

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

Mae'r bloc hwn yn gosod yr amser terfyn uchaf i'r cleient a'r gweinydd gau'r cysylltiad pan ddaw i ben, a hefyd yn gosod y modd gweithredu HAProxy. Yn ein hachos ni, mae'r cydbwysedd llwyth yn gweithredu yn y modd TCP, hynny yw, yn syml, mae'n trosglwyddo pecynnau TCP heb ddadansoddi eu cynnwys.

Nesaf byddwn yn ychwanegu rheolau ar gyfer cysylltiadau ar wahanol borthladdoedd. Er enghraifft, os defnyddir porthladd 25 ar gyfer cysylltiadau SMTP a phost, yna mae'n gwneud synnwyr anfon cysylltiadau ato i'r MTAs sydd ar gael yn ein seilwaith. Os yw'r cysylltiad ar borthladd 80, yna mae hwn yn gais http y mae angen ei anfon ymlaen at Zimbra Proxy.

Rheol ar gyfer porthladd 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

Rheol ar gyfer porthladd 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

Rheol ar gyfer porthladd 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

Rheol ar gyfer porthladd 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

Rheol ar gyfer porthladd 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

Sylwch, yn y rheolau ar gyfer anfon pecynnau TCP ymlaen i'r MTA, wrth ymyl eu cyfeiriadau mae paramedr anfon-procsi. Mae hyn yn angenrheidiol er mwyn, yn unol Γ’'r newidiadau a wnaethom yn gynharach i'r gosodiadau Postfix, fod cyfeiriad IP gwreiddiol ei anfonwr yn cael ei anfon ynghyd Γ’ phecynnau TCP.

Nawr bod yr holl newidiadau angenrheidiol wedi'u gwneud i HAProxy, gallwch chi ailgychwyn y gwasanaeth gan ddefnyddio'r gorchymyn ailgychwyn gwasanaeth haproxy a dechrau ei ddefnyddio.

Ar gyfer pob cwestiwn sy'n ymwneud Γ’ Zextras Suite, gallwch gysylltu Γ’ Chynrychiolydd Zextras Ekaterina Triandafilidi trwy e-bost [e-bost wedi'i warchod]

Ffynhonnell: hab.com

Ychwanegu sylw