ืื™ื–ื•ืŸ ืขื•ืžืกื™ื ื‘ืžื”ื“ื•ืจืช ืงื•ื“ ืคืชื•ื— ืฉืœ Zimbra ื‘ืืžืฆืขื•ืช HAProxy

ืื—ืช ื”ืžืฉื™ืžื•ืช ื”ืขื™ืงืจื™ื•ืช ื‘ื‘ื ื™ื™ืช ืชืฉืชื™ื•ืช Zimbra OSE ื‘ืงื ื” ืžื™ื“ื” ื’ื“ื•ืœ ื”ื™ื ืื™ื–ื•ืŸ ืขื•ืžืกื™ื ื ื›ื•ืŸ. ื‘ื ื•ืกืฃ ืœืขื•ื‘ื“ื” ืฉื”ื•ื ืžื’ื‘ื™ืจ ืืช ืกื‘ื™ืœื•ืช ื”ืชืงืœื•ืช ืฉืœ ื”ืฉื™ืจื•ืช, ืœืœื ืื™ื–ื•ืŸ ืขื•ืžืกื™ื ืื™ ืืคืฉืจ ืœื”ื‘ื˜ื™ื— ืืช ืื•ืชื” ื”ื™ืขื ื•ืช ื”ืฉื™ืจื•ืช ืœื›ืœ ื”ืžืฉืชืžืฉื™ื. ืขืœ ืžื ืช ืœืคืชื•ืจ ื‘ืขื™ื” ื–ื• ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืื™ื–ื•ื ื™ ืขื•ืžืกื™ื - ืคืชืจื•ื ื•ืช ืชื•ื›ื ื” ื•ื—ื•ืžืจื” ื”ืžืคื™ืฆื™ื ืžื—ื“ืฉ ื‘ืงืฉื•ืช ื‘ื™ืŸ ืฉืจืชื™ื. ื‘ื™ื ื™ื”ื ื™ืฉ ืคืจื™ืžื™ื˜ื™ื‘ื™ื™ื ืœืžื“ื™, ื›ืžื• RoundRobin, ืฉืคืฉื•ื˜ ืฉื•ืœื— ื›ืœ ื‘ืงืฉื” ืขื•ืงื‘ืช ืœืฉืจืช ื”ื‘ื ื‘ืจืฉื™ืžื”, ื•ื™ืฉ ื’ื ืžืชืงื“ืžื™ื ื™ื•ืชืจ, ืœืžืฉืœ HAProxy ืฉื ืžืฆืืช ื‘ืฉื™ืžื•ืฉ ื ืจื—ื‘ ื‘ืชืฉืชื™ื•ืช ืžื—ืฉื•ื‘ ื‘ืขื•ืžืก ื’ื‘ื•ื” ื‘ื’ืœืœ ื. ืžืกืคืจ ื™ืชืจื•ื ื•ืช ืžืฉืžืขื•ืชื™ื™ื. ื‘ื•ืื• ื ืกืชื›ืœ ื›ื™ืฆื“ ืชื•ื›ืœื• ืœื’ืจื•ื ืœืžืื–ืŸ ื”ืขื•ืžืก ืฉืœ HAProxy ื•ืœ-Zimbra OSE ืœืขื‘ื•ื“ ื™ื—ื“.

ืื™ื–ื•ืŸ ืขื•ืžืกื™ื ื‘ืžื”ื“ื•ืจืช ืงื•ื“ ืคืชื•ื— ืฉืœ Zimbra ื‘ืืžืฆืขื•ืช HAProxy

ืœื›ืŸ, ื‘ื”ืชืื ืœืชื ืื™ ื”ืžืฉื™ืžื”, ื ื™ืชื ืช ืœื ื• ืชืฉืชื™ืช ื”-Zimbra OSE, ื”ื›ื•ืœืœืช ืฉื ื™ ืฉืจืชื™ Zimbra Proxy, ืฉื ื™ ืฉืจืชื™ LDAP ื•-LDAP Replica, ืืจื‘ืขื” ืื—ืกื•ืŸ ื“ื•ืืจ ืขื 1000 ืชื™ื‘ื•ืช ื“ื•ืืจ ื›ืœ ืื—ืช ื•ืฉืœื•ืฉื” MTAs. ื‘ื”ืชื—ืฉื‘ ื‘ื›ืš ืฉืื ื• ืขื•ืกืงื™ื ื‘ืฉืจืช ื“ื•ืืจ, ื”ื•ื ื™ืงื‘ืœ ืฉืœื•ืฉื” ืกื•ื’ื™ ืชืขื‘ื•ืจื” ืฉืฆืจื™ื›ื™ื ืื™ื–ื•ืŸ: HTTP ืœื”ื•ืจื“ืช ืœืงื•ื— ื”ืื™ื ื˜ืจื ื˜, ื•ื›ืŸ POP ื•-SMTP ืœืฉืœื™ื—ืช ื“ื•ื"ืœ. ื‘ืžืงืจื” ื–ื”, ืชืขื‘ื•ืจืช HTTP ืชืขื‘ื•ืจ ืœืฉืจืชื™ Proxy ืฉืœ Zimbra ืขื ื›ืชื•ื‘ื•ืช IP 192.168.0.57 ื•-192.168.0.58, ื•ืชืขื‘ื•ืจืช SMTP ืชืขื‘ื•ืจ ืœืฉืจืชื™ MTA ืขื ื›ืชื•ื‘ื•ืช IP 192.168.0.77 ื•-192.168.0.78.

