Balancing beban dina Zimbra Open-Source Edition nganggo HAProxy

Salah sahiji tugas utama nalika ngawangun infrastruktur Zimbra OSE skala ageung nyaéta kasaimbangan beban anu leres. Salian kanyataan yén éta ngaronjatkeun kasabaran sesar tina jasa, tanpa balancing beban mustahil pikeun mastikeun responsiveness sarua jasa pikeun sakabéh pamaké. Pikeun ngabéréskeun masalah ieu, beban balancer dianggo - parangkat lunak sareng solusi hardware anu ngadistribusikaeun pamundut antara server. Di antarana aya nu rada primitif, kawas RoundRobin, nu saukur ngirimkeun unggal pamundut saterusna ka server hareup dina daptar, sarta aya ogé leuwih maju, contona HAProxy, nu loba dipaké dina infrastruktur komputasi beban tinggi alatan a jumlah kaunggulan signifikan. Hayu urang tingali kumaha anjeun tiasa ngadamel pangimbang beban HAProxy sareng Zimbra OSE damel babarengan.

Balancing beban dina Zimbra Open-Source Edition nganggo HAProxy

Janten, dumasar kana syarat tugas, kami dipasihan infrastruktur Zimbra OSE, anu ngagaduhan dua Zimbra Proxy, dua LDAP sareng LDAP Replica server, opat panyimpen surat kalayan 1000 kotak surat masing-masing sareng tilu MTA. Nunjukkeun yen urang keur kaayaan hiji server mail, éta bakal nampa tilu jenis lalulintas nu peryogi balancing: HTTP pikeun ngundeur klien web, kitu ogé POP na SMTP pikeun ngirim surelek. Dina hal ieu, lalu lintas HTTP bakal angkat ka server Zimbra Proxy kalayan alamat IP 192.168.0.57 sareng 192.168.0.58, sareng lalu lintas SMTP bakal angkat ka server MTA kalayan alamat IP 192.168.0.77 sareng 192.168.0.78.

Sakumaha anu geus disebutkeun, pikeun mastikeun yén requests disebarkeun merata antara server, urang bakal ngagunakeun HAProxy load balancer, nu bakal ngajalankeun on infrastruktur Zimbra titik ingress ngajalankeun Ubuntu 18.04. Masang haproxy dina sistem operasi ieu dilakukeun nganggo paréntah sudo apt-meunang install haproxy. Saatos ieu anjeun peryogi dina file /etc/standar/haproxy ngarobah parameter DIaktipkeun=0 dina DIaktipkeun=1. Ayeuna, pikeun mastikeun yén haproxy berpungsi, lebetkeun paréntahna palayanan haproxy. Upami jasa ieu jalan, ieu bakal jelas tina kaluaran paréntah.

Salah sahiji kalemahan utama HAProxy nyaéta sacara standar éta henteu ngirimkeun alamat IP tina klien anu nyambungkeun, ngagentos ku sorangan. Ieu tiasa nyababkeun kaayaan dimana email anu dikirim ku panyerang teu tiasa diidentifikasi ku alamat IP supados nambihan kana daptar hideung. Sanajan kitu, masalah ieu bisa direngsekeun. Jang ngalampahkeun ieu anjeun kudu ngédit file /opt/zimbra/common/conf/master.cf.in dina server sareng Postfix sareng tambahkeun garis-garis ieu:

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

Kusabab ieu, kami bakal muka palabuhan 26, 466 sareng 588, anu bakal nampi lalu lintas asup ti HAProxy. Saatos file disimpen, anjeun kedah ngabalikan deui Postfix dina sadaya server nganggo paréntah zmmtactl restart.

Saatos éta, hayu urang ngamimitian nyetél HAProxy. Jang ngalampahkeun ieu, mimiti nyieun salinan cadangan tina file setelan cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak. Teras buka file sumber dina pangropéa téksu /etc/haproxy/haproxy.cfg tur mimitian nambahkeun setélan perlu eta step by step. Blok kahiji bakal nambihkeun server anu nyandak log, netepkeun jumlah maksimum anu diidinan sambungan sakaligus, ogé nangtukeun nami sareng grup pangguna dimana prosés palaksanaan bakal aya.

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

Sosok 5000 sambungan simultaneous mucunghul pikeun alesan. Kusabab urang gaduh 4000 kotak surat dina infrastruktur urang, urang kedah mertimbangkeun kamungkinan yén aranjeunna sadayana bakal ngaksés email karyana dina waktos anu sami. Sajaba ti éta, perlu ninggalkeun cadangan leutik bisi jumlah maranéhanana nambahan.

Ayeuna hayu urang tambahkeun blok sareng setélan standar:

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

Blok ieu nyetél waktos waktos maksimum pikeun klien sareng server pikeun nutup sambungan nalika tamat, sareng ogé nyetél mode operasi HAProxy. Dina kasus urang, load balancer beroperasi dina modeu TCP, nyaeta, ngan saukur ngirimkeun pakét TCP tanpa analisa eusina.

Salajengna urang bakal nambahan aturan pikeun sambungan dina rupa palabuhan. Salaku conto, upami port 25 dianggo pikeun sambungan SMTP sareng surat, maka masuk akal pikeun neraskeun sambungan kana éta ka MTA anu aya dina infrastruktur urang. Upami sambunganna aya dina port 80, maka ieu mangrupikeun pamundut http anu kedah diteruskeun ka Zimbra Proxy.

Aturan pikeun port 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

Aturan pikeun port 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

Aturan pikeun port 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

Aturan pikeun port 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

Aturan pikeun port 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

Punten dicatet yén dina aturan pikeun neraskeun pakét TCP ka MTA, di gigireun alamatna aya parameter. ngirim-proxy. Ieu diperlukeun ku kituna, luyu jeung parobahan nu urang dijieun saméméhna kana setélan Postfix, alamat IP aslina pangirim na dikirim babarengan jeung pakét TCP.

Ayeuna sadaya parobihan anu diperyogikeun parantos dilakukeun pikeun HAProxy, anjeun tiasa ngabalikan deui jasa nganggo paréntah jasa haproxy balikan deui tur mimitian nganggo eta.

Kanggo sadaya patarosan anu aya hubunganana sareng Zextras Suite, anjeun tiasa ngahubungi Perwakilan Zextras Ekaterina Triandafilidi ku email. [email dijaga]

sumber: www.habr.com

Tambahkeun komentar