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

NjĂ« nga detyrat kryesore nĂ« ndĂ«rtimin e infrastrukturave tĂ« mĂ«dha Zimbra OSE Ă«shtĂ« balancimi i saktĂ« i ngarkesĂ«s. PavarĂ«sisht qĂ« kjo rrit qĂ«ndrueshmĂ«rinĂ« e shĂ«rbimit, pa balancimin e ngarkesĂ«s, Ă«shtĂ« e pamundur tĂ« sigurohet njĂ« pĂ«rgjigje e njĂ«jtĂ« pĂ«r tĂ« gjithĂ« pĂ«rdoruesit. PĂ«r tĂ« zgjidhur kĂ«tĂ« problem, pĂ«rdoren balancues ngarkese — zgjidhje softuerike dhe harduerike qĂ« riparashkallojnĂ« kĂ«rkesat midis serverĂ«ve. NdĂ«r ta ka disa qĂ« janĂ« mjaft primitive, si RoundRobin, i cili thjesht dĂ«rgon çdo kĂ«rkesĂ« tĂ« ardhshme tek serveri i ardhshĂ«m nĂ« listĂ«, dhe ka edhe mĂ« tĂ« avancuar, si HAProxy, i cili aplikohet gjerĂ«sisht nĂ« infrastrukturen e lartĂ« ngarkesore pĂ«r shkak tĂ« disa avantajheve tĂ« rĂ«ndĂ«sishme. Le tĂ« shohim se si mund tĂ« sigurojmĂ« bashkĂ«punimin midis balancuesit tĂ« ngarkesĂ«s HAProxy dhe Zimbra OSE.

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

Pra, sipas detyrës, kemi një infrastrukturë Zimbra OSE, e cila përfshin dy Zimbra Proxy, dy servera LDAP dhe një Replikë LDAP, katër depoemailesh me 1000 kuti postare në çdo njësi dhe tre MTA. Duke pasur parasysh se kemi të bëjmë me një server email, ai do të marrë tri llojeve të trafikut që kërkojnë balancim: HTTP për ngarkimin e klientit në web, si dhe POP dhe SMTP për dërgimin e emailit. Në këtë rast, trafiku HTTP do të shkojë në hostingut Zimbra Proxy me adresat IP 192.168.0.57 dhe 192.168.0.58, ndërsa trafiku SMTP do të shkojë në serverat MTA me adresat IP 192.168.0.77 dhe 192.168.0.78.

Siç u tha më parë, për të siguruar një shpërndarje të barabartë të kërkesave midis serverave, ne do të përdorim balancuesin e ngarkesës HAProxy, i cili do të funksionojë në nyjën hyrëse të infrastrukturës Zimbra nën Ubuntu 18.04. Instalimi i haproxy në këtë sistem të operimit bëhet përmes komandës sudo apt-get install haproxy. Pas kësaj, nevojitet që në skedarin /etc/default/haproxy të ndryshohet parametri ENABLED=0 në ENABLED=1. Tani, për të siguruar që haproxy po funksionon, mjafton të ndryshoni komandën service haproxy. Në rast se ky shërbim po funksionon, do të kuptohet nga rezultati i komandës.

Një nga mangësitë kryesore të HAProxy është se, në mënyrë default, ai nuk transmeton adresën IP të klientit që lidhet, duke e zëvendësuar atë me të tijën. Kjo mund të çojë në situata kur e-mailet e dërguara nga sulmuesit nuk mund të identifikohen nga adresën IP, për t'i shtuar ato në listën e zezë. Megjithatë, ky problem mund të zgjidhet. Për këtë, është e nevojshme të redaktohet skedari /opt/zimbra/common/conf/master.cf.in në serverat me Postfix dhe të shtohen në të 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

Me këtë, ne do të hapim portet 26, 466 dhe 588, të cilat do të pranojnë trafikun e ardhshëm nga HAProxy. Pasi skedarët të jenë ruajtur, duhet të rinisni Postfix në të gjitha serverat duke përdorur komandën zmmtactl restart.

Pas kësaj, do të kalojmë në konfigurimin e HAProxy. Fillimisht, do të krijojmë një kopje rezervë të skedarit me konfigurimet. cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak. Më pas do të hapim skedarin origjinal në një redaktues teksti /etc/haproxy/haproxy.cfg dhe do të fillojmë të shtojmë në të hapat e nevojshëm. Blloku i parë do të përfshijë shtimin e serverit për regjistrimin e log-eve, vendosjen e numrit maksimal të lidhjeve të njëkohshme, si dhe tregimin e emrit dhe grupit të përdoruesit për procesin ekzekutues.

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

Numri 5000 i lidhjeve të njëkohshme nuk është rastësor. Duke pasur parasysh se në infrastrukturën tonë ka 4000 kuti postare, është e nevojshme të parashikojmë mundësinë që të gjithë ata të hyjnë në email-in e tyre të punës në të njëjtën kohë. Për më tepër, është e domosdoshme të lëmë një rezervë të vogël në rast se numri i tyre rritet.

Tani do të shtojmë një bllok me konfigurime të paracaktuara:

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

Kyçet e maksimale të pritjes së klientit dhe serverit për të ndërprerë lidhjen pas skadimit, si dhe mënyra e funksionimit të HAProxy janë të përcaktuara në këtë bllok. Në rastin tonë, balancuesi i ngarkesës funksionon në modin TCP, pra thjesht transmeton pakot TCP pa analizuar përmbajtjen e tyre.

Më pas do të shtojmë rregulla për lidhjet në porte të ndryshme. Për shembull, nëse porta 25 përdoret për lidhjet SMTP dhe dërgimin e postës, ka kuptim të derivojmë lidhjet në të në MTA-të që kemi në infrastrukturën tonë. Nëse lidhja shkon në portin 80, atëherë kjo është një kërkesë http, e cila duhet të derivohet në 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

Ju lutemi vini re se në rregullat për dërgimin e pakove TCP te MTA, afër adresave të tyre qëndron parametri send-proxy. Kjo është e nevojshme në mënyrë që, në përputhje me ndryshimet e bëra më parë në konfigurimet e Postfix, së bashku me paketat TCP të dërgoheshin edhe adresa origjinale IP e dërguesit.

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

Për çdo pyetje lidhur me Zextras Suite, mund të kontaktoni përfaqësuesen e kompanisë «Zextras», Ekaterina Triandafiliidi në e-mail katerina@zextras.com

Burimi: habr.com

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster