Youn nan travay prensipal yo lè bati gwo echèl enfrastrikti Zimbra OSE se balanse chaj apwopriye. Anplis de sa nan lefèt ke li ogmante tolerans nan fay nan sèvis la, san yo pa balanse chaj li enposib asire menm repons nan sèvis la pou tout itilizatè yo. Yo nan lòd yo rezoud pwoblèm sa a, balanse chaj yo itilize - solisyon lojisyèl ak pyès ki nan konpitè ki redistribiye demann ant serveurs. Pami yo gen sa ki byen primitif, tankou RoundRobin, ki tou senpleman voye chak demann ki vin apre nan pwochen sèvè a nan lis la, epi gen tou sa ki pi avanse, pou egzanp HAProxy, ki se lajman ki itilize nan enfrastrikti enfòmatik gwo chaj akòz yon kantite avantaj enpòtan. Ann pran yon gade nan ki jan ou ka fè balans lan chaj HAProxy ak Zimbra OSE travay ansanm.

Kidonk, dapre espesifikasyon pwoblèm nan, yo ban nou yon enfrastrikti Zimbra OSE, ki gen ladan de Zimbra Proxies, de sèvè LDAP, yon LDAP Replica, kat depo bwat lèt ak 1000 bwat lèt chak, ak twa MTA. Lè nou konsidere ke nou ap fè fas ak yon sèvè lapòs, li pral resevwa twa kalite trafik ki bezwen balans: HTTP pou chaje kliyan entènèt la, ansanm ak POP ak SMTP pou redireksyon imèl. Trafik HTTP a pral voye bay sèvè Zimbra Proxy ak adrès IP 192.168.0.57 ak 192.168.0.58, epi trafik SMTP pral ale nan sèvè MTA ak adrès IP 192.168.0.77 ak 192.168.0.78.
Jan nou te mansyone pi bonè, pou asire yon distribisyon inifòm demann ant sèvè yo, nou pral itilize balansè chaj HAProxy a, ki pral fonksyone sou nĹd antre enfrastrikti Zimbra a k ap fonksyone. Ubuntu 18.04. Enstalasyon haproxy nan sistèm operasyon sa a fèt lè l sèvi avèk kòmandman an sudo apt-get install haproxy. Apre sa ou bezwen nan dosye a /etc/default/haproxy chanje paramèt ACTIVE=0 sou ACTIVE=1. Koulye a, yo nan lòd yo asire w ke haproxy ap travay, jis antre nan lòd la sèvis haproxy. Si sèvis sa a ap kouri, sa a pral klè nan pwodiksyon an nan lòd la.
Youn nan prensipal dezavantaj HAProxy a se ke pa default li pa transmèt adrès IP kliyan k ap konekte a, li ranplase l ak pa l. Sa ka mennen nan sitiyasyon kote imèl atakè yo pa ka idantifye. adrès IPpou ajoute li nan lis nwa a. Sepandan, pwoblèm sa a ka rezoud. Pou fè sa, ou bezwen modifye fichye a /opt/zimbra/common/conf/master.cf.in sou sèvè ak Postfix epi ajoute liy sa yo nan li:
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_adjustAkòz sa, nou pral louvri pò 26, 466 ak 588, ki pral resevwa trafik k ap rantre nan HAProxy. Apre yo fin sove dosye yo, ou ta dwe rekòmanse Postfix sou tout sèvè lè l sèvi avèk lòd rekòmanse zmmtactl la.
Apre sa, ann kòmanse mete kanpe HAProxy. Pou fè sa, premye kreye yon kopi backup nan dosye a anviwònman cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak. Lè sa a, louvri dosye sous la nan yon editè tèks /etc/haproxy/haproxy.cfg epi kòmanse ajoute anviwònman ki nesesè yo nan li etap pa etap. Premye blòk la pral ajoute yon sèvè ki pran mòso bwa, fikse kantite maksimòm ki pèmèt koneksyon similtane, osi byen ke espesifye non an ak gwoup itilizatè a ki pral egzekite pwosesis la.
global
user daemon
group daemon
daemon
log 127.0.0.1 daemon
maxconn 5000
chroot /var/lib/haproxyFigi a nan 5000 koneksyon similtane parèt pou yon rezon. Piske nou gen 4000 bwat lèt nan enfrastrikti nou an, nou bezwen konsidere posiblite pou yo tout jwenn aksè nan imel travay yo an menm tan. Anplis de sa, li nesesè kite yon ti rezèv si kantite yo ogmante.
Koulye a, ann ajoute yon blòk ak anviwònman default:
defaults
timeout client 1m
log global
mode tcp
timeout server 1m
timeout connect 5sBlòk sa a fikse delè maksimòm pou kliyan an ak sèvè fèmen koneksyon an lè li ekspire, epi tou li mete mòd fonksyone HAProxy. Nan ka nou an, balans chaj la opere nan mòd TCP, se sa ki, li tou senpleman transmèt pake TCP san yo pa analize sa yo.
Apre sa, nou pral ajoute règ pou koneksyon sou pò divès kalite. Pa egzanp, si yo itilize pò 25 pou koneksyon SMTP ak lapòs, lè sa a li gen sans pou voye koneksyon ak li bay MTA ki disponib nan enfrastrikti nou an. Si koneksyon an se sou pò 80, Lè sa a, sa a se yon demann http ki bezwen voye bay Zimbra Proxy.
Règ pou pò 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-proxyRèg pou pò 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-proxyRèg pou pò 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-proxyRèg pou pò 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 checkRèg pou pò 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 checkTanpri sonje ke nan règ yo pou voye pakè TCP bay MTA a, akote adrès yo gen yon paramèt. voye-proxy. Sa nesesè pou, an akò ak chanjman nou te fè pi bonè nan paramèt Postfix yo, yo voye adrès IP orijinal moun k ap voye li yo ansanm ak pakè TCP yo.
Kounye a ke tout chanjman ki nesesè yo te fè nan HAProxy, ou ka rekòmanse sèvis la lè l sèvi avèk lòd la rekòmanse sèvis haproxy epi kòmanse sèvi ak li.
Pou tout kesyon ki gen rapò ak Zextras Suite, ou ka kontakte Reprezantan Zextras Ekaterina Triandafilidi pa imèl katerina@zextras.com.
Sous: www.habr.com