ื›ืคื™ ืฉื›ื‘ืจ ื”ื•ื–ื›ืจ, ื›ื“ื™ ืœื”ื‘ื˜ื™ื— ืฉื”ื‘ืงืฉื•ืช ื™ื—ื•ืœืงื• ื‘ืื•ืคืŸ ืฉื•ื•ื” ื‘ื™ืŸ ื”ืฉืจืชื™ื, ื ืฉืชืžืฉ ื‘ืžืื–ืŸ ื”ืขื•ืžืก HAProxy, ืฉื™ืคืขืœ ืขืœ ืฆื•ืžืช ื”ื›ื ื™ืกื” ืœืชืฉืชื™ืช Zimbra ื”ืžืจื™ืฅ ืืช ืื•ื‘ื•ื ื˜ื• 18.04. ื”ืชืงื ืช ื”ืคืจื•ืงืกื™ ื‘ืžืขืจื›ืช ื”ืคืขืœื” ื–ื• ืžืชื‘ืฆืขืช ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” sudo apt-get ื”ืชืงื ืช ื”ืืคืจื•ืงืกื™. ืื—ืจื™ ื–ื” ืืชื” ืฆืจื™ืš ื‘ืงื•ื‘ืฅ /etc/default/haproxy ืœืฉื ื•ืช ืคืจืžื˜ืจ ENABLED=0 ืขืœ ENABLED=1. ื›ืขืช, ืขืœ ืžื ืช ืœื•ื•ื“ื ืฉื”ืคืจื•ืงืกื™ ืคื•ืขืœ, ืคืฉื•ื˜ ื”ื–ืŸ ืืช ื”ืคืงื•ื“ื” ืคืจื•ืงืกื™ ืฉื™ืจื•ืช. ืื ืฉื™ืจื•ืช ื–ื” ืคื•ืขืœ, ื–ื” ื™ื”ื™ื” ื‘ืจื•ืจ ืžื”ืคืœื˜ ืฉืœ ื”ืคืงื•ื“ื”.

ืื—ื“ ื”ื—ืกืจื•ื ื•ืช ื”ืขื™ืงืจื™ื™ื ืฉืœ 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 ื•ื“ื•ืืจ, ืื– ื”ื’ื™ื•ื ื™ ืœื”ืขื‘ื™ืจ ืืœื™ื” ืืช ื”ื—ื™ื‘ื•ืจื™ื ืœ-MTAs ื”ื–ืžื™ื ื™ื ื‘ืชืฉืชื™ืช ืฉืœื ื•. ืื ื”ื—ื™ื‘ื•ืจ ื ืžืฆื ื‘ื™ืฆื™ืื” 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, ื ื™ืชืŸ ืœื”ืคืขื™ืœ ืžื—ื“ืฉ ืืช ื”ืฉื™ืจื•ืช ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” ื”ืคืขืœื” ืžื—ื“ืฉ ืฉืœ ืคืจื•ืงืกื™ ืฉื™ืจื•ืช ื•ืœื”ืชื—ื™ืœ ืœื”ืฉืชืžืฉ ื‘ื•.

ืœื›ืœ ื”ืฉืืœื•ืช ื”ืงืฉื•ืจื•ืช ืœ-Zextras Suite, ื ื™ืชืŸ ืœื™ืฆื•ืจ ืงืฉืจ ืขื ื ืฆื™ื’ืช Zextras Ekaterina Triandafilidi ื‘ื“ื•ืืจ ืืœืงื˜ืจื•ื ื™ [ืžื•ื’ืŸ ื‘ื“ื•ื"ืœ]

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”