Hleðslujöfnun í Zimbra Open-Source Edition með HAProxy

Eitt helsta verkefnið þegar byggt er á stórum Zimbra OSE innviðum er rétt álagsjafnvægi. Auk þess að það eykur bilanaþol þjónustunnar, án álagsjafnvægis er ómögulegt að tryggja sömu svörun þjónustunnar fyrir alla notendur. Til að leysa þetta vandamál eru notaðir álagsjafnarar - hugbúnaðar- og vélbúnaðarlausnir sem dreifa beiðnum á milli netþjóna. Meðal þeirra eru frekar frumstæður, eins og RoundRobin, sem einfaldlega sendir hverja síðari beiðni á næsta netþjón á listanum, og það eru líka fullkomnari, til dæmis HAProxy, sem er mikið notað í háhleðslu tölvuinnviðum vegna a. fjölda verulegra kosta. Við skulum skoða hvernig þú getur látið HAProxy hleðslujafnara og Zimbra OSE vinna saman.

Hleðslujöfnun í Zimbra Open-Source Edition með HAProxy

Svo, samkvæmt skilmálum verkefnisins, fáum við Zimbra OSE innviði, sem hefur tvo Zimbra Proxy, tvo LDAP og LDAP Replica netþjóna, fjórar póstgeymslur með 1000 pósthólf hvor og þrjá MTA. Í ljósi þess að við erum að fást við póstþjón mun hann fá þrjár tegundir af umferð sem þarfnast jafnvægis: HTTP til að hlaða niður vefþjóninum, auk POP og SMTP til að senda tölvupóst. Í þessu tilviki mun HTTP umferð fara á Zimbra Proxy netþjóna með IP vistföngum 192.168.0.57 og 192.168.0.58 og SMTP umferð mun fara á MTA netþjóna með IP vistföng 192.168.0.77 og 192.168.0.78.

Eins og áður hefur komið fram, til að tryggja að beiðnum sé dreift jafnt á milli netþjóna, munum við nota HAProxy hleðslujafnvægi, sem mun keyra á Zimbra innviðainngangshnút sem keyrir Ubuntu 18.04. Uppsetning haproxy á þessu stýrikerfi er gert með skipuninni sudo apt-get install haproxy. Eftir þetta þarftu í skránni /etc/default/haproxy breyta breytu Kveikt=0 á Kveikt=1. Nú, til að ganga úr skugga um að haproxy virki, sláðu bara inn skipunina þjónustuhaproxy. Ef þessi þjónusta er í gangi mun þetta vera ljóst af úttak skipunarinnar.

Einn helsti ókosturinn við HAProxy er að sjálfgefið sendir það ekki IP-tölu viðskiptavinarins sem tengist og kemur í staðinn fyrir sína eigin. Þetta getur leitt til aðstæðna þar sem ekki er hægt að auðkenna tölvupóst sem árásarmenn senda með IP-tölu til að bæta því á svarta listann. Hins vegar er hægt að leysa þetta mál. Til að gera þetta þarftu að breyta skránni /opt/zimbra/common/conf/master.cf.in á netþjónum með Postfix og bættu eftirfarandi línum við það:

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

Vegna þessa munum við opna höfn 26, 466 og 588, sem munu taka á móti umferð frá HAProxy. Eftir að skrárnar hafa verið vistaðar ættirðu að endurræsa Postfix á öllum netþjónum með því að nota zmmtactl restart skipunina.

Eftir það skulum við byrja að setja upp HAProxy. Til að gera þetta skaltu fyrst búa til öryggisafrit af stillingaskránni cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak. Opnaðu síðan frumskrána í textaritli /etc/haproxy/haproxy.cfg og byrjaðu að bæta nauðsynlegum stillingum við það skref fyrir skref. Fyrsta blokkin mun vera að bæta við netþjóni sem tekur við annálum, stilla hámarks leyfilegan fjölda samtímis tenginga, auk þess að tilgreina nafn og hóp notandans sem framkvæmdarferlið mun tilheyra.

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

Talan um 5000 samtímis tengingar birtist af ástæðu. Þar sem við erum með 4000 pósthólf í innviðum okkar þurfum við að íhuga möguleikann á því að þeir fái allir aðgang að vinnupóstinum sínum á sama tíma. Að auki er nauðsynlegt að skilja eftir lítinn varasjóð ef þeim fjölgar.

Nú skulum við bæta við blokk með sjálfgefnum stillingum:

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

Þessi blokk setur hámarkstíma fyrir biðlara og netþjón til að loka tengingunni þegar hún rennur út og stillir einnig rekstrarham HAProxy. Í okkar tilviki starfar álagsjafnari í TCP ham, það er að segja að hann sendir einfaldlega TCP pakka án þess að greina innihald þeirra.

Næst munum við bæta við reglum um tengingar á ýmsum höfnum. Til dæmis, ef höfn 25 er notuð fyrir SMTP tengingar og póst, þá er skynsamlegt að senda tengingar á það til MTA sem eru tiltækar í innviðum okkar. Ef tengingin er á port 80, þá er þetta http beiðni sem þarf að senda til Zimbra Proxy.

Regla fyrir höfn 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

Regla fyrir höfn 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

Regla fyrir höfn 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

Regla fyrir höfn 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

Regla fyrir höfn 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

Vinsamlegast athugaðu að í reglum um að senda TCP pakka til MTA, við hliðina á vistföngum þeirra er færibreyta senda-umboð. Þetta er nauðsynlegt til að, í samræmi við breytingarnar sem við gerðum áðan á Postfix stillingunum, sé upprunalega IP-tala sendanda send ásamt TCP-pökkum.

Nú þegar allar nauðsynlegar breytingar hafa verið gerðar á HAProxy geturðu endurræst þjónustuna með skipuninni endurræsa haproxy þjónustu og byrjaðu að nota það.

Fyrir allar spurningar sem tengjast Zextras Suite geturðu haft samband við fulltrúa Zextras Ekaterina Triandafilidi með tölvupósti [netvarið]

Heimild: www.habr.com

Bæta við athugasemd