Проект «SnakeProject» Михаила КозловаРегистрация

Навигация
⇒FreeBSD and Nix⇒

⇐CISCO
⇐Voice(Asterisk\Cisco)
⇐Microsoft
⇐Powershell
⇐Python
⇐SQL\T-SQL
⇐1С
⇐Общая
⇐WEB Разработка
⇐ORACLE SQL \ JAVA
⇐Мото

Centos 7: настройка haproxy


 

Centos 7: настройка haproxy


Задача:
Настроить балансировку нагрузки по алгоритму Round Robin


Имеем по условиям задачи:
Сервер 1 - балансировщик haproxy - 10.0.2.10
Сервер 2 - веб nginx\apache - 10.0.2.20
Сервер 3 - веб nginx\apache - 10.0.2.30

 

Сервер 1

Обновляемся:
yum update

Установка haproxy:
yum install haproxy

Автозагрузка и включение:
systemctl enable haproxy && systemctl start haproxy


Добавляем записи о соседних серверах с nginx:
vi /etc/hosts
10.0.2.20  nginx1.domain.local  nginx1
10.0.2.30  nginx2.domain.local  nginx2


Бэкапим конфигурационный файл:
cd /etc/haproxy/ && cp haproxy.cfg haproxy.cfg.original


Секции:
global - Глобальные настройки, применяются ко всем публикациям
defaults - Настройки по умолчанию, применяются если не указаны явно в публикациях
frontend - Правила обработки и передачи приходящих на сервер с haproxy запросов серверам в backend
backend - Настройки backend серверов
userlist - Допсекция


Пример настройки секции frontend:
frontend balance_http
    bind 10.0.2.10:8080

    acl url_stat path_end -i .css .js

    use_backend webserver if url_stat
    default_backend webserver


Где:
balance_http - название фронтэнда
url_stat - название правила

use_backend webserver if url_stat - правило обработки
Запросы попавшие под действие правила обработаются backend с названием webserver

Слушаем запросы на порту 8080, ip - 10.0.2.10

Поступающие на файлы с расширением .css\.js запросы передаем на backend с названием webserver

Остальные запросы передаем на backend с названием webserver

default_backend - указывает на backend по умолчанию


Пример настройки секции backend:
backend webserver
    balance roundrobin
    server  nginx1 10.0.2.20:80  check
    server  nginx2 10.0.2.30:80  check
    
Где алгоритм балансировки запросов:
roundrobin - по очередно на каждый сервер в зависимости от указанного веса, вес может быть изменен на лету
static-rr - по очередно на каждый сервер в зависимости от указанного веса, вес не может быть изменен на лету

uri - с одинковыми url (все, что до знака ?) будут идти на один и тот-же сервер
url_param - с одинаковыми параметрами get (все, что после знака ?) будут идти на один и тот-же сервер

lessconn - на наменее загруженный сервер с наименьшим количеством активных соединений
source - от одного и того-же ip адреса идут на один и тот-же сервер


После изменения конфига рестартуем сервер:
systemctl restart haproxy или systemctl reload haproxy && systemctl status haproxy

 

Пример настройки HTTPS

frontend balance_https
    bind *:443 ssl crt /etc/ssl/sitecert.pem
    reqadd X-Forwarded-Proto:\ https
    default_backend balance_https

backend balance_https
    redirect scheme https if !{ ssl_fc }
    server nginx1 10.0.2.20:80 check
    server nginx2 10.0.2.30:80 check

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

© Snakeproject.ru создан в 2013 году. При копировании материала с сайта - оставьте ссылку.


Яндекс.Метрика

Goon Каталог сайтов Рейтинг@Mail.ru