CentOS-ում HAProxy բեռի հավասարակշռության տեղադրում

Հոդվածի թարգմանությունը պատրաստվել է դասընթացի մեկնարկի նախօրեին «Linux Administrator. Վիրտուալացում և կլաստերավորում»

CentOS-ում HAProxy բեռի հավասարակշռության տեղադրում

Բեռնվածության հավասարակշռումը սովորական լուծում է վեբ հավելվածների հորիզոնական մասշտաբավորման համար մի քանի հոսթերների վրա՝ միաժամանակ օգտվողներին ծառայության մուտքի մեկ կետ տրամադրելով: HAProxy Բեռնվածության հավասարակշռման ամենահայտնի բաց կոդով ծրագրերից մեկն է, որը նաև ապահովում է բարձր հասանելիություն և վստահված անձի գործառույթ:

HAProxy-ն ձգտում է օպտիմալացնել ռեսուրսների օգտագործումը, առավելագույնի հասցնել թողունակությունը, նվազագույնի հասցնել արձագանքման ժամանակը և խուսափել ցանկացած առանձին ռեսուրսի գերբեռնումից: Այն կարող է տեղադրվել Linux-ի տարբեր բաշխումների վրա, ինչպիսին է CentOS 8-ը, որի վրա մենք կկենտրոնանանք այս ուղեցույցում, ինչպես նաև համակարգերում: Debian 8 и Ubuntu 16.

CentOS-ում HAProxy բեռի հավասարակշռության տեղադրում

HAProxy-ը հատկապես հարմար է շատ բարձր տրաֆիկ ունեցող կայքերի համար և, հետևաբար, հաճախ օգտագործվում է բազմասերվերի վեբ ծառայության կոնֆիգուրացիաների հուսալիությունն ու կատարումը բարելավելու համար: Այս ուղեցույցը ուրվագծում է HAProxy-ը որպես CentOS 8 ամպային հոսթի վրա HAProxy-ի տեղադրման քայլերը, որն այնուհետև երթևեկությունը ուղղում է դեպի ձեր վեբ սերվերներ:

Որպես լավագույն արդյունքի նախապայման, դուք պետք է ունենաք առնվազն երկու վեբ սերվեր և բեռների հավասարակշռման սերվեր: Վեբ սերվերները պետք է գործարկեն առնվազն հիմնական վեբ ծառայություն, ինչպիսիք են nginx-ը կամ httpd-ը, որպեսզի փորձարկեն բեռի հավասարակշռումը նրանց միջև:

HAProxy-ի տեղադրում CentOS 8-ում

Քանի որ HAProxy-ն արագ զարգացող բաց կոդով հավելված է, CentOS-ի ստանդարտ պահեստներում ձեզ հասանելի բաշխումը կարող է լինել վերջին տարբերակը: Ընթացիկ տարբերակը պարզելու համար գործարկեք հետևյալ հրամանը.

sudo yum info haproxy

HAProxy-ն միշտ տրամադրում է երեք կայուն տարբերակ՝ ընտրելու համար՝ երկու ամենավերջին աջակցվող տարբերակները և երրորդ՝ ավելի հին տարբերակը, որը դեռևս ստանում է կարևոր թարմացումներ: Դուք միշտ կարող եք ստուգել HAProxy-ի կայքում նշված վերջին կայուն տարբերակը, այնուհետև որոշել, թե որ տարբերակի հետ եք ցանկանում աշխատել:

Այս ուղեցույցում մենք կտեղադրենք վերջին կայուն տարբերակը 2.0, որը դեռ հասանելի չէր ստանդարտ պահեստներում ուղեցույցը գրելու պահին: Դուք պետք է այն տեղադրեք սկզբնական աղբյուրից: Բայց նախ ստուգեք, արդյոք բավարարել եք ծրագիրը ներբեռնելու և կազմելու համար անհրաժեշտ պայմանները։

sudo yum install gcc pcre-devel tar make -y

Ներբեռնեք աղբյուրի կոդը՝ օգտագործելով ստորև նշված հրամանը: Դուք կարող եք ստուգել, ​​թե արդյոք կա ավելի նոր տարբերակ HAProxy-ի ներբեռնման էջ.

wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz

Ներբեռնումն ավարտվելուց հետո հանեք ֆայլերը՝ օգտագործելով ստորև նշված հրամանը.

tar xzvf ~/haproxy.tar.gz -C ~/

Գնացեք չփաթեթավորված աղբյուրի գրացուցակ.

cd ~/haproxy-2.0.7

Այնուհետև կազմեք ծրագիրը ձեր համակարգի համար.

make TARGET=linux-glibc

Եվ վերջապես, տեղադրեք HAProxy-ն ինքնին.

sudo make install

