УЧЕБНАЯ ЛАБОРАТОРИЯ HAProxy — редакция 1

Все слушатели используют только 127.0.0.1. Один хост не даёт физической отказоустойчивости.
Не заменяйте /etc/haproxy/haproxy.cfg. Заранее проверьте свободные порты
18080, 18081, 18082, 18404, 18443 и содержимое каталога ~/avg-haproxy-lab.
Пакеты: haproxy, python3, curl, socat, openssl. Права администратора нужны для установки.

Поместите файлы в $HOME/avg-haproxy-lab. Скрипты запускают командой bash ИМЯ.sh.
Не выполняйте все скрипты подряд: серверные процессы занимают разные терминалы.

1. Выполните prepare.sh и write-config.sh для учебных файлов.
2. В терминале A запустите backend-a.sh, в B — backend-b.sh; оставьте их работающими.
3. В D выполните check-direct.sh и validate.sh. При успешной проверке в C запустите run-http.sh.
4. В D выполните check-pool.sh, check-stats.sh и check-acl.sh. Сопоставьте ответы с журналом.
5. Ctrl+C только в A: проверьте ошибки, состояние и работу B. Снова запустите backend-a.sh,
   дождитесь успешных проверок и подтвердите возврат A.
6. В D выполните drain-a.sh, проверьте пул, затем ready-a.sh и снова проверьте результат.
7. Необязательный TLS: create-lab-cert.sh, create-tls-config.sh, validate-tls.sh.
   При успешной проверке остановите только C через Ctrl+C, запустите run-tls.sh.
   В D выполните check-tls.sh. Проверка сертификата сохраняется.

Остановка лаборатории: Ctrl+C в своих терминалах A, B и C.
Удаление файлов не обязательно. Защищайте приватный ключ.
Runtime-изменения не сохранены в конфиге. Версию и функции сборки нужно проверить отдельно.

Реального запуска HAProxy, его -c, переключения и TLS при подготовке не было.
bash -n и отдельная проверка Python-backend не являются проверкой HAProxy целиком.
Подробные пояснения, ограничения и первичные источники приведены в статье.
