Чоң масштабдуу Zimbra OSE инфраструктураларын курууда негизги милдеттердин бири жүктү туура баланстоо болуп саналат. Кызматтын катачылыкка чыдамдуулугун жогорулатканынан тышкары, жүктөмдү теңдөөсүз бардык колдонуучулар үчүн кызматтын бирдей жооп берүүсүн камсыз кылуу мүмкүн эмес. Бул көйгөйдү чечүү үчүн жүк баланстоочулар колдонулат - серверлер ортосунда суроо-талаптарды бөлүштүрүүчү программалык жана аппараттык чечимдер. Алардын арасында ар бир кийинки суроо-талапты тизмедеги кийинки серверге жөн эле жөнөтүүчү RoundRobin сыяктуу абдан примитивдери бар, ошондой эле өркүндөтүлгөндөрү да бар, мисалы, HAProxy, ал чоң жүктөмдүү эсептөө инфраструктураларында кеңири колдонулат. олуттуу артыкчылыктардын саны. Келгиле, HAProxy жүгүн тең салмактоочу жана Zimbra OSE кантип чогуу иштеши мүмкүн экенин карап көрөлү.

Ошентип, көйгөйдүн мүнөздөмөлөрүнө ылайык, бизге эки Zimbra проксисин, эки LDAP серверин, бир LDAP көчүрмөсүн, ар бири 1000 почта кутучасы бар төрт почта кутучасын жана үч MTAны камтыган Zimbra OSE инфраструктурасы берилет. Почта сервери менен иш алып барып жатканыбызды эске алганда, ал тең салмактуулукту талап кылган үч түрдүү трафикти алат: веб-кардарды жүктөө үчүн HTTP, ошондой эле электрондук почтаны багыттоо үчүн POP жана SMTP. HTTP трафиги төмөнкү дарекке жөнөтүлөт серверлер 192.168.0.57 жана 192.168.0.58 IP даректери бар Zimbra проксиси жана SMTP трафиги 192.168.0.77 жана 192.168.0.78 IP даректери бар MTA серверлерине барат.
Жогоруда айтылгандай, серверлердин ортосунда суроо-талаптардын бирдей бөлүштүрүлүшүн камсыз кылуу үчүн, биз Zimbra инфраструктурасынын кирүү түйүнүндө иштей турган HAProxy жүк баланстагычын колдонобуз. Ubuntu 18.04. Бул операциялык системага haproxy орнотуу буйругу аркылуу жүргүзүлөт sudo apt-get Haproxy орнотуу. Андан кийин файлга керек /etc/default/haproxy ismenit параметр ENABLED=0 боюнча ENABLED=1. Эми, haproxy иштеп жатканын текшерүү үчүн, жөн гана буйрукту киргизиңиз кызмат гапрокси. Бул кызмат иштеп жаткан болсо, бул буйрук чыгаруудан айкын болот.
HAProxy'нин негизги кемчиликтеринин бири - ал демейки шартта туташып жаткан кардардын IP дарегин өткөрүп бербейт, аны өзүнүн IP дареги менен алмаштырат. Бул чабуулчулар тарабынан жөнөтүлгөн электрондук каттарды аныктоо мүмкүн болбогон жагдайларга алып келиши мүмкүн IP дарегианы кара тизмеге кошуу үчүн. Бирок, бул маселени чечүүгө болот. Бул үчүн сиз файлды түзөтүшүңүз керек /opt/zimbra/common/conf/master.cf.in Postfix менен серверлерде жана ага төмөнкү саптарды кошуңуз:
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Ушундан улам биз HAProxyден келген трафикти ала турган 26, 466 жана 588 портторун ачабыз. Файлдар сакталгандан кийин, zmmtactl restart буйругун колдонуп, бардык серверлерде Postfixти өчүрүп күйгүзүшүңүз керек.
Андан кийин, HAProxy орнотууну баштайлы. Бул үчүн, адегенде орнотуулар файлынын камдык көчүрмөсүн түзүңүз cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak. Андан кийин текст редакторунда баштапкы файлды ачыңыз /etc/haproxy/haproxy.cfg жана ага керектүү орнотууларды этап-этабы менен кошо баштаңыз. Биринчи блок журналдарды кабыл ала турган серверди кошуу, бир эле убакта туташуулардын максималдуу уруксат берилген санын орнотуу, ошондой эле аткаруу процесси таандык болгон колдонуучунун атын жана тобун көрсөтүү.
global
user daemon
group daemon
daemon
log 127.0.0.1 daemon
maxconn 5000
chroot /var/lib/haproxy5000 бир эле учурда байланыштын көрсөткүчү бир себептен улам пайда болгон. Биздин инфраструктурабызда 4000 почта ящиктерибиз бар болгондуктан, алардын бардыгы бир эле учурда жумуш электрондук почтасына кирүү мүмкүнчүлүгүн карап чыгышыбыз керек. Мындан тышкары, алардын саны көбөйгөн учурда бир аз резерв калтыруу керек.
Эми демейки жөндөөлөрү бар блокту кошолу:
defaults
timeout client 1m
log global
mode tcp
timeout server 1m
timeout connect 5sБул блок кардардын жана сервердин байланышты жабуу үчүн максималдуу күтүү убактысын белгилейт, ошондой эле HAProxy иштөө режимин орнотот. Биздин учурда, жүк баланстоочу TCP режиминде иштейт, башкача айтканда, TCP пакеттерин алардын мазмунун талдабастан өткөрүп берет.
Андан кийин ар кандай порттордогу туташуулар үчүн эрежелерди кошобуз. Мисалы, 25-порт SMTP туташуулары жана почта үчүн колдонулса, анда ага байланыштарды биздин инфраструктурада бар MTAларга жөнөтүү мааниси бар. Эгер туташуу 80 портунда болсо, анда бул Zimbra проксиге жөнөтүлүшү керек болгон http сурамы.
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-proxy465-порттун эрежеси:
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-proxy587-порттун эрежеси:
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-proxy80-порттун эрежеси:
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 check443-порттун эрежеси:
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 checkTCP пакеттерин MTAга жөнөтүү эрежелеринде алардын даректеринин жанында параметр бар экенин эске алыңыз прокси жөнөтүү. Бул Postfix орнотууларына биз мурда киргизген өзгөртүүлөргө ылайык, аны жөнөтүүчүнүн баштапкы IP дареги да TCP пакеттери менен бирге жөнөтүлүшү үчүн зарыл.
Эми HAProxyге бардык керектүү өзгөртүүлөр киргизилгенден кийин, сиз буйрукту колдонуу менен кызматты кайра иштете аласыз кызмат Haproxy кайра баштоо жана аны колдоно баштаңыз.
Zextras Suite менен байланышкан бардык суроолор боюнча, сиз Zextras өкүлү Екатерина Триандафилиди менен katerina@zextras.com электрондук почтасы аркылуу байланышсаңыз болот.
Source: www.habr.com
