[HAProxy] Установка HAProxy на Centos 8

Привет, %username%! Тут мы будем устанавливать свежую стабильную версию HAProxy из исходников, т.к. в репах доступна еще 1.8.15.

Чтобы скомпилировать HAProxy, нужно будет убедиться, что установлено несколько пакетов из стандартных репозиториев. Один из необходимых пакетов находится в репе PowerTools. Включить данный репозиторий можно так:

dnf config-manager --enable PowerTools

После чего нам необходимо установить набор обязательных утилит, которые потребуются при сборке из исходников:

dnf install gcc openssl-devel readline-devel systemd-devel make pcre-devel tar lua lua-devel

Далее идем на официальный сайт и узнаём последний стабильный релиз, копируем ссылку на архив и скачиваем. В моём случае (на момент написания этих строк) последний стабильный 2.1.4:

wget http://www.haproxy.org/download/2.1/src/haproxy-2.1.4.tar.gz -O ~/haproxy.tar.gz

Распаковываем и переходим в директорию с исходниками:

tar xzvf ~/haproxy.tar.gz -C ~/
cd haproxy-2.1.4/

Далее компилируем и устанавливаем:

make USE_NS=1 USE_TFO=1 \
USE_OPENSSL=1 USE_ZLIB=1 \
USE_LUA=1 USE_PCRE=1 \
USE_SYSTEMD=1 USE_LIBCRYPT=1 \
USE_THREAD=1 TARGET=linux-glibc \
EXTRA_OBJS="contrib/prometheus-exporter/service-prometheus.o"
make install

Создаем пользователя под которым будет запускаться демон HAProxy:

groupadd -g 992 haproxy
useradd -g 992 -u 995 -m -d /var/lib/haproxy -s /sbin/nologin -c haproxy haproxy

Теперь нам необходимо создать SystemD Unit файл для корректного запуска демона:

cat /etc/systemd/system/haproxy.service
[Unit]
Description=HAProxy
After=syslog.target network.target

[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/haproxy
ExecStart=/usr/local/sbin/haproxy -f $CONFIG_FILE -p $PID_FILE $CLI_OPTIONS
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -USR1 $MAINPID

[Install]
WantedBy=multi-user.target

Сигнал USR2 дает команду HAProxy перезагрузить свою конфигурацию, не приводя ее в действие. Сигнал USR1 позволяет процессам закончить то, что они делали до выхода.

Теперь нам необходимо создать environment-файл для HAProxy:

cat /etc/sysconfig/haproxy
CLI_OPTIONS="-Ws"
CONFIG_FILE=/etc/haproxy/haproxy.cfg
PID_FILE=/var/run/haproxy.pid 

Параметр -Ws запускает HAProxy в режиме, в котором он может уведомить SystemD, когда он будет запущен.

После этого необходимо попросить SystemD перечитать информацию о демонах:

systemctl daemon-reload

Подготавливаем конфигурацию для HAProxy:

cat /etc/haproxy/haproxy.cfg
global
    daemon
    maxconn 256
    user        haproxy
    group       haproxy
    chroot      /var/lib/haproxy

defaults
    mode http
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

frontend http
    bind *:8000
    default_backend servers

backend servers
    server server 127.0.0.1:81

Теперь запускаем HAProxy и включаем в автозапуск:

systemctl start haproxy.service
systemctl enable haproxy.service

Так же не забудьте про firewall-cmd и открытие портов:

firewall-cmd --permanent --zone=public --add-port=8000/tcp
firewall-cmd --reload

На этом всё! Profit!

UPD: Поправил параметры сборки, для того, чтобы свежесбилженый HAProxy включил поддержку Prometheus

Понравился пост? Узнайте, как можно сказать автору спасибо.

Также подпишитесь на Telegram, Twitter или RSS.

JTProg avatar
JTProg
RTFM!!!
comments powered by Disqus