HAProxy yordamida Zimbra Open-Source Edition-da yuk balansi

Katta miqyosli Zimbra OSE infratuzilmalarini qurishda asosiy vazifalardan biri bu yukni to'g'ri muvozanatlashdir. Bu xizmatning nosozliklarga chidamliligini oshirishiga qo'shimcha ravishda, yukni muvozanatlashtirmasdan, barcha foydalanuvchilar uchun xizmatning bir xil sezgirligini ta'minlash mumkin emas. Ushbu muammoni hal qilish uchun yuk balanslagichlari qo'llaniladi - serverlar o'rtasida so'rovlarni qayta taqsimlovchi dasturiy va apparat echimlari. Ular orasida har bir keyingi so'rovni ro'yxatdagi keyingi serverga yuboradigan RoundRobin kabi juda ibtidoiy so'rovlar bor, shuningdek, yanada rivojlanganlari ham bor, masalan, yuqori yuklangan hisoblash infratuzilmalarida keng qo'llaniladigan HAProxy. bir qator muhim afzalliklar. Keling, HAProxy yuk balanslagichi va Zimbra OSE ni qanday qilib birgalikda ishlashini ko'rib chiqamiz.

HAProxy yordamida Zimbra Open-Source Edition-da yuk balansi

Shunday qilib, topshiriq shartlariga ko'ra, bizga ikkita Zimbra proksi, ikkita LDAP va LDAP Replica serverlari, har birida 1000 ta pochta qutisi bo'lgan to'rtta pochta ombori va uchta MTA mavjud bo'lgan Zimbra OSE infratuzilmasi berilgan. Pochta serveri bilan ishlayotganimizni hisobga olsak, u muvozanatlash kerak bo'lgan uch turdagi trafikni oladi: veb-mijozni yuklab olish uchun HTTP, shuningdek, elektron pochta xabarlarini yuborish uchun POP va SMTP. Bu holda HTTP trafigi 192.168.0.57 va 192.168.0.58 IP manzilli Zimbra Proksi-serverlariga, SMTP trafigiga esa 192.168.0.77 va 192.168.0.78 IP manzilli MTA serverlariga boradi.

Yuqorida aytib o'tilganidek, so'rovlar serverlar o'rtasida teng taqsimlanishini ta'minlash uchun biz Ubuntu 18.04 bilan ishlaydigan Zimbra infratuzilma kirish tugunida ishlaydigan HAProxy yuk balanslagichidan foydalanamiz. Haproxy-ni ushbu operatsion tizimga o'rnatish buyruq yordamida amalga oshiriladi sudo apt-get o'rnatish haproxy. Shundan so'ng siz faylga kerak /etc/default/haproxy parametrni o'zgartirish YOQILGAN=0 haqida YOQILGAN=1. Endi, haproxy ishlayotganiga ishonch hosil qilish uchun buyruqni kiriting xizmat haproxy. Agar ushbu xizmat ishlayotgan bo'lsa, bu buyruqning chiqishidan aniq bo'ladi.

HAProxy-ning asosiy kamchiliklaridan biri shundaki, u sukut bo'yicha ulanadigan mijozning IP-manzilini uzatmaydi, uni o'zi bilan almashtiradi. Bu tajovuzkorlar tomonidan yuborilgan elektron pochta xabarlarini qora ro'yxatga qo'shish uchun IP manzili bo'yicha aniqlanmaydigan holatlarga olib kelishi mumkin. Biroq, bu muammoni hal qilish mumkin. Buning uchun faylni tahrirlashingiz kerak /opt/zimbra/common/conf/master.cf.in Postfix serverlarida va unga quyidagi qatorlarni qo'shing:

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

Shu tufayli biz HAProxy-dan kiruvchi trafikni qabul qiladigan 26, 466 va 588 portlarni ochamiz. Fayllar saqlanganidan so'ng, zmmtactl restart buyrug'i yordamida barcha serverlarda Postfix-ni qayta ishga tushirishingiz kerak.

Shundan so'ng, HAProxy-ni sozlashni boshlaylik. Buning uchun avval sozlamalar faylining zaxira nusxasini yarating cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak. Keyin matn muharririda manba faylni oching /etc/haproxy/haproxy.cfg va unga kerakli sozlamalarni bosqichma-bosqich qo'shishni boshlang. Birinchi blok jurnallarni qabul qiladigan serverni qo'shish, bir vaqtning o'zida ulanishlarning maksimal ruxsat etilgan sonini belgilash, shuningdek, bajarish jarayoni tegishli bo'lgan foydalanuvchi nomi va guruhini belgilashdan iborat bo'ladi.

global
    user daemon
    group daemon
    daemon
    log 127.0.0.1 daemon
    maxconn 5000
    chroot /var/lib/haproxy

Bir vaqtning o'zida 5000 ta ulanish ko'rsatkichi bir sababga ko'ra paydo bo'ldi. Bizning infratuzilmamizda 4000 ta pochta qutilari mavjud bo'lganligi sababli, ularning barchasi bir vaqtning o'zida ish elektron pochtasiga kirish imkoniyatini hisobga olishimiz kerak. Bundan tashqari, ularning soni ko'paygan taqdirda kichik zaxirani qoldirish kerak.

Endi standart sozlamalar bilan blok qo'shamiz:

defaults
        timeout client 1m
        log global
        mode tcp
        timeout server 1m
        timeout connect 5s

Ushbu blok mijoz va server uchun ulanish muddati tugagandan so'ng uni yopish uchun maksimal kutish vaqtini o'rnatadi, shuningdek, HAProxy ish rejimini o'rnatadi. Bizning holatda, yuk balanslagichi TCP rejimida ishlaydi, ya'ni u TCP paketlarini ularning mazmunini tahlil qilmasdan uzatadi.

Keyinchalik turli portlarda ulanish qoidalarini qo'shamiz. Misol uchun, agar 25-port SMTP ulanishlari va pochta uchun ishlatilsa, u holda bizning infratuzilmamizda mavjud bo'lgan MTA-larga ulanishlarni yo'naltirish mantiqan to'g'ri keladi. Agar ulanish 80-portda bo'lsa, bu Zimbra proksi-serveriga yuborilishi kerak bo'lgan http so'rovidir.

25-port uchun qoida:

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-port uchun qoida:

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-port uchun qoida:

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-port uchun qoida:

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-port uchun qoida:

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

E'tibor bering, TCP paketlarini MTA ga yo'naltirish qoidalarida ularning manzillari yonida parametr mavjud. yuborish-proksi. Bu Postfix sozlamalariga ilgari kiritilgan o'zgartirishlarga muvofiq, uni jo'natuvchining asl IP manzili TCP paketlari bilan birga yuborilishi uchun kerak.

Endi HAProxy-ga barcha kerakli o'zgarishlar kiritilgandan so'ng, siz buyruq yordamida xizmatni qayta ishga tushirishingiz mumkin xizmat haproxy qayta ishga tushirish va undan foydalanishni boshlang.

Zextras Suite bilan bog'liq barcha savollar uchun siz Zekstras vakili Yekaterina Triandafilidi bilan elektron pochta orqali bog'lanishingiz mumkin. [elektron pochta bilan himoyalangan]

Manba: www.habr.com

a Izoh qo'shish