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