Karga orekatzea Zimbra Open-Source Edition-n HAProxy erabiliz

Eskala handiko Zimbra OSE azpiegiturak eraikitzeko zeregin nagusietako bat karga orekatzeko egokia da. Zerbitzuaren akatsen tolerantzia areagotzeaz gain, karga orekatu gabe ezinezkoa da zerbitzuaren erantzun berbera bermatzea erabiltzaile guztientzat. Arazo hau konpontzeko, karga-orekatzaileak erabiltzen dira, zerbitzarien artean eskaerak birbanatzen dituzten software eta hardware irtenbideak. Horien artean badaude nahiko primitiboak, RoundRobin bezalakoak, ondorengo eskaera bakoitza zerrendako hurrengo zerbitzariari bidaltzen diona, eta aurreratuagoak ere badaude, adibidez, HAProxy, karga handiko konputazio azpiegituretan asko erabiltzen dena. abantaila esanguratsuen kopurua. Ikus dezagun nola egin dezakezun HAProxy karga-orekatzailea eta Zimbra OSE elkarrekin lan egitea.

Karga orekatzea Zimbra Open-Source Edition-n HAProxy erabiliz

Beraz, zereginaren baldintzen arabera, Zimbra OSE azpiegitura ematen zaigu, bi Zimbra Proxy, bi LDAP eta LDAP Replica zerbitzari, lau posta biltegiratze bakoitzak 1000 postontzi dituena eta hiru MTA. Posta zerbitzari baten aurrean gaudela kontuan hartuta, orekatu beharreko hiru trafiko mota jasoko ditu: HTTP web bezeroa deskargatzeko, baita POP eta SMTP posta elektronikoa bidaltzeko. Kasu honetan, HTTP trafikoa 192.168.0.57 eta 192.168.0.58 IP helbideak dituzten Zimbra Proxy zerbitzarietara joango da, eta SMTP trafikoa 192.168.0.77 eta 192.168.0.78 IP helbideak dituzten MTA zerbitzarietara.

Esan bezala, eskaerak zerbitzarien artean uniformeki banatzen direla ziurtatzeko, HAProxy karga-orekatzailea erabiliko dugu, Ubuntu 18.04 exekutatzen duen Zimbra azpiegiturako sarrera-nodoan exekutatuko dena. Sistema eragile honetan haproxy instalatzea komandoa erabiliz egiten da sudo apt-get install haproxy. Horren ondoren fitxategian behar duzu /etc/default/haproxy aldatu parametroa GAITATU=0 on GAITATU=1. Orain, haproxy funtzionatzen ari dela ziurtatzeko, sartu komandoa zerbitzu haproxy. Zerbitzu hau exekutatzen ari bada, hori argituko da komandoaren irteeratik.

HAProxyren desabantaila nagusietako bat da lehenespenez ez duela konektatzen den bezeroaren IP helbidea transmititzen, berearekin ordezkatuz. Horrek erasotzaileek bidalitako mezu elektronikoak IP helbidearen bidez identifikatu ezin diren egoerak sor ditzake, zerrenda beltzean gehitzeko. Hala ere, arazo hau konpondu daiteke. Horretarako fitxategia editatu behar duzu /opt/zimbra/common/conf/master.cf.in Postfix duten zerbitzarietan eta gehitu lerro hauek:

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

Hori dela eta, 26, 466 eta 588 portuak irekiko ditugu, HAProxy-ren sarrerako trafikoa jasoko dutenak. Fitxategiak gorde ondoren, Postfix berrabiarazi beharko zenuke zerbitzari guztietan zmmtactl berrabiarazi komandoa erabiliz.

Horren ostean, has gaitezen HAProxy konfiguratzen. Horretarako, lehenik eta behin, sortu ezarpenen fitxategiaren babeskopia cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak. Ondoren, ireki iturburu-fitxategia testu-editore batean /etc/haproxy/haproxy.cfg eta hasi urratsez urrats beharrezko ezarpenak gehitzen. Lehenengo blokean erregistroak hartzen dituen zerbitzari bat gehituko da, aldibereko konexio-kopuru maximoa ezarriz, baita exekutatzeko prozesua izango den erabiltzailearen izena eta taldea zehaztuz ere.

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

Aldi bereko 5000 konexioren zifra arrazoi bategatik agertu zen. Gure azpiegituran 4000 postontzi ditugunez, guztiak aldi berean laneko posta elektronikora sartzeko aukera kontuan hartu behar dugu. Horrez gain, erreserba txiki bat utzi behar da haien kopurua handitzen bada.

Orain gehi dezagun bloke bat ezarpen lehenetsiekin:

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

Bloke honek bezeroak eta zerbitzariak konexioa amaitzean ixteko gehienezko denbora-muga ezartzen du, eta HAProxy-ren funtzionamendu modua ere ezartzen du. Gure kasuan, karga-balantzaileak TCP moduan funtzionatzen du, hau da, TCP paketeak transmititzen ditu, haien edukia aztertu gabe.

Jarraian, hainbat ataketako konexioetarako arauak gehituko ditugu. Adibidez, 25 ataka SMTP konexioetarako eta postarako erabiltzen bada, zentzuzkoa da harekin konexioak gure azpiegituran dauden MTAetara birbidaltzea. Konexioa 80 atakan badago, Zimbra Proxy-ra birbidali behar den http eskaera da.

25. porturako araua:

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

465. porturako araua:

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

587. porturako araua:

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

80. porturako araua:

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

443. porturako araua:

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

Kontuan izan TCP paketeak MTAra bidaltzeko arauetan, haien helbideen ondoan parametro bat dagoela. bidali-proxy. Beharrezkoa da Postfix ezarpenetan lehenago egin ditugun aldaketen arabera, bere igorlearen jatorrizko IP helbidea TCP paketeekin batera bidaltzeko.

Orain HAProxy-n beharrezko aldaketa guztiak eginda, zerbitzua berrabiarazi dezakezu komandoa erabiliz zerbitzu haproxy berrabiarazi eta hasi erabiltzen.

Zextras Suite-rekin lotutako galdera guztietarako, Zextras Ekaterina Triandafilidi-ko ordezkariarekin harremanetan jar zaitezke posta elektronikoz [posta elektroniko bidez babestua]

Iturria: www.habr.com

Gehitu iruzkin berria