Kusawazisha mzigo katika Toleo la Chanzo Huria la Zimbra kwa kutumia HAProxy

Moja ya kazi kuu wakati wa kujenga miundombinu mikubwa ya Zimbra OSE ni kusawazisha mzigo sahihi. Mbali na ukweli kwamba huongeza uvumilivu wa makosa ya huduma, bila kusawazisha mzigo haiwezekani kuhakikisha mwitikio sawa wa huduma kwa watumiaji wote. Ili kutatua tatizo hili, mizani ya mzigo hutumiwa - ufumbuzi wa programu na vifaa vinavyosambaza maombi kati ya seva. Miongoni mwao kuna za zamani kabisa, kama RoundRobin, ambayo hutuma kila ombi linalofuata kwa seva inayofuata kwenye orodha, na pia kuna zile za hali ya juu zaidi, kwa mfano HAProxy, ambayo hutumiwa sana katika miundombinu ya kompyuta yenye mzigo mkubwa kwa sababu ya a. idadi ya faida muhimu. Hebu tuangalie jinsi unavyoweza kufanya kusawazisha mzigo wa HAProxy na Zimbra OSE kufanya kazi pamoja.

Kusawazisha mzigo katika Toleo la Chanzo Huria la Zimbra kwa kutumia HAProxy

Kwa hiyo, kwa mujibu wa masharti ya kazi, tunapewa miundombinu ya Zimbra OSE, ambayo ina Wakala wa Zimbra mbili, seva mbili za LDAP na LDAP Replica, hifadhi nne za barua na masanduku ya barua 1000 kila moja na MTA tatu. Ikizingatiwa kuwa tunashughulika na seva ya barua, itapokea aina tatu za trafiki zinazohitaji kusawazisha: HTTP kwa kupakua mteja wa wavuti, pamoja na POP na SMTP kwa kutuma barua pepe. Katika kesi hii, trafiki ya HTTP itaenda kwa seva za Wakala wa Zimbra zilizo na anwani za IP 192.168.0.57 na 192.168.0.58, na trafiki ya SMTP itaenda kwa seva za MTA zilizo na anwani za IP 192.168.0.77 na 192.168.0.78.

Kama ilivyotajwa tayari, ili kuhakikisha kuwa maombi yanasambazwa sawasawa kati ya seva, tutatumia usawazishaji wa mzigo wa HAProxy, ambao utaendeshwa kwenye nodi ya ingress ya miundombinu ya Zimbra inayoendesha Ubuntu 18.04. Kufunga haproxy kwenye mfumo huu wa uendeshaji unafanywa kwa kutumia amri sudo apt-get install haproxy. Baada ya hii unahitaji katika faili /etc/default/haproxy kubadilisha parameter IMEWEZESHWA=0 juu ya IMEWEZESHWA=1. Sasa, ili kuhakikisha kuwa haproxy inafanya kazi, ingiza tu amri haproksi ya huduma. Ikiwa huduma hii inaendesha, hii itakuwa wazi kutoka kwa matokeo ya amri.

Moja ya hasara kuu za HAProxy ni kwamba kwa default haitumii anwani ya IP ya mteja wa kuunganisha, na kuibadilisha na yake mwenyewe. Hii inaweza kusababisha hali ambapo barua pepe zinazotumwa na washambuliaji haziwezi kutambuliwa na anwani ya IP ili kuiongeza kwenye orodha iliyoidhinishwa. Hata hivyo, suala hili linaweza kutatuliwa. Ili kufanya hivyo unahitaji kuhariri faili /opt/zimbra/common/conf/master.cf.in kwenye seva zilizo na Postfix na ongeza mistari ifuatayo kwake:

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

Kutokana na hili, tutafungua bandari 26, 466 na 588, ambazo zitapokea trafiki inayoingia kutoka kwa HAProxy. Baada ya faili kuhifadhiwa, unapaswa kuanzisha upya Postfix kwenye seva zote kwa kutumia amri ya kuanzisha upya zmmtactl.

Baada ya hayo, hebu tuanze kusanidi HAProxy. Ili kufanya hivyo, kwanza unda nakala ya hifadhi ya faili ya mipangilio cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak. Kisha fungua faili ya chanzo katika hariri ya maandishi /etc/haproxy/haproxy.cfg na anza kuongeza mipangilio muhimu kwake hatua kwa hatua. Kizuizi cha kwanza kitakuwa kinaongeza seva ambayo inachukua kumbukumbu, kuweka idadi ya juu inayoruhusiwa ya miunganisho ya wakati mmoja, na pia kubainisha jina na kikundi cha mtumiaji ambacho mchakato wa utekelezaji utakuwa.

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

Idadi ya viunganisho 5000 vya wakati mmoja ilionekana kwa sababu. Kwa kuwa tuna visanduku 4000 vya barua katika miundombinu yetu, tunahitaji kuzingatia uwezekano kwamba wote watafikia barua pepe zao za kazi kwa wakati mmoja. Kwa kuongeza, ni muhimu kuondoka hifadhi ndogo ikiwa idadi yao itaongezeka.

Sasa wacha tuongeze kizuizi na mipangilio chaguo-msingi:

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

Kizuizi hiki huweka muda wa juu wa kuisha kwa mteja na seva ili kufunga muunganisho wakati muda wake unaisha, na pia huweka hali ya uendeshaji ya HAProxy. Kwa upande wetu, usawazishaji wa mzigo hufanya kazi katika hali ya TCP, yaani, inasambaza pakiti za TCP bila kuchambua yaliyomo.

Ifuatayo tutaongeza sheria za viunganisho kwenye bandari mbalimbali. Kwa mfano, ikiwa port 25 inatumika kwa miunganisho na barua za SMTP, basi itakuwa na maana kusambaza miunganisho kwayo kwa MTA zinazopatikana katika miundombinu yetu. Ikiwa muunganisho uko kwenye bandari 80, basi hili ni ombi la http ambalo linahitaji kutumwa kwa Wakala wa Zimbra.

Sheria ya bandari 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

Sheria ya bandari 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

Sheria ya bandari 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

Sheria ya bandari 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

Sheria ya bandari 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

Tafadhali kumbuka kuwa katika sheria za kusambaza pakiti za TCP kwa MTA, karibu na anwani zao kuna parameter. wakala wa kutuma. Hii ni muhimu ili, kwa mujibu wa mabadiliko tuliyofanya awali kwa mipangilio ya Postfix, anwani ya awali ya IP ya mtumaji wake inatumwa pamoja na pakiti za TCP.

Sasa kwa kuwa mabadiliko yote muhimu yamefanywa kwa HAProxy, unaweza kuanzisha upya huduma kwa kutumia amri huduma ya haproxy inaanza upya na kuanza kuitumia.

Kwa maswali yote yanayohusiana na Zextras Suite, unaweza kuwasiliana na Mwakilishi wa Zextras Ekaterina Triandafilidi kwa barua pepe. [barua pepe inalindwa]

Chanzo: mapenzi.com

Kuongeza maoni