HAProxy ашиглан Zimbra Open-Source Edition дээр ачааллыг тэнцвэржүүлэх

Zimbra OSE-ийн томоохон дэд бүтцийг бий болгох гол ажлуудын нэг бол ачааллыг зөв тэнцвэржүүлэх явдал юм. Энэ нь үйлчилгээний алдааг тэсвэрлэх чадварыг нэмэгдүүлэхээс гадна ачааллыг тэнцвэржүүлэхгүйгээр бүх хэрэглэгчдэд үйлчилгээний ижил хариу өгөх боломжгүй юм. Энэ асуудлыг шийдэхийн тулд ачааллын тэнцвэржүүлэгчийг ашигладаг - серверүүдийн хооронд хүсэлтийг дахин хуваарилдаг програм хангамж, техник хангамжийн шийдлүүд. Тэдгээрийн дотор дараагийн хүсэлт бүрийг жагсаалтын дараагийн сервер рүү илгээдэг RoundRobin гэх мэт нэлээд энгийн зүйлүүд байдаг бөгөөд үүнээс гадна илүү дэвшилтэт хувилбарууд байдаг, жишээлбэл, HAProxy нь өндөр ачаалалтай тооцоолох дэд бүтцэд өргөн хэрэглэгддэг. хэд хэдэн чухал давуу талууд. HAProxy ачааллын тэнцвэржүүлэгч болон Zimbra OSE-г хэрхэн хамтран ажиллуулахыг харцгаая.

HAProxy ашиглан Zimbra Open-Source Edition дээр ачааллыг тэнцвэржүүлэх

Тиймээс, даалгаврын дагуу бидэнд Zimbra OSE дэд бүтцийг хоёр Zimbra Proxy, хоёр LDAP болон LDAP Replica сервер, тус бүр нь 1000 шуудангийн хайрцаг бүхий дөрвөн шуудангийн хадгалалт, гурван MTA-тай өгсөн болно. Бид шуудангийн сервертэй харьцаж байгаа тул энэ нь тэнцвэржүүлэх шаардлагатай гурван төрлийн урсгалыг хүлээн авах болно: вэб клиентийг татаж авах HTTP, мөн имэйл илгээх POP болон SMTP. Энэ тохиолдолд HTTP траффик 192.168.0.57 ба 192.168.0.58 IP хаягтай Zimbra Proxy серверүүд рүү, SMTP урсгал нь 192.168.0.77 ба 192.168.0.78 IP хаягтай MTA серверүүд рүү очно.

Өмнө дурьдсанчлан хүсэлтийг серверүүдийн хооронд жигд хуваарилахын тулд бид Ubuntu 18.04 үйлдлийн системтэй Zimbra дэд бүтцийн нэвтрэх зангилаа дээр ажиллах HAProxy ачааллын тэнцвэржүүлэгчийг ашиглах болно. Энэ үйлдлийн систем дээр хапрокси суулгах нь тушаалыг ашиглан хийгддэг sudo apt-get суулгах haproxy. Үүний дараа та файлд хэрэгтэй болно /etc/default/haproxy параметрийг өөрчлөх ENABLED=0 тухай ENABLED=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

Үүний улмаас бид 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 Proxy руу дамжуулах шаардлагатай 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-ын төлөөлөгч Екатерина Триандафилидитэй имэйлээр холбогдож болно. [имэйлээр хамгаалагдсан]

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх