Мувозинати сарборӣ дар Zimbra Open-Source Edition бо истифода аз HAProxy

Яке аз вазифаҳои асосӣ ҳангоми сохтани инфрасохтори васеъмиқёси Zimbra OSE тавозуни дурусти сарборӣ мебошад. Илова бар он, ки он таҳаммулпазирии хатогиҳои хидматро зиёд мекунад, бидуни мувозинати сарборӣ, таъмин намудани якхела вокуниши хидмат барои ҳама корбарон ғайриимкон аст. Барои ҳалли ин мушкилот, тавозуни сарборӣ истифода мешаванд - ҳалли нармафзор ва сахтафзор, ки дархостҳоро байни серверҳо тақсим мекунанд. Дар байни онҳо навъҳои хеле ибтидоӣ ҳастанд, ба монанди RoundRobin, ки ҳар як дархости минбаъдаро ба сервери навбатии рӯйхат мефиристад ва инчунин пешрафтатар ҳастанд, масалан HAProxy, ки дар инфрасохтори ҳисоббарории сербориш ба таври васеъ истифода мешавад. як қатор афзалиятҳои назаррас. Биёед бубинем, ки чӣ тавр шумо метавонед тавозуни сарбории HAProxy ва Zimbra OSE-ро якҷоя кор кунед.

Мувозинати сарборӣ дар Zimbra Open-Source Edition бо истифода аз HAProxy

Ҳамин тавр, тибқи шартҳои супориш ба мо инфрасохтори Zimbra OSE дода мешавад, ки дорои ду сервери Zimbra Proxy, ду сервери LDAP ва LDAP Replica, чор анбори почта бо 1000 қуттии почта ва се MTA мебошад. Бо назардошти он, ки мо бо сервери почта сарукор дорем, он се намуди трафикро мегирад, ки ба мувозинат ниёз доранд: HTTP барои зеркашии муштарии веб, инчунин POP ва SMTP барои ирсоли почтаи электронӣ. Дар ин ҳолат трафики HTTP ба серверҳои Zimbra Proxy бо суроғаҳои IP 192.168.0.57 ва 192.168.0.58 ва трафики SMTP ба серверҳои MTA бо суроғаҳои IP 192.168.0.77 ва 192.168.0.78 меравад.

Тавре ки аллакай зикр гардид, барои таъмини баробар тақсим кардани дархостҳо дар байни серверҳо, мо тавозуни сарбории HAProxy-ро истифода мебарем, ки дар гиреҳи воридшавии инфрасохтори Zimbra бо Ubuntu 18.04 кор мекунад. Насб кардани haproxy дар ин системаи оператсионӣ бо истифода аз фармон анҷом дода мешавад sudo apt-get haproxy насб кунед. Баъд аз ин ба шумо лозим аст, ки дар файл /etc/default/haproxy тағир додани параметр ДАРКОР = 0 ба ДАРКОР = 1. Ҳоло, то боварӣ ҳосил кунед, ки haproxy кор мекунад, танҳо фармонро ворид кунед хапрокси хидматрасонӣ. Агар ин хидмат кор кунад, ин аз баромади фармон равшан мешавад.

Яке аз камбудиҳои асосии HAProxy дар он аст, ки он ба таври нобаёнӣ суроғаи 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

Бинобар ин, мо портҳои 26, 466 ва 588-ро мекушоем, ки трафики даромадро аз HAProxy қабул мекунанд. Пас аз захира кардани файлҳо, шумо бояд Postfix-ро дар ҳама серверҳо бо истифода аз фармони zmmtactl restart бозоғоз намоед.

Пас аз он, биёед насб кардани 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 бошад, пас ин дархости http аст, ки бояд ба Zimbra Proxy интиқол дода шавад.

Қоида барои порти 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 Екатерина Триандафилиди тавассути почтаи электронӣ тамос гиред. [почтаи электронӣ ҳифз карда шудааст]

Манбаъ: will.com

Илова Эзоҳ