HAProxy-ն այժմ տեղադրված է, բայց այն գործելու համար պահանջում է լրացուցիչ մանիպուլյացիաներ: Եկեք շարունակենք ստորև բերված ծրագրաշարի և ծառայությունների կարգավորումը:

Ձեր սերվերի համար HAProxy-ի կարգավորում

Այժմ ավելացրեք հետևյալ գրացուցակները և վիճակագրության ֆայլը HAProxy գրառումների համար.

sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy 
sudo touch /var/lib/haproxy/stats

Ստեղծեք խորհրդանշական հղում երկուականների համար, որպեսզի կարողանաք գործարկել HAProxy հրամանները որպես սովորական օգտվող.

sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

Եթե ​​ցանկանում եք պրոքսի ավելացնել ձեր համակարգին՝ որպես ծառայություն, պատճենեք haproxy.init ֆայլը օրինակներից ձեր /etc/init.d գրացուցակում: Խմբագրեք ֆայլի թույլտվությունները, որպեսզի սկրիպտը աշխատի, այնուհետև վերագործարկեք systemd daemon-ը.

sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload

Դուք նաև պետք է թույլատրեք ծառայության ավտոմատ վերագործարկումը, երբ համակարգը գործարկվի.

sudo chkconfig haproxy on

Հարմարության համար խորհուրդ է տրվում նաև նոր օգտվող ավելացնել HAProxy-ն գործարկելու համար.

sudo useradd -r haproxy

Դրանից հետո դուք կարող եք նորից ստուգել տեղադրված տարբերակի համարը՝ օգտագործելով հետևյալ հրամանը.

haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/

Մեր դեպքում տարբերակը պետք է լինի 2.0.7, ինչպես ցույց է տրված վերը նշված օրինակում:

Վերջապես, CentOS 8-ի կանխադրված firewall-ը բավականին սահմանափակող է այս նախագծի համար: Պահանջվող ծառայությունները թույլատրելու և firewall-ը վերականգնելու համար օգտագործեք հետևյալ հրամանները.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload

Load Balancer Setup

HAProxy-ի կարգավորումը բավականին պարզ գործընթաց է: Ըստ էության, այն ամենը, ինչ դուք պետք է անեք, HAProxy-ին ասելն է, թե ինչ կապեր նա պետք է լսի և որտեղ պետք է փոխանցի դրանք:

Սա արվում է՝ ստեղծելով կազմաձևման ֆայլ /etc/haproxy/haproxy.cfg՝ սահմանող կարգավորումներով: Դուք կարող եք կարդալ HAProxy-ի կազմաձևման տարբերակների մասին փաստաթղթերի էջումեթե ցանկանում եք ավելին իմանալ դրա մասին:

Բեռի հավասարակշռում տրանսպորտային շերտում (շերտ 4)

Սկսենք հիմնական կարգավորումից: Ստեղծեք նոր կազմաձևման ֆայլ, օրինակ՝ օգտագործելով vi ստորև նշված հրամանով.

sudo vi /etc/haproxy/haproxy.cfg

Ֆայլին ավելացրեք հետևյալ բաժինները. Փոխարինել server_name ինչ պետք է կանչի ձեր սերվերները վիճակագրության էջում և private_ip — սերվերների մասնավոր IP հասցեները, որոնց ցանկանում եք ուղղորդել վեբ տրաֆիկը: Դուք կարող եք ստուգել անձնական IP հասցեները UpCloud կառավարման վահանակի վրա և ներդիրի վրա Անձնական ցանց ընտրացանկում Ցանց.

global
   log /dev/log local0
   log /dev/log local1 notice
   chroot /var/lib/haproxy
   stats timeout 30s
   user haproxy
   group haproxy
   daemon

defaults
   log global
   mode http
   option httplog
   option dontlognull
   timeout connect 5000
   timeout client 50000
   timeout server 50000

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   default_backend http_back

backend http_back
   balance roundrobin
   server server_name1 private_ip1:80 check
   server server_name2 private_ip2:80 check

Սա սահմանում է տրանսպորտային շերտի ծանրաբեռնվածության հավասարակշռող (շերտ 4) արտաքին անունով http_front ունկնդրում 80-րդ նավահանգստում, որն այնուհետև երթևեկությունը տեղափոխում է լռելյայն հետին մասը՝ http_back: Լրացուցիչ վիճակագրություն /haproxy?stats-ը միացնում է վիճակագրության էջը նշված հասցեին:

Բեռի հավասարակշռման տարբեր ալգորիթմներ:

Հետևի հատվածում սերվերների նշումը թույլ է տալիս HAProxy-ին օգտագործել այս սերվերները բեռների հավասարակշռման համար՝ ըստ հնարավորության դեպքում շրջանաձև ալգորիթմի համաձայն:

