HAProxy балансиране на натоварването между уеб сървърите на Nginx

В тази статия ще покажем настройката на планировчика. HAProxy за два сървъра с инсталиран уеб сървър Nginx (може да бъде заменен от Apache). Във всички случаи CentOS се използва като ОС.

HAProxy - сървърен софтуер за осигуряване на висока наличност и балансиране на натоварването за TCP и HTTP приложения, чрез разпространение на входящи заявки до няколко сървъра. HAProxy се използва в много популярни ресурси, включително кикотене, Instagram, Github, Avito, Амазонка и други.

HAProxy е инсталиран на отделен сървър, който приема клиентски заявки и ги пренасочва към уеб сървърите на Nginx. Общата архитектура на системата е представена по-долу..

Съдържание:

  • Конфигуриране на Nginx на задния сървър
  • Конфигурация на HAProxy балансиращо натоварване
  • Опции за конфигурационен файл на Haproxy.cfg
  • HAProxy събиране на статистически данни

Конфигуриране на Nginx на задния сървър

Нека започнем с инсталирането и конфигурирането на Nginx на нашите уеб сървъри, между които ще бъде балансирано натоварването. Инсталирайте EPEL хранилището и самия nginx с помощта на yum:

#yum инсталирайте epel-release -y
#yum инсталирайте nginx -y

Извърших инсталацията на два сървъра наведнъж, тъй като сървърите са конфигурирани един към един (за паралелно изпълнение на команди на няколко сървъра, можете да използвате pdsh).

По-нататък в конфигурационните файлове Nginx.конф Ние изтъкваме, че сървърите трябва да обработват заявки само от HaProxy сървъра и задните сървъри:

1-ви резервен сървър:

сървър слушам current_server_IP: 80 default_server; разрешаване на IP_server_backend_server; разрешаване на IP_haproxy; отричат ​​всички; име на сървър _; root / usr / share / nginx / html; # Заредете конфигурационни файлове за блока на сървъра по подразбиране. включва /etc/nginx/default.d/*.conf; местоположение /  

Втори сървър:

сървър слушам current_server_IP: 80 default_server; разрешаване на IP_first_backend_server; разрешаване на IP_haproxy; отричат ​​всички; име на сървър _; root / usr / share / nginx / html; # Заредете конфигурационни файлове за блока на сървъра по подразбиране. включва /etc/nginx/default.d/*.conf; местоположение /  

Конфигурацията nginx е стандартна, която току-що добавихме слушайте IP сървъри и затворен достъп до всички, с изключение на нашите сървъри, използващи директиви позволи и отричам.

За да работи уеб сървърът, трябва да отворите връзки на защитната стена чрез firewalld или iptables:

# firewall-cmd - постоянен -add-service = http
# firewall-cmd -reload

Извършете тестова проверка на някой от задните сървъри:

[root @ server ~] # къдряне IP_vtorogo_servera

 тук трябва да получите html документ 

Сървърът даде стандартния индекс nginx файл, което означава, че сървърите си взаимодействат помежду си.

За удобство на проверката промених съдържанието на индексния файл на всеки задния сървър, така че по време на тестване ясно виждам в браузъра кой сървър обработва заявката.

Индексният файл nginx се намира в / usr / share / nginx / html /.

Конфигурация на HAProxy балансиращо натоварване

Нека започнем да инсталираме и конфигурираме HAProxy на сървъра, който ще се използва като балансиращо натоварване.

Инсталирайте HaProxy и извършете основни настройки за балансьора.

#yum инсталирайте epel-release -y

#yum инсталирайте haproxy -y

Заредени плъгини: fasttestmirror Зареждане на скоростта на огледалото от кеширания хост файл epel / x86_64 / metalink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ транзакция Инсталиране: haproxy-1.5.18-9.el7.x86_64 1/1 Проверка: haproxy-1.5.18-9.el7.x86_64 1/1 Инсталиран: haproxy.x86_64 0: 1.5.18-9.el7 Complete! 

За да активирате HaProxy, трябва да добавите Активирано = 1 да подам / и т.н. / по подразбиране / хапрокси:

#nano / etc / default / haproxy

Сега да преминем към самата настройка на HaProxy. В нашата най-проста конфигурация, балансиращият сървър ще обработва всички http заявки и ще ги изпраща на свой ред към задните сървъри.

#nano /etc/haproxy/haproxy.cfg

