Zimbra Open-Source Edition'да HAProxy аркылуу жүктөө балансын түзүңүз

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

Zimbra Open-Source Edition'да HAProxy аркылуу жүктөө балансын түзүңүз

Ошентип, көйгөйдүн мүнөздөмөлөрүнө ылайык, бизге эки 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/haproxy

5000 бир эле учурда байланыштын көрсөткүчү бир себептен улам пайда болгон. Биздин инфраструктурабызда 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-proxy

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

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

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

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

TCP пакеттерин MTAга жөнөтүү эрежелеринде алардын даректеринин жанында параметр бар экенин эске алыңыз прокси жөнөтүү. Бул Postfix орнотууларына биз мурда киргизген өзгөртүүлөргө ылайык, аны жөнөтүүчүнүн баштапкы IP дареги да TCP пакеттери менен бирге жөнөтүлүшү үчүн зарыл.

Эми HAProxyге бардык керектүү өзгөртүүлөр киргизилгенден кийин, сиз буйрукту колдонуу менен кызматты кайра иштете аласыз кызмат Haproxy кайра баштоо жана аны колдоно баштаңыз.

Zextras Suite менен байланышкан бардык суроолор боюнча, сиз Zextras өкүлү Екатерина Триандафилиди менен katerina@zextras.com электрондук почтасы аркылуу байланышсаңыз болот.

Source: www.habr.com

DDoS коргоосу, VPS VDS серверлери бар сайттар үчүн ишенимдүү хостинг сатып алыңыз 🔥 DDoS коргоосу, VPS VDS серверлери бар ишенимдүү веб-сайт хостингин сатып алыңыз | ProHoster