Балансирање оптерећења у Зимбра Опен-Соурце издању користећи ХАПроки

Један од главних задатака при изградњи Зимбра ОСЕ инфраструктуре великих размера је правилно балансирање оптерећења. Поред тога што повећава отпорност сервиса на грешке, без балансирања оптерећења немогуће је обезбедити једнак одзив сервиса за све кориснике. Да би се решио овај проблем, користе се балансери оптерећења - софтверска и хардверска решења која редистрибуирају захтеве између сервера. Међу њима има прилично примитивних, као што је РоундРобин, који једноставно шаље сваки наредни захтев следећем серверу на листи, а постоје и напреднији, на пример ХАПроки, који се широко користи у рачунарским инфраструктурама високог оптерећења због број значајних предности. Хајде да погледамо како можете да учините да ХАПроки балансатор оптерећења и Зимбра ОСЕ раде заједно.

Балансирање оптерећења у Зимбра Опен-Соурце издању користећи ХАПроки

Дакле, према условима задатка, добијамо Зимбра ОСЕ инфраструктуру, која има два Зимбра Проки, два ЛДАП и ЛДАП Реплица сервера, четири складишта поште са по 1000 поштанских сандучића и три МТА. С обзиром на то да имамо посла са маил сервером, он ће примати три врсте саобраћаја којима је потребно балансирање: ХТТП за преузимање веб клијента, као и ПОП и СМТП за слање е-поште. У овом случају, ХТТП саобраћај ће ићи на Зимбра проки сервере са ИП адресама 192.168.0.57 и 192.168.0.58, а СМТП саобраћај ће ићи на МТА сервере са ИП адресама 192.168.0.77 и 192.168.0.78.

Као што је већ поменуто, да бисмо осигурали да су захтеви равномерно распоређени између сервера, користићемо ХАПроки балансатор оптерећења, који ће се покретати на улазном чвору Зимбра инфраструктуре који ради на Убунту 18.04. Инсталација хапроки-а на овом оперативном систему се врши помоћу команде судо апт-гет инсталл хапроки. Након тога требате у датотеку /етц/дефаулт/хапроки промени параметар ЕНАБЛЕД=0 на ЕНАБЛЕД=1. Сада, да бисте били сигурни да хапроки ради, само унесите команду сервице хапроки. Ако је ова услуга покренута, то ће бити јасно из излаза команде.

Један од главних недостатака ХАПроки-а је то што он подразумевано не преноси ИП адресу клијента за повезивање, замењујући је својом. Ово може довести до ситуација у којима се е-поруке које шаљу нападачи не могу идентификовати по ИП адреси како би је додали на црну листу. Међутим, овај проблем се може решити. Да бисте то урадили, потребно је да уредите датотеку /опт/зимбра/цоммон/цонф/мастер.цф.ин на серверима са Постфик-ом и додајте му следеће редове:

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, који ће примати долазни саобраћај од ХАПроки-а. Након што су датотеке сачуване, требало би да поново покренете Постфик на свим серверима помоћу зммтацтл команде рестарт.

Након тога, почнимо да подешавамо ХАПроки. Да бисте то урадили, прво направите резервну копију датотеке поставки цп /етц/хапроки/хапроки.цфг /етц/хапроки/хапроки.цфг.бак. Затим отворите изворну датотеку у уређивачу текста /етц/хапроки/хапроки.цфг и почните да му додајете неопходна подешавања корак по корак. Први блок ће бити додавање сервера који води евиденцију, постављање максималног дозвољеног броја истовремених конекција, као и одређивање имена и групе корисника којој ће процес извршавања припадати.

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

Овај блок поставља максимално временско ограничење за клијента и сервера да затворе везу када она истекне, а такође поставља режим рада ХАПроки. У нашем случају балансатор оптерећења ради у ТЦП режиму, односно једноставно преноси ТЦП пакете без анализе њиховог садржаја.

Затим ћемо додати правила за везе на различитим портовима. На пример, ако се порт 25 користи за СМТП везе и пошту, онда има смисла проследити везе на њега на МТА доступне у нашој инфраструктури. Ако је веза на порту 80, онда је ово хттп захтев који треба да се проследи Зимбра проки-ју.

Правило за порт 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

Имајте на уму да се у правилима за прослеђивање ТЦП пакета МТА-у поред њихових адреса налази параметар сенд-проки. Ово је неопходно да би се, у складу са променама које смо раније направили у подешавањима Постфик-а, оригинална ИП адреса његовог пошиљаоца послата заједно са ТЦП пакетима.

Сада када су у ХАПроки извршене све неопходне промене, можете поново покренути услугу помоћу наредбе сервис хапроки рестарт и почните да га користите.

За сва питања у вези са Зектрас Суите-ом можете контактирати представницу Зектрас Екатерину Триандафилиди путем е-поште [емаил заштићен]

Извор: ввв.хабр.цом

Додај коментар