Հավասարակշռման ալգորիթմներն օգտագործվում են որոշելու համար, թե որ սերվերին է փոխանցվում յուրաքանչյուր կապը: Ահա որոշ օգտակար տարբերակներ.

  • Roundrobin: Յուրաքանչյուր սերվեր օգտագործվում է հերթով` ըստ իր քաշի: Սա ամենասահուն և արդար ալգորիթմն է, երբ սերվերների մշակման ժամանակը մնում է հավասարաչափ: Այս ալգորիթմը դինամիկ է, որը թույլ է տալիս արագորեն կարգավորել սերվերի քաշը:
  • Leastconn: ընտրված է ամենաքիչ կապեր ունեցող սերվերը: Round robin-ը կատարվում է նույն բեռով սերվերների միջև: Այս ալգորիթմի օգտագործումը խորհուրդ է տրվում երկար նիստերի համար, ինչպիսիք են LDAP, SQL, TSE և այլն, բայց այն այնքան էլ հարմար չէ կարճ սեսիաների համար, ինչպիսին է HTTP-ն:
  • Առաջին: Կապի հասանելի սլոտներով առաջին սերվերը ստանում է կապը: Սերվերները ընտրվում են ամենացածր թվային ID-ից մինչև ամենաբարձրը, որը կանխադրված է ֆերմայում սերվերի դիրքի համար: Երբ սերվերը հասնում է maxconn-ին, օգտագործվում է հաջորդ սերվերը:
  • Source: Աղբյուրի IP հասցեն հաշված է և բաժանվում է գործող սերվերների ընդհանուր քաշի վրա՝ որոշելու համար, թե որ սերվերը կստանա հարցումը: Այսպիսով, հաճախորդի նույն IP հասցեն միշտ կգնա նույն սերվերին, մինչդեռ սերվերները մնում են նույնը:

Բեռի հավասարակշռության կարգավորում կիրառման մակարդակում (շերտ 7)

Մեկ այլ մատչելի տարբերակ է կարգավորել բեռի հավասարակշռիչը, որպեսզի գործարկվի կիրառական շերտում (շերտ 7), որն օգտակար է, երբ ձեր վեբ հավելվածի մասերը տեղակայված են տարբեր հոսթերների վրա: Դրան կարելի է հասնել կապի փոխանցումը խափանելով, օրինակ՝ URL-ով:

Բացեք HAProxy կազմաձևման ֆայլը տեքստային խմբագրիչի միջոցով.

sudo vi /etc/haproxy/haproxy.cfg

Այնուհետև կազմաձևեք առջևի և հետնամասի հատվածները ստորև բերված օրինակի համաձայն.

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   acl url_blog path_beg /blog
   use_backend blog_back if url_blog
   default_backend http_back

backend http_back
   balance roundrobin
   server server_name1 private_ip1:80 check
   server server_name2 private_ip2:80 check

backend blog_back
   server server_name3 private_ip3:80 check

Frontend-ը հայտարարում է ACL կանոն, որը կոչվում է url_blog, որը վերաբերում է /blog-ով սկսվող ուղիներով բոլոր կապերին: Use_backend-ը սահմանում է, որ url_blog պայմանին համապատասխանող կապերը պետք է սպասարկվեն blog_back անունով backend-ի կողմից, իսկ մնացած բոլոր հարցումները մշակվում են լռելյայն հետին մասի կողմից:

Հետևի կողմում կոնֆիգուրացիան ստեղծում է սերվերների երկու խումբ՝ http_back, ինչպես նախկինում, և նորը, որը կոչվում է blog_back, որը կարգավորում է կապերը example.com/blog-ի հետ:

Պարամետրերը փոխելուց հետո պահեք ֆայլը և վերագործարկեք HAProxy-ը՝ օգտագործելով հետևյալ հրամանը.

sudo systemctl restart haproxy

Եթե ​​գործարկման ընթացքում որևէ նախազգուշացում կամ սխալի հաղորդագրություն եք ստանում, ստուգեք դրանց կազմաձևումը և համոզվեք, որ ստեղծել եք բոլոր անհրաժեշտ ֆայլերն ու թղթապանակները, այնուհետև փորձեք նորից վերագործարկել:

Կարգավորման փորձարկում

Հենց որ HAProxy-ը կազմաձևվի և գործարկվի, բացեք բրաուզերում բեռի հավասարակշռող սերվերի հանրային IP հասցեն և ստուգեք, թե արդյոք ճիշտ եք միացված հետնամասին: Stats uri պարամետրը կազմաձևում ստեղծում է վիճակագրության էջ նշված հասցեում:

http://load_balancer_public_ip/haproxy?stats

Երբ դուք բեռնում եք վիճակագրության էջը, եթե ձեր բոլոր սերվերները կանաչ են, ապա կարգավորումը հաջողված է:

CentOS-ում HAProxy բեռի հավասարակշռության տեղադրում

Վիճակագրության էջը պարունակում է որոշ օգտակար տեղեկություններ՝ ձեր վեբ հոսթներին հետևելու համար, ներառյալ՝ վերև/ներքևի ժամանակը և նիստերի քանակը: Եթե ​​սերվերը նշված է կարմիրով, համոզվեք, որ սերվերը միացված է, և որ դուք կարող եք այն ping բալանսավորող սարքից:

Եթե ​​ձեր բեռի հավասարակշռիչը չի արձագանքում, համոզվեք, որ HTTP կապերը արգելափակված չեն firewall-ի կողմից: Նաև համոզվեք, որ HAProxy-ն աշխատում է՝ օգտագործելով ստորև նշված հրամանը.

sudo systemctl status haproxy

Վիճակագրության էջը գաղտնաբառով պաշտպանելը

Այնուամենայնիվ, եթե վիճակագրության էջը պարզապես նշված է ճակատային մասում, ապա այն բաց է բոլորի համար, ինչը կարող է լավ գաղափար չլինել: Փոխարենը, դուք կարող եք նրան նշանակել հատուկ պորտի համար՝ ավելացնելով ստորև բերված օրինակը ձեր haproxy.cfg ֆայլի վերջում: Փոխարինել օգտագործողի անունը и Գաղտնաբառ ապահով բանի համար.

listen stats
   bind *:8181
   stats enable
   stats uri /
   stats realm Haproxy Statistics
   stats auth username:password

Լսողների նոր խումբ ավելացնելուց հետո հեռացրեք հին stats uri հղումը ճակատային խմբից: Ավարտելուց հետո պահեք ֆայլը և վերագործարկեք HAProxy-ը:

sudo systemctl restart haproxy

Այնուհետև նորից բացեք բեռի հավասարակշռիչը նոր պորտի համարով և մուտք գործեք կոնֆիգուրացիայի ֆայլում նշած օգտվողի անունով և գաղտնաբառով:

http://load_balancer_public_ip:8181

Համոզվեք, որ ձեր բոլոր սերվերները դեռևս կանաչ են ցույց տալիս, այնուհետև բացեք միայն բեռնաչափի IP-ն՝ առանց որևէ պորտի համարի ձեր բրաուզերում:

http://load_balancer_public_ip/

Եթե ​​ձեր հետևի սերվերների վրա ունեք վայրէջքների էջերի առնվազն որոշակի բազմազանություն, ապա կնկատեք, որ ամեն անգամ էջը վերաբեռնելիս պատասխան եք ստանում մեկ այլ հոսթից: Դուք կարող եք փորձել տարբեր հավասարակշռման ալգորիթմներ կազմաձևման բաժնում կամ ստուգել ամբողջական փաստաթղթեր.

Եզրակացություն՝ HAProxy Load Balancer

Շնորհավորում ենք ձեր HAProxy բեռի հավասարակշռիչը հաջողությամբ կարգավորելու կապակցությամբ: Նույնիսկ հիմնական բեռի հավասարակշռման կարգավորումների դեպքում դուք կարող եք զգալիորեն բարելավել ձեր վեբ հավելվածի աշխատանքը և հասանելիությունը: Այս ուղեցույցը պարզապես ներածություն է HAProxy-ով բեռների հավասարակշռման համար, որն ի վիճակի է շատ ավելին, քան այն, ինչ կարող է ներառվել արագ տեղադրման ուղեցույցում: Մենք խորհուրդ ենք տալիս փորձարկել տարբեր կոնֆիգուրացիաներ օգտագործելով ընդարձակ փաստաթղթեր, հասանելի է HAProxy-ին, այնուհետև սկսեք պլանավորել բեռի հավասարակշռումը ձեր արտադրական միջավայրի համար:

Օգտագործելով բազմաթիվ հոսթեր՝ ձեր վեբ ծառայությունը գլխամասային տարածքով պաշտպանելու համար, բեռի հավասարակշռողն ինքը դեռ կարող է ձախողման կետ ներկայացնել: Դուք կարող եք հետագայում բարելավել բարձր հասանելիությունը՝ տեղադրելով լողացող IP մի քանի բեռի հավասարակշռիչների միջև: Այս մասին ավելին կարող եք իմանալ մեր կայքում հոդված UpCloud-ում լողացող IP հասցեների մասին.

Ավելին դասընթացի մասին «Linux Administrator. Վիրտուալացում և կլաստերավորում»***

Source: www.habr.com

Добавить комментарий