Инсталирање на HAProxy load balancer на CentOS

Преводот на статијата е подготвен во пресрет на почетокот на курсот „Администратор на Линукс. Виртуелизација и кластерирање“

Инсталирање на HAProxy load balancer на CentOS

Балансирањето на оптоварување е вообичаено решение за хоризонтално скалирање на веб-апликациите низ повеќе хостови додека на корисниците им се обезбедува единствена точка на пристап до услугата. HAProxy е еден од најпопуларните софтвери за балансирање на оптоварување со отворен код кој исто така обезбедува висока достапност и функционалност на прокси.

HAProxy се стреми да го оптимизира користењето на ресурсите, да ја максимизира пропусната моќ, да го минимизира времето на одговор и да избегне преоптоварување на секој поединечен ресурс. Може да се инсталира на различни дистрибуции на Linux, како што е CentOS 8, на кој ќе се фокусираме во овој водич, како и системи Debian 8 и Убунту 16.

Инсталирање на HAProxy load balancer на CentOS

HAProxy е особено погоден за веб-локации со многу висок сообраќај и затоа често се користи за подобрување на доверливоста и перформансите на конфигурациите на веб-услугите со повеќе сервери. Овој водич ги прикажува чекорите за поставување на HAProxy како балансирач на оптоварување на CentOS 8 cloud-домаќин, кој потоа го насочува сообраќајот до вашите веб-сервери.

Како предуслов за најдобри резултати, треба да имате најмалку два веб-сервери и сервер за балансирање на оптоварување. Веб-серверите мора да работат барем со основна веб-услуга како што се 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. Уредете ги дозволите за датотеката така што скриптата ќе работи, а потоа рестартирајте го системскиот демон:

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

Поставување на Load Balancer

Поставувањето на HAProxy е прилично едноставен процес. Во суштина, сè што треба да направите е да му кажете на HAProxy кои врски треба да ги слуша и каде треба да ги пренесе.

Ова се прави со креирање на конфигурациска датотека /etc/haproxy/haproxy.cfg со дефинирање на поставките. Можете да прочитате за опциите за конфигурација на HAProxy на страницата со документацијаако сакате да дознаете повеќе за тоа.

Балансирање на товарот на транспортниот слој (слој 4)

Да почнеме со основното поставување. Креирајте нова конфигурациска датотека, на пример користејќи vi со командата подолу:

sudo vi /etc/haproxy/haproxy.cfg

Додадете ги следните делови во датотеката. Заменете име на сервер што треба да ги нарекуваат вашите сервери на страницата за статистика, и 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 ја поврзува страницата за статистика со наведената адреса.

Различни алгоритми за балансирање на оптоварување.

Специфицирањето на серверите во делот за backend му овозможува на HAProxy да ги користи овие сервери за балансирање на оптоварување според кружен алгоритам кога е можно.

Алгоритмите за балансирање се користат за да се одреди на кој сервер во задниот дел се пренесува секоја врска. Еве некои од корисните опции:

  • Раундробин: Секој сервер се користи за возврат според неговата тежина. Ова е најмазниот и најправеден алгоритам кога времето за обработка на серверите останува рамномерно распределено. Овој алгоритам е динамичен, што овозможува приспособување на тежината на серверот во лет.
  • Лесткон: се избира серверот со најмалку врски. Round robin се изведува помеѓу сервери со исто оптоварување. Користењето на овој алгоритам се препорачува за долги сесии како LDAP, SQL, TSE итн., но не е многу погоден за кратки сесии како што е HTTP.
  • Прво: Првиот сервер со достапни слотови за поврзување ја прима врската. Серверите се избираат од најниската нумеричка ID до највисоката, која стандардно ја поставува позицијата на серверот во фармата. Откако серверот ќе стигне до maxconn, се користи следниот сервер.
  • извор: Изворната 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

Предниот дел декларира правило ACL наречено url_blog кое се применува на сите врски со патеки кои започнуваат со /blog. Use_backend одредува дека врските што се совпаѓаат со условот url_blog треба да се опслужуваат од заднина со име blog_back, а сите други барања се обработуваат од стандардниот заден дел.

