Настройка Haproxy на работу с SSL

Posted by

Хочу отработать практические навыки настройки haproxy в паре использования с самоподписанным сертификатом. Зная все что проделано ниже уже можно применять к поставленной в продуктиве задаче. Т.к. пока нет базы и четкого понимания браться за дело – это пустая трата времени.

Цель: При обращении с рабочей станции на фронтенд, балансировщик будет перекидывать меня на доступный хост из трех бекендов. В дальнейшем задачу буду усложнять.

Что понадобится. Где взять под это ресурсы? А я буду использовать свой тестовый полигон на базе гипервизора Debian 10 + Proxmox 6

Так это три тестовых ноды.

Три ноды в роли бекэнда haproxy

VM ID Name IP
114 srv-node1 172.33.33.46
115 srv-node2 172.33.33.47
116 srv-node3 172.33.33.48

+ Еще одна VM под srv-haproxy

+ Eще одна VM (W7X64: Windows 7 Pro SP1 x64)  рабочая станция, с которой

) под рабочую станцию, с которой будут делать запрос к frontend(у) srv-haproxy посредством браузера при обращении на URL вида: https://IP&DNS (srv-haproxy).

Операционная система будет развернута на эти контейнеры через PXE загрузку с применением сервиса FOG Project (172.35.35.8), т.к. на нем уже настроена чтобы система раз и развернулась без какой-либо интерактивности со мной, т.е. применен файл ответов на вопросы установщика.

Шаг №1: На хосте (srv-haproxy) с которого взаимодействую с нодами устанавливаю утилиту sshpass дабы сделать следующее:

А) поставить на ноды пакет Web-сервиса, т.е. apache2

Б) Создать файл, свидетельствующий что это нода такая-то при заходе на Web-адрес ноды URL которой выглядит так: http://IP&DNS(srv-node[1-3]:80)

Приступаю:

по аналогии проделываю для ноды srv-node2 (172.33.33.47) и srv-node3 (172.33.33.48)

Шаг №2: Произвожу первичную настройку нод посредством скрипта преднастройки системы на последующее использование. Скачиваю его из своей локальной сети где он расположен как репозитарий на связке https(Mercurial+Web):

Srv-node1: Ubuntu 18.04 Server (CPU = 1, HDD=40,RAM = 1)

IP: 172.33.33.46/24

Srv-node2: Ubuntu 18.04 Server (CPU = 1, HDD=40,RAM = 1)

IP: 172.33.33.47/24

Srv-node3: Ubuntu 18.04 Server (CPU = 1, HDD=40,RAM = 1)

IP: 172.33.33.48/24

Для последующего удобства одну ноду забекаплю через сервис FOG, как это делается смотреть в заметке: “ Снимаем образ Lubuntu Trusty Desktop через FOG

Шаг №3: Разворачиваю на системе srv-haproxy сервис HAPROXY:

Подключаю PPAрепозитарий содержащий более старшую версию:

Шаг №4:  Сперва делаю резервную копию конфигурационного файла haproxy.cfg:

или

Шаг №5: Вношу собственные настройки в файл haproxy.cfg

Шаг №6: Создаю самоподписанный SSL сертификат для HAProxy:

Создаю приватный ключ:

Создаю Certificate signing request (CSR):

Создаю Self Signed Cerfificate (CRT):

Создаю SSL pem файл:

Шаг №7: Вношу изменения в haproxy.cfg насчет работы с сертификатом:

Шаг №8: После внесения изменений в haproxy.cfg следует проверить его на корректность (-c check mode : only check config files and exit):

Шаг №9: Запускаю HAProxy:

Шаг №10: Моя рекомендация на системе, которая работает, как haproxy обязательно использовать надстройку над iptables: firewalld или ufw.

Шаг №11: Проверяю, на Windows 7 Pro SP1 x64 в файле C:\Windows\System32\drivers\etc\hosts прописываю

Т.к. в сети нет DNS-сервиса то прописываю системы в файл ...\etc\hosts

Указываю в браузере обращение на Frontend: https://172.33.33.2 и меня кидает на srv-node3

Обращаюсь на Frontend через URL вида: https://srv-haproxy:443 и меня перекидывает на Backend

Нажимая клавишу F5 обновляется страница на которую haproxy меня перекидывает.

Если бы у меня был настроенный DNS сервис мне не пришлось бы прописывать в файл hosts и если бы сертификат был не самоподписанный, то строка адреса была бы с замочком.

Итого я для себя разобрал, какие настройки нужно сделать дабы установить haproxy и как он переключает на backend. На этом у меня все, с уважением автор блога Олло Александр aka ekzorchik.