log / dev / log local0 chroot / var / lib / haproxy pidfile /var/run/haproxy.pid maxconn 4000 потребител haproxy група haproxy daemon по подразбиране режим http log глобална опция httplog опция redispatch retries 3 timeout http-заявка 10s timeout queue 1m timeout connect 10s timeout клиент 1m timeout сървър 1m timeout http-Keep-Live 10s timeout check 10s maxconn 3000 frontend www bind balancer IP: 80 default_backend nginx_pool backend nginx_pool баланс Roundrobin режим http сървър web1 first_backend_server IP: 80 провери сървър web2 80 second_backend_server: 

След като запазите конфигурацията, не забравяйте да проверите синтаксиса с командата:

#haproxy -f /etc/haproxy/haproxy.cfg -c

Ако всичко е наред, ще получите подобен резултат:

Конфигурационният файл е валиден

След това трябва да рестартирате HaProxy и да добавите нейното стартиране CentOS. И също така да отворите необходимите правила за защитната стена.

#systemctl рестартира haproxy

#systemctl активира haproxy

# firewall-cmd -permanent -add-service = http

# firewall-cmd -reload

Това завършва настройката на балансьора, проверете резултата, като отворите IP сървъра с HaProxy в браузъра:

Както можете да видите, и двата сървъра доставят съдържанието от своя страна, балансира работи.

Опции за конфигурационен файл на Haproxy.cfg

Разгледайте основните примери на алгоритмите за работа на HaProxy:

  • roundrobin - алгоритъмът по подразбиране от своя страна изпраща заявки до сървърите. В нашия пример използвахме точно такъв метод;
  • leastconn - избира сървъра с най-малък брой активни връзки. Препоръчва се да кандидатствате по проекти, в които сесиите могат да участват дълго време;
  • източник - избира сървър въз основа на хеш, изграден на базата на IP потребители. В този режим на работа, един и същ клиент винаги ще има достъп до един и същ сървър, ако неговият IP остане непроменен;

Нека да преминем през някои параметри в конфигурационния файл.

блок в световен мащаб:

  • log - поддържайте вход / dev / log, записващ local0 в „обекта“;
  • chroot - настройки за защита, които заключват HAProxy в указаната директория;
  • maxconn - максималният брой конкурентни връзки за процес;
  • потребител - потребителят, от името на който ще се стартира програмата;
  • group - потребителска група, от името на която ще се стартира програмата;
  • демон - стартирайте процеса като демон.

блок по подразбиране. Този раздел описва настройките по подразбиране за всички останали секции, които го следват:

  • дневник - посочва кой дневник да запише (глобален в този случай означава, че се използват параметрите, посочени в глобалния раздел);
  • вид - задава протокола за взаимодействие, приема една от стойностите: tcp, http или health;
  • повторните - броят на опитите за свързване със сървъра в случай на повреда;
  • опция httplog - лог формат, в случай че използвате HAProxy за достъп до HTTP заявки;
  • опция препратена - Позволява на програмата да прекрати и преназначи сесията в случай на отказ на сървъра;
  • contimeout - максимално време за изчакване за успешна връзка със сървъра.

Съществуват и голям брой параметри, свързани с различни изчакване.

HAProxy събиране на статистически данни

Добавете блока със статистически данни към конфигурационния файл:

слушате статистика обвържете: 10001 статистика активира статистика uri / haproxy_stats статистика авт администратор: администратор 

Описание:

  • свързват - порт, на който ще работи преглеждането на статистически данни;
  • статистики се даде възможност на - включва доклади със статистически данни;
  • статистики URI - определяне на адреса на страницата със статистически данни;
  • статистики упълномощаване - вход и парола.
Можете да посочите всеки удобен за вас порт, ако посоченият в статията е зает или не е подходящ за вас.

Също така, за да работят нашите haproxy_stats, трябва да отворите предварително посочения порт на защитната стена:

firewall-cmd - постоянен -add-порт = 10001 / tcp

firewall-cmd -reload

За да видите отчетите за работата на HAProxy, трябва да кликнете върху връзката:

http: // hostname_haproxy: 10001 / haproxy_stats

Отворете адреса на балансьора в браузъра и започнете спам F5. Статистиката по посочената връзка се променя, помощната програма работи.

Това завършва нашата настройка. В статията разгледахме основната конфигурация на HaProxy. В нашия дизайн сървърът за балансиране на натоварването HaProxy се превръща в единична точка на отказ. За да увеличите отказоустойчивостта на конфигурацията, можете да добавите втори HaProxy сървър и да проверите наличността между сървърите с помощта на Keepalived. Получавате нещо подобно.

Има още много опции за използване на модула HAProxy и винаги можете да намерите приложение в него..