На задната страна, конфигурацијата поставува две групи сервери: http_back, како и досега, и нова наречена blog_back, која се справува со врските со example.com/blog.

Откако ќе ги промените поставките, зачувајте ја датотеката и рестартирајте го HAProxy користејќи ја следнава команда:

sudo systemctl restart haproxy

Ако примите предупредувања или пораки за грешка при стартувањето, проверете ја конфигурацијата за нив и проверете дали сте ги создале сите потребни датотеки и папки, а потоа обидете се повторно да го рестартирате.

Тестирање на поставувањето

Откако ќе се конфигурира и работи HAProxy, отворете ја јавната IP адреса на серверот за балансирање на оптоварување во прелистувачот и проверете дали сте правилно поврзани со заднината. Параметарот stats uri во конфигурацијата создава страница за статистика на наведената адреса.

http://load_balancer_public_ip/haproxy?stats

Кога ја вчитувате страницата за статистика, ако сите ваши сервери се покажат зелено, тогаш поставувањето беше успешно!

Инсталирање на HAProxy load balancer на CentOS

Страницата за статистика содржи некои корисни информации за следење на вашите веб-домаќини, вклучувајќи го времето нагоре/надолу и бројот на сесии. Ако серверот е означен со црвено, проверете дали серверот е вклучен и дека можете да го пингувате од машината за балансирање на оптоварување.

Ако вашиот баланс на оптоварување не реагира, проверете дали HTTP-врските не се блокирани од заштитен ѕид. Исто така, проверете дали HAProxy работи користејќи ја командата подолу:

sudo systemctl status haproxy

Заштита на страницата за статистика со лозинка

Меѓутоа, ако страницата за статистика е едноставно наведена на предната страна, тогаш таа е отворена за сите да ја видат, што можеби не е добра идеја. Наместо тоа, можете да му доделите сопствен број на порта со додавање на примерот подолу на крајот од вашата датотека haproxy.cfg. Заменете корисничко име и лозинка за нешто безбедно:

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

Откако ќе додадете нова група слушатели, отстранете ја старата врска за статистика од предниот дел. Кога ќе завршите, зачувајте ја датотеката и рестартирајте го HAProxy.

sudo systemctl restart haproxy

Потоа повторно отворете го load balancer со новиот број на порта и најавете се со корисничкото име и лозинката што ги наведовте во конфигурациската датотека.

http://load_balancer_public_ip:8181

Осигурајте се дека сите ваши сервери сè уште се прикажуваат зелено, а потоа отворете ја само IP адресата за балансирање на оптоварување без броеви на порти во вашиот прелистувач.

http://load_balancer_public_ip/

Ако имате барем одредена разновидност на целни страници на вашите задни сервери, ќе забележите дека секогаш кога повторно ќе ја вчитате страницата добивате одговор од различен домаќин. Може да пробате различни алгоритми за балансирање во делот за конфигурација или да се проверите комплетна документација.

Заклучок: HAProxy Load Balancer

Честитки за успешното поставување на вашиот HAProxy load balancer! Дури и со основно поставување за балансирање на оптоварување, можете значително да ги подобрите перформансите и достапноста на вашата веб-апликација. Овој водич е само вовед во балансирање на вчитување со HAProxy, кој е способен за многу повеќе од она што може да се опфати во водичот за брзо поставување. Препорачуваме да експериментирате со различни конфигурации користејќи обемна документација, достапни за HAProxy, а потоа започнете да планирате балансирање на оптоварување за вашата производна средина.

Со користење на повеќе хостови за заштита на вашата веб-услуга со простор за глава, самиот балансирач на оптоварување сè уште може да претставува точка на дефект. Можете дополнително да ја подобрите високата достапност со инсталирање на лебдечка IP адреса помеѓу повеќе балансери на оптоварување. Можете да дознаете повеќе за ова во нашата статија за лебдечки IP адреси на UpCloud.

Повеќе за курсот „Администратор на Линукс. Виртуелизација и кластерирање“***

Извор: www.habr.com

Додадете коментар