CentOS дээр HAProxy ачааллын тэнцвэржүүлэгчийг суулгаж байна

Нийтлэлийн орчуулгыг курс эхлэхийн өмнөх өдөр бэлтгэсэн "Linux администратор. Виртуалчлал ба кластерчлал"

CentOS дээр HAProxy ачааллын тэнцвэржүүлэгчийг суулгаж байна

Ачааллын тэнцвэржүүлэгч нь вэб програмуудыг олон хостуудаар хэвтээ байдлаар масштаблахын зэрэгцээ хэрэглэгчдэд үйлчилгээнд нэвтрэх нэг цэгээр хангах нийтлэг шийдэл юм. HAProxy нь ачаалал тэнцвэржүүлэх хамгийн алдартай нээлттэй эхийн программ хангамжийн нэг бөгөөд өндөр хүртээмжтэй, прокси функцээр хангадаг.

HAProxy нь нөөцийн ашиглалтыг оновчтой болгох, дамжуулах чадварыг нэмэгдүүлэх, хариу өгөх хугацааг багасгах, аливаа нөөцийг хэт ачаалахаас зайлсхийхийг хичээдэг. Үүнийг бидний энэ гарын авлагад анхаарлаа хандуулах CentOS 8 гэх мэт олон төрлийн Linux түгээлтүүд болон системүүд дээр суулгаж болно. Debian 8 и Ubuntu 16.

CentOS дээр HAProxy ачааллын тэнцвэржүүлэгчийг суулгаж байна

HAProxy нь маш их ачаалалтай вэбсайтуудад тохиромжтой байдаг тул олон серверийн вэб үйлчилгээний тохиргооны найдвартай байдал, гүйцэтгэлийг сайжруулахад ихэвчлэн ашиглагддаг. Энэхүү гарын авлагад HAProxy-г CentOS 8 үүлний хост дээр ачаалал тэнцвэржүүлэгч болгон тохируулах алхмуудыг тодорхойлсон бөгөөд энэ нь таны вэб серверүүд рүү урсгалыг чиглүүлдэг.

Хамгийн сайн үр дүнд хүрэх урьдчилсан нөхцөл бол та дор хаяж хоёр вэб сервер, ачааллыг тэнцвэржүүлэх сервертэй байх ёстой. Вэб серверүүд нь ачааллын тэнцвэрийг шалгахын тулд ядаж nginx эсвэл httpd зэрэг үндсэн вэб үйлчилгээг ажиллуулж байх ёстой.

CentOS 8 дээр HAProxy суулгаж байна

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 лавлах руу хуулна уу. Скрипт ажиллахын тулд файлын зөвшөөрлийг засварлаж, дараа нь системийн демоныг дахин эхлүүлнэ үү:

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-ийн анхдагч галт хана нь энэ төслийн хувьд нэлээд хязгаарлагдмал байдаг. Шаардлагатай үйлчилгээг зөвшөөрөх, галт ханыг дахин тохируулахын тулд дараах тушаалуудыг ашиглана уу:

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

Ачаалал тэнцвэржүүлэгчийн тохиргоо

HAProxy-г тохируулах нь маш энгийн процесс юм. Үндсэндээ та HAProxy-д ямар холболтыг сонсох, хаана дамжуулах ёстойг хэлэх л хэрэгтэй.

Энэ нь тохиргоог тодорхойлсон /etc/haproxy/haproxy.cfg тохиргооны файл үүсгэх замаар хийгддэг. Та HAProxy тохиргооны сонголтуудын талаар уншиж болно баримт бичгийн хуудсан дээрХэрэв та энэ талаар илүү ихийг мэдэхийг хүсвэл.

Тээврийн давхарга дахь ачааллыг тэнцвэржүүлэх (давхарга 4)

Үндсэн тохиргооноос эхэлцгээе. Шинэ тохиргооны файл үүсгэх, жишээлбэл ашиглах vi доорх тушаалаар:

sudo vi /etc/haproxy/haproxy.cfg

Дараах хэсгүүдийг файлд нэмнэ үү. Солих серверийн нэр Статистикийн хуудсан дээрх серверүүдээ юу гэж нэрлэх ёстой вэ, мөн хувийн_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 нэртэй өгөгдмөл backend руу дамжуулдаг. Нэмэлт статистик /haproxy?stats нь статистикийн хуудсыг заасан хаягтай холбодог.

Төрөл бүрийн ачааллыг тэнцвэржүүлэх алгоритмууд.

Backend хэсэгт серверүүдийг зааж өгснөөр HAProxy-д боломжтой бол дугуй алгоритмын дагуу ачааллыг тэнцвэржүүлэх зорилгоор эдгээр серверүүдийг ашиглах боломжийг олгодог.

Холболт бүрийг арын хэсгийн аль сервер рүү дамжуулж байгааг тодорхойлоход тэнцвэржүүлэх алгоритмыг ашигладаг. Энд зарим ашигтай сонголтууд байна:

  • Тойрон Эргэх: Сервер бүр өөрийн жингийн дагуу ээлжлэн ашиглагддаг. Энэ нь серверүүдийн боловсруулалтын хугацаа жигд тархсан үед хамгийн зөөлөн бөгөөд шударга алгоритм юм. Энэ алгоритм нь динамик бөгөөд серверийн жинг шууд тохируулах боломжийг олгодог.
  • Leastconn: хамгийн бага холболттой серверийг сонгосон. Round robin нь ижил ачаалалтай серверүүдийн хооронд хийгддэг. Энэ алгоритмыг LDAP, SQL, TSE гэх мэт урт сессүүдэд ашиглахыг зөвлөдөг боловч HTTP зэрэг богино сессүүдэд тийм ч тохиромжтой биш юм.
  • Нэгдүгээрт: Боломжтой холболтын оролттой эхний сервер холболтыг хүлээн авна. Серверүүд нь хамгийн бага тоон ID-аас хамгийн өндөр хүртэл сонгогддог бөгөөд энэ нь ферм дэх серверийн байрлалд тохируулагддаг. Сервер maxconn-д хүрмэгц дараагийн серверийг ашигладаг.
  • Эх сурвалж: Эх сурвалжийн IP хаягийг хэш хийж, ажиллаж байгаа серверүүдийн нийт жинд хувааж, хүсэлтийг аль сервер хүлээн авахыг тодорхойлно. Ингэснээр ижил клиентийн IP хаяг үргэлж ижил серверт очих бөгөөд серверүүд нь ижил хэвээр байх болно.

Аппликешны түвшинд ачааллын тэнцвэрийг тохируулах (давхарга 7)

Өөр нэг боломжит сонголт бол ачааллын тэнцвэржүүлэгчийг програмын давхарга (давхарга 7) дээр ажиллуулахаар тохируулах явдал бөгөөд энэ нь таны вэб програмын хэсэг өөр хостууд дээр байрлах үед хэрэг болдог. Үүнийг холболтын дамжуулалтыг, жишээлбэл, URL-ээр хязгаарлах замаар хийж болно.

Текст засварлагч ашиглан HAProxy тохиргооны файлыг нээнэ үү:

sudo vi /etc/haproxy/haproxy.cfg

Дараа нь доорх жишээний дагуу frontend болон backend сегментүүдийг тохируулна уу.

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 нь url_blog нэртэй ACL дүрмийг зарладаг бөгөөд энэ нь /blog-ээр эхэлсэн замтай бүх холболтод хамаарна. Use_backend нь url_blog нөхцөлтэй таарч байгаа холболтуудыг blog_back нэртэй backend-ээр гүйцэтгэх ёстой бөгөөд бусад бүх хүсэлтийг өгөгдмөл backend-ээр зохицуулдаг.

Ар талд нь тохиргоо нь өмнөх шигээ http_back гэсэн хоёр бүлэг серверүүдийг, мөн example.com/blog руу холбогдохыг зохицуулдаг blog_back нэртэй шинэ серверүүдийг суулгадаг.

Тохиргоог өөрчилсний дараа файлаа хадгалаад дараах тушаалыг ашиглан HAProxy-г дахин эхлүүлнэ үү.

sudo systemctl restart haproxy

Хэрэв та эхлүүлэх явцад ямар нэгэн анхааруулга эсвэл алдааны мессеж хүлээн авбал тэдгээрийн тохиргоог шалгаж, шаардлагатай бүх файл, хавтас үүсгэсэн эсэхээ шалгаад дахин эхлүүлнэ үү.

Тохиргоог туршиж байна

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

http://load_balancer_public_ip/haproxy?stats

Статистикийн хуудсыг ачаалах үед таны бүх серверүүд ногоон өнгөтэй байвал тохиргоо амжилттай болсон байна!

CentOS дээр HAProxy ачааллын тэнцвэржүүлэгчийг суулгаж байна

Статистикийн хуудас нь таны вэб хостуудыг хянахад хэрэгтэй мэдээлэл, тухайлбал дээш/унасан хугацаа, сессийн тоо зэргийг багтаасан болно. Хэрэв сервер улаанаар тэмдэглэгдсэн бол сервер асаалттай байгаа бөгөөд ачаалал тэнцвэржүүлэгч машинаас ping хийх боломжтой эсэхийг шалгаарай.

Хэрэв таны ачаалал тэнцвэржүүлэгч хариу өгөхгүй байвал HTTP холболтууд галт ханаар хаагдахгүй байгаа эсэхийг шалгаарай. Мөн доорх тушаалыг ашиглан HAProxy ажиллаж байгаа эсэхийг шалгаарай.

sudo systemctl status haproxy

Статистикийн хуудсыг нууц үгээр хамгаалах

Гэсэн хэдий ч, хэрэв статистикийн хуудсыг нүүрэн талд нь жагсаасан бол энэ нь хүн бүрт нээлттэй бөгөөд энэ нь тийм ч сайн санаа биш байж магадгүй юм. Үүний оронд та доорх жишээг haproxy.cfg файлынхаа төгсгөлд нэмснээр түүнд тусгай портын дугаар өгч болно. Солих хэрэглэгчийн нэр и нууц үг аюулгүй зүйлийн төлөө:

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

Шинэ сонсогчийн бүлгийг нэмсний дараа урд талын бүлгээс хуучин статистикийн uri холбоосыг устгана уу. Дуусмагц файлаа хадгалаад HAProxy-г дахин эхлүүлнэ үү.

sudo systemctl restart haproxy

Дараа нь ачааллын тэнцвэржүүлэгчийг шинэ портын дугаараар дахин нээж, тохиргооны файлд заасан хэрэглэгчийн нэр, нууц үгээр нэвтэрнэ үү.

http://load_balancer_public_ip:8181

Таны бүх серверүүд ногоон өнгөтэй байгаа эсэхийг шалгаад хөтөч дээрээ ямар ч портын дугааргүйгээр ачааллын тэнцвэржүүлэгчийн IP-г нээнэ үү.

http://load_balancer_public_ip/

Хэрэв таны арын серверүүд дээр ядаж янз бүрийн буултын хуудас байгаа бол хуудсыг дахин ачаалах бүрт өөр хостоос хариу ирж байгааг анзаарах болно. Та тохиргооны хэсэгт янз бүрийн тэнцвэржүүлэх алгоритмуудыг туршиж үзэх эсвэл шалгаж болно бүрэн баримт бичиг.

Дүгнэлт: HAProxy ачааллын тэнцвэржүүлэгч

HAProxy ачаалал тэнцвэржүүлэгчээ амжилттай тохируулсанд баяр хүргэе! Ачаалал тэнцвэржүүлэх үндсэн тохиргоотой байсан ч та вэб програмынхаа гүйцэтгэл, хүртээмжийг мэдэгдэхүйц сайжруулж чадна. Энэхүү гарын авлага нь HAProxy ашиглан ачааллыг тэнцвэржүүлэх тухай танилцуулга бөгөөд хурдан тохируулах гарын авлагад дурдсанаас хамаагүй илүү зүйлийг хийх боломжтой. Бид өөр өөр тохиргоог ашиглан туршилт хийхийг зөвлөж байна өргөн хүрээтэй баримт бичиг, HAProxy-д ашиглах боломжтой бөгөөд дараа нь үйлдвэрлэлийн орчинд ачааллыг тэнцвэржүүлэхээр төлөвлөж эхлээрэй.

Вэб үйлчилгээгээ өндөр зайтай хамгаалахын тулд олон хостыг ашигласнаар ачаалал тэнцвэржүүлэгч өөрөө бүтэлгүйтлийн цэгийг харуулж магадгүй юм. Та олон ачаалал тэнцвэржүүлэгчийн хооронд хөвөгч IP суулгаснаар өндөр хүртээмжийг сайжруулах боломжтой. Та энэ талаар манай нийтлэлээс илүү ихийг олж мэдэх боломжтой UpCloud дээрх хөвөгч IP хаягуудын тухай нийтлэл.

Хичээлийн талаар дэлгэрэнгүй "Linux администратор. Виртуалчлал ба кластерчлал"***

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

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