Load balancing ing Zimbra Open-Source Edition nggunakake HAProxy

Salah sawijining tugas utama nalika mbangun infrastruktur Zimbra OSE skala gedhe yaiku keseimbangan beban sing tepat. Saliyane kasunyatan sing nambah toleransi fault saka layanan, tanpa mbukak wawas iku mokal kanggo mesthekake responsif padha layanan kanggo kabeh kedhaftar. Kanggo ngatasi masalah iki, load balancers digunakake - solusi piranti lunak lan hardware sing nyebarake panjalukan antarane server. Antarane wong-wong mau ana sing cukup primitif, kaya RoundRobin, sing mung ngirim saben panyuwunan sakteruse menyang server sabanjure ing dhaptar, lan ana uga sing luwih maju, contone HAProxy, sing akeh digunakake ing infrastruktur komputasi dhuwur amarga a nomer kaluwihan pinunjul. Ayo goleki carane sampeyan bisa nggawe pengimbang beban HAProxy lan Zimbra OSE bisa digunakake bebarengan.

Load balancing ing Zimbra Open-Source Edition nggunakake HAProxy

Dadi, miturut syarat-syarat tugas, kita diwenehi infrastruktur Zimbra OSE, sing nduweni loro Zimbra Proxy, loro server LDAP lan LDAP Replica, papat panyimpenan layang kanthi 1000 kothak layang lan telung MTA. Amarga kita lagi nangani server mail, bakal nampa telung jinis lalu lintas sing kudu diimbangi: HTTP kanggo ngundhuh klien web, uga POP lan SMTP kanggo ngirim email. Ing kasus iki, lalu lintas HTTP bakal menyang server Zimbra Proxy kanthi alamat IP 192.168.0.57 lan 192.168.0.58, lan lalu lintas SMTP bakal pindhah menyang server MTA kanthi alamat IP 192.168.0.77 lan 192.168.0.78.

Kaya sing wis kasebut, kanggo mesthekake yen panjalukan disebarake kanthi merata ing antarane server, kita bakal nggunakake HAProxy load balancer, sing bakal mlaku ing simpul ingress infrastruktur Zimbra sing nganggo Ubuntu 18.04. Nginstal haproxy ing sistem operasi iki rampung nggunakake printah sudo apt-get nginstal haproxy. Sawise iki sampeyan kudu ing file /etc/default/haproxy ngganti parameter AKTIF=0 ing AKTIF=1. Saiki, kanggo mesthekake yen haproxy bisa digunakake, ketik printah kasebut layanan haproxy. Yen layanan iki mlaku, iki bakal cetha saka output printah.

Salah sawijining kekurangan utama HAProxy yaiku kanthi standar ora ngirim alamat IP saka klien sing nyambungake, ngganti karo dhewe. Iki bisa nyebabake kahanan nalika email sing dikirim dening panyerang ora bisa diidentifikasi kanthi alamat IP supaya bisa ditambahake menyang dhaptar ireng. Nanging, masalah iki bisa dirampungake. Kanggo nindakake iki, sampeyan kudu ngowahi file kasebut /opt/zimbra/common/conf/master.cf.in ing server karo Postfix lan tambahake baris ing ngisor iki:

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

Amarga iki, kita bakal mbukak port 26, 466 lan 588, sing bakal nampa lalu lintas mlebu saka HAProxy. Sawise file disimpen, sampeyan kudu miwiti maneh Postfix ing kabeh server nggunakake perintah zmmtactl restart.

Sawise iku, ayo miwiti nyetel HAProxy. Kanggo nindakake iki, pisanan nggawe salinan serep file setelan cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak. Banjur mbukak file sumber ing editor teks /etc/haproxy/haproxy.cfg lan miwiti nambah setelan sing perlu kanggo langkah dening langkah. Blok pisanan bakal nambah server sing njupuk log, nyetel jumlah maksimum sing diijini sambungan simultan, uga nemtokake jeneng lan klompok pangguna sing bakal dadi proses eksekusi.

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

Angka 5000 sambungan simultan muncul kanthi alesan. Amarga kita duwe 4000 kothak layang ing infrastruktur kita, kita kudu nimbang kemungkinan kabeh bakal ngakses email kerja ing wektu sing padha. Kajaba iku, perlu ninggalake cadangan cilik yen jumlahe saya tambah.

Saiki ayo nambah blok kanthi setelan gawan:

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

Blok iki nyetel wektu entek maksimum kanggo klien lan server kanggo nutup sambungan nalika kadaluwarsa, lan uga nyetel mode operasi HAProxy. Ing kasus kita, load balancer beroperasi ing mode TCP, yaiku, mung ngirim paket TCP tanpa nganalisa isine.

Sabanjure kita bakal nambah aturan kanggo sambungan ing macem-macem bandar. Contone, yen port 25 digunakake kanggo sambungan SMTP lan mail, banjur iku perlu kanggo nerusake sambungan menyang MTA kasedhiya ing infrastruktur kita. Yen sambungan ana ing port 80, iki minangka panyuwunan http sing kudu diterusake menyang Zimbra Proxy.

Aturan kanggo 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 kanggo 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 kanggo 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 kanggo 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 kanggo 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

Elinga yen ing aturan kanggo nerusake paket TCP menyang MTA, ing jejere alamat ana parameter ngirim-proxy. Iki perlu supaya, sesuai karo owah-owahan sing digawe sadurunge menyang setelan Postfix, alamat IP asli pangirim dikirim bebarengan karo paket TCP.

Saiki kabeh pangowahan sing dibutuhake wis digawe kanggo HAProxy, sampeyan bisa miwiti maneh layanan nggunakake printah kasebut layanan haproxy miwiti maneh lan miwiti nggunakake.

Kanggo kabeh pitakonan sing ana gandhengane karo Zextras Suite, sampeyan bisa ngubungi Perwakilan Zextras Ekaterina Triandafilidi liwat email. [email dilindhungi]

Source: www.habr.com

Add a comment