HAProxy استعمال ڪندي Zimbra اوپن سورس ايڊيشن ۾ لوڊ بيلنس

مکيه ڪمن مان هڪ جڏهن وڏي پيماني تي زمبرا OSE انفراسٽرڪچر تعمير ڪرڻ مناسب لوڊ توازن آهي. انهي حقيقت کان علاوه اها خدمت جي غلطي رواداري کي وڌائي ٿي، لوڊ بيلنس جي بغير سڀني صارفين لاء خدمت جي ساڳئي ردعمل کي يقيني بڻائڻ ناممڪن آهي. هن مسئلي کي حل ڪرڻ لاء، لوڊ بيلنس استعمال ڪيا ويا آهن - سافٽ ويئر ۽ هارڊويئر حل جيڪي سرور جي وچ ۾ درخواستن کي ٻيهر ورهائي رهيا آهن. انهن مان ڪافي پراڻيون آهن، جهڙوڪ RoundRobin، جيڪي صرف هر ايندڙ درخواست کي لسٽ ۾ ايندڙ سرور ڏانهن موڪليندا آهن، ۽ ان کان علاوه وڌيڪ ترقي يافته آهن، مثال طور HAProxy، جيڪو وڏي پئماني تي استعمال ڪيو ويندو آهي اعلي لوڊ ڪمپيوٽرنگ انفراسٽرڪچر جي ڪري. اهم فائدن جو تعداد. اچو ته هڪ نظر رکون ته توهان ڪيئن ڪري سگهو ٿا HAProxy لوڊ بيلنسر ۽ Zimbra OSE گڏجي ڪم ڪن.

HAProxy استعمال ڪندي Zimbra اوپن سورس ايڊيشن ۾ لوڊ بيلنس

تنهن ڪري، ڪم جي شرطن جي مطابق، اسان کي Zimbra OSE انفراسٽرڪچر ڏنو ويو آهي، جنهن ۾ ٻه Zimbra Proxy، ٻه LDAP ۽ LDAP ريپليڪا سرور، 1000 ميل باڪسز سان گڏ چار ميل اسٽوريج ۽ ٽي MTAs. ڏنو ويو آهي ته اسان هڪ ميل سرور سان ڊيل ڪري رهيا آهيون، اهو ٽي قسم جي ٽرئفڪ حاصل ڪندو جنهن کي توازن جي ضرورت آهي: ويب ڪلائنٽ کي ڊائون لوڊ ڪرڻ لاء HTTP، انهي سان گڏ اي ميل موڪلڻ لاء POP ۽ SMTP. انهي صورت ۾، HTTP ٽرئفڪ 192.168.0.57 ۽ 192.168.0.58 IP پتي سان Zimbra Proxy سرورز ڏانهن ويندي، ۽ SMTP ٽرئفڪ IP پتي 192.168.0.77 ۽ 192.168.0.78 سان MTA سرورز ڏانهن ويندي.

جيئن اڳ ۾ ئي ذڪر ڪيو ويو آهي، انهي کي يقيني بڻائڻ ته درخواستون سرور جي وچ ۾ برابر طور تي ورهايل آهن، اسان استعمال ڪنداسين HAProxy لوڊ بيلنس، جيڪو هلندو Zimbra انفراسٽرڪچر انگريشن نوڊ تي هلندو Ubuntu 18.04. هن آپريٽنگ سسٽم تي haproxy انسٽال ڪرڻ ڪمانڊ استعمال ڪندي ڪيو ويندو آهي sudo apt-get install haproxy. هن کان پوء توهان کي فائل ۾ ضرورت آهي /etc/default/haproxy پيٽرول تبديل ڪريو فعال = 0 تي فعال = 1. هاڻي، انهي کي پڪ ڪرڻ لاء ته هيپروڪس ڪم ڪري رهيو آهي، صرف حڪم داخل ڪريو خدمت haproxy. جيڪڏھن ھي خدمت ھلائي رھي آھي، اھو حڪم جي ٻاھر مان صاف ٿي ويندو.

HAProxy جي مکيه نقصانن مان هڪ اهو آهي ته ڊفالٽ طور تي اهو ڳنڍيل ڪلائنٽ جي IP پتي کي منتقل نٿو ڪري، ان کي پنهنجي پاڻ سان تبديل ڪندي. اهو حالتن جي ڪري سگھي ٿو جتي حملي ڪندڙن پاران موڪليل اي ميلون IP پتي جي سڃاڻپ نه ٿي سگھن ٿيون ان کي بليڪ لسٽ ۾ شامل ڪرڻ لاءِ. تنهن هوندي به، هن مسئلي کي حل ڪري سگهجي ٿو. ھن کي ڪرڻ لاء توھان کي فائل کي تبديل ڪرڻ جي ضرورت آھي /opt/zimbra/common/conf/master.cf.in پوسٽ فڪس سان سرورز تي ۽ ان ۾ ھيٺيون لائينون شامل ڪريو:

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 کان ايندڙ ٽرئفڪ وصول ڪندا. فائلن کي محفوظ ٿيڻ کان پوء، توهان کي ٻيهر شروع ڪرڻ گهرجي پوسٽ فڪس سڀني سرورن تي zmmtactl ريسٽارٽ ڪمانڊ استعمال ڪندي.

ان کان پوء، اچو ته 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 درخواست آهي جنهن کي زمبرا پراکسي ڏانهن اڳتي وڌڻ جي ضرورت آهي.

پورٽ 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 ڏانهن اڳتي وڌائڻ جي ضابطن ۾، انهن جي پتي جي اڳيان هڪ پيٽرولر آهي پراڪس موڪلڻ. اهو ضروري آهي ته جيئن، پوسٽ فڪس سيٽنگن ۾ اسان اڳ ۾ ڪيل تبديلين جي مطابق، ان جي موڪليندڙ جو اصل IP پتو TCP پيڪٽس سان گڏ موڪليو وڃي.

ھاڻي ته HAProxy ۾ سڀ ضروري تبديليون ڪيون ويون آھن، توھان ڪمانڊ استعمال ڪندي سروس کي ٻيهر شروع ڪري سگھو ٿا خدمت haproxy ٻيهر شروع ۽ ان کي استعمال ڪرڻ شروع ڪريو.

Zextras Suite سان لاڳاپيل سڀني سوالن لاء، توهان اي ميل ذريعي Zextras جي نمائندي Ekaterina Triandafilidi سان رابطو ڪري سگهو ٿا [ايميل محفوظ ٿيل]

جو ذريعو: www.habr.com

تبصرو شامل ڪريو