Нийтлэлийн орчуулгыг курс эхлэхийн өмнөх өдөр бэлтгэсэн
Ачааллын тэнцвэржүүлэгч нь вэб програмуудыг олон хостуудаар хэвтээ байдлаар масштаблахын зэрэгцээ хэрэглэгчдэд үйлчилгээнд нэвтрэх нэг цэгээр хангах нийтлэг шийдэл юм.
HAProxy нь нөөцийн ашиглалтыг оновчтой болгох, дамжуулах чадварыг нэмэгдүүлэх, хариу өгөх хугацааг багасгах, аливаа нөөцийг хэт ачаалахаас зайлсхийхийг хичээдэг. Үүнийг бидний энэ гарын авлагад анхаарлаа хандуулах CentOS 8 гэх мэт олон төрлийн Linux түгээлтүүд болон системүүд дээр суулгаж болно.
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
Доорх командыг ашиглан эх кодыг татаж авна уу. Та шинэ хувилбар байгаа эсэхийг шалгаж болно
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 хаягийг шалгаж болно
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
Статистикийн хуудсыг ачаалах үед таны бүх серверүүд ногоон өнгөтэй байвал тохиргоо амжилттай болсон байна!
Статистикийн хуудас нь таны вэб хостуудыг хянахад хэрэгтэй мэдээлэл, тухайлбал дээш/унасан хугацаа, сессийн тоо зэргийг багтаасан болно. Хэрэв сервер улаанаар тэмдэглэгдсэн бол сервер асаалттай байгаа бөгөөд ачаалал тэнцвэржүүлэгч машинаас 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 ашиглан ачааллыг тэнцвэржүүлэх тухай танилцуулга бөгөөд хурдан тохируулах гарын авлагад дурдсанаас хамаагүй илүү зүйлийг хийх боломжтой. Бид өөр өөр тохиргоог ашиглан туршилт хийхийг зөвлөж байна
Вэб үйлчилгээгээ өндөр зайтай хамгаалахын тулд олон хостыг ашигласнаар ачаалал тэнцвэржүүлэгч өөрөө бүтэлгүйтлийн цэгийг харуулж магадгүй юм. Та олон ачаалал тэнцвэржүүлэгчийн хооронд хөвөгч IP суулгаснаар өндөр хүртээмжийг сайжруулах боломжтой. Та энэ талаар манай нийтлэлээс илүү ихийг олж мэдэх боломжтой
Хичээлийн талаар дэлгэрэнгүй
Эх сурвалж: www.habr.com