Balancimi i ngarkesës në Zimbra Open-Source Edition me ndihmën e HAProxy

NjĂ« nga detyrat kryesore gjatĂ« ndĂ«rtimit tĂ« infrastrukturave tĂ« mĂ«dha tĂ« Zimbra OSE Ă«shtĂ« balancimi i duhur i ngarkesĂ«s. PĂ«rveç se rrit qĂ«ndrueshmĂ«rinĂ« e shĂ«rbimit, pa balancim tĂ« ngarkesĂ«s nuk Ă«shtĂ« e mundur tĂ« sigurohet njĂ« pĂ«rgjigje e barabartĂ« pĂ«r tĂ« gjithĂ« pĂ«rdoruesit. PĂ«r tĂ« zgjidhur kĂ«tĂ« problem, pĂ«rdoren balancues tĂ« ngarkesĂ«s — zgjidhje softuerike dhe harduerike qĂ« shpĂ«rndajnĂ« kĂ«rkesat midis serverĂ«ve. Disa prej tyre janĂ« mjaft primitive, si RoundRobin, i cili thjesht i drejton çdo kĂ«rkesĂ« tĂ« ardhshme serverit tĂ« ardhshĂ«m nĂ« listĂ«, ndĂ«rsa tĂ« tjerĂ« janĂ« mĂ« tĂ« avancuar, si HAProxy, i cili pĂ«rdoret gjerĂ«sisht nĂ« infrastrukturen e lartĂ« tĂ« ngarkesĂ«s pĂ«r shkak tĂ« disa pĂ«rfitimeve tĂ« rĂ«ndĂ«sishme. Le tĂ« shohim se si mund t’i japim mundĂ«si bashkĂ«punimit tĂ« balancuesit tĂ« ngarkesĂ«s HAProxy dhe Zimbra OSE.

Balancimi i ngarkesës në Zimbra Open-Source Edition me ndihmën e HAProxy

Pra, sipas kushteve të detyrës, ne kemi një infrastrukturë Zimbra OSE, në të cilën ka dy Zimbra Proxy, dy serverë LDAP dhe një replika LDAP, katër depo postare me 1000 llogari postare në secilën dhe tri MTA. Duke marrë parasysh se kemi të bëjmë me një server postash, është e nevojshme që të balancohet tre lloje trafiku që kanë nevojë për balancim: HTTP për ngarkimin e klientit të uebit, si dhe POP dhe SMTP për dërgimin e postës elektronike. Në këtë rast, trafiku HTTP do të drejtohet në serverët Zimbra Proxy me adresat IP 192.168.0.57 dhe 192.168.0.58, ndërsa trafiku SMTP do të drejtohet në serverët MTA me adresat IP 192.168.0.77 dhe 192.168.0.78.

Siç është përmendur tashmë, për të siguruar shpërndarjen e barabartë të kërkesave midis serverëve, ne do të përdorim balancuesin e ngarkesës HAProxy, i cili do të punojë në nyjën hyrëse të infrastrukturës Zimbra nën menaxhimin e Ubuntu 18.04. Instalimi i haproxy në këtë sistem operativ bëhet me komandën sudo apt-get install haproxy. Pas kësaj, është e nevojshme që në skedarin /etc/default/haproxy të ndryshoni parametrin ENABLED=0 në ENABLED=1. Tani, për t'u siguruar që haproxy është duke punuar, mjafton të jepni komandën service haproxy. Në rast se ky shërbim është në punë, do të kuptohet nga dalja e komandës.

Një nga dobësitë kryesore të HAProxy është se, sipas parazgjedhjes, ai nuk transmeton adresën IP të klientit të lidhur, duke e zëvendësuar me të vetën. Kjo mund të çojë në situata ku shkresat e dërguara nga hakerët nuk mund të identifikohen. adresë IP, për ta shtuar atë në listën e zezë. Megjithatë, ky problem mund të zgjidhet. Për këtë, nevojitet të redaktohet skedari /opt/zimbra/common/conf/master.cf.in në serverat me Postfix dhe të shtohen rreshtat e mëposhtëm:

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

Kështu do të hapim portet 26, 466 dhe 588, të cilat do të pranojnë trafik të ardhshëm nga HAProxy. Pasi skedarët të ruhen, duhet të rindezish Postfix në të gjitha serverat me komandën zmmtactl restart.

Pas kësaj, do të fillojmë me konfigurimin e HAProxy. Për këtë, së pari do të krijojmë një kopje rezervë të skedarit me cilësimet cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak. Pastaj do të hapim skedarin origjinal në një redaktues teksti /etc/haproxy/haproxy.cfg dhe do të fillojmë të shtojmë në të cilësimet e nevojshme hap pas hapi. Blloku i parë do të jetë shtimi i serverit që regjistron log-et, vendosja e numrit maksimal të lidhjeve të lejuara gjithnjë, si dhe përcaktimi i emrit dhe grupit të përdoruesit, të cilit do t'i përkasë procesi ekzekutues.

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

Numri 5000 i lidhjeve të ushtrisë nuk është rastësor. Duke pasur parasysh se në infrastrukturën tonë ka 4000 kuti postare, është e nevojshme të parashikohet mundësia që të gjithë ato të hyjnë njëkohësisht në postën e tyre të punës. Për më tepër, duhet të lëhet një rezervë e vogël për rastin kur numri i tyre të rritet.

Tani, do të shtojmë një bllok me cilësimet e parazgjedhura:

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

Në këtë bllok, vendosim kohën maksimale të pritjes për klientin dhe serverin, për të ndërprerë lidhjen nëse siç kalon, si dhe vendosim modalitetin e funksionimit të HAProxy. Në rastin tonë, balancuesi i ngarkesës operon në modalitetin TCP, domethënë thjesht transferton paketat TCP pa analizuar përmbajtjen e tyre.

Më tej, ne do të shtojmë rregulla për lidhjet në porta të ndryshme. Për shembull, nëse porta 25 përdoret për lidhjet SMTP dhe transferimin e postës, ka kuptim që të drejtojmë lidhjet në të në MTA-të që kemi në infrastrukturën tonë. Nëse lidhja shkon në portin 80, atëherë ky është një kërkesë http, e cila duhet të dërgohet drejt Zimbra Proxy.

Rregulli për portin 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

Rregulli për portin 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

Rregulli për portin 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

Rregulli për portin 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

Rregulli për portin 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

Vini re se në rregullat për dërgimin e paketimeve TCP drejt MTA-ve, pranë adresave të tyre qëndron parametri send-proxy. Kjo është e nevojshme që, për t'iu përmbajtur ndryshimeve të bëra më parë në cilësimet e Postfix-it, së bashku me paketat TCP të dërgohet edhe adresa origjinale IP e dërguesit.

Tani, kur janë bërë të gjitha ndryshimet e nevojshme në HAProxy, mund të riaktivizoni shërbimin me komandën service haproxy restart dhe të filloni ta përdorni atë.

Për të gjitha pyetjet që lidhen me Zextras Suite mund të kontaktoni Përfaqësuesin e kompanisë "Zextras", Ekaterina Triandafiliidi në email katerina@zextras.com

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster