Я новичок в Linux и пытаюсь настроить HAProxy с переменными среды. Я использую Debian 8 (Jessie) и HAProxy 1.5.8, которые я установил с помощью apt-get
согласно https://haproxy.debian.net/#?distribution=Debian&release=jessie&version=1.5
Без переменных окружения конфигурация работает отлично.
Я следовал инструкциям из этот ответ (установка переменной среды из /etc/init.d/haproxy
), чтобы переменные среды работали, но все равно получил ответ 503 - Служба недоступна.
Я тогда просмотрел /etc/init.d/haproxy
и подумал, что эти две строки, возможно, изменили объем доступных переменных
[ -f /etc/default/rcS ] && . /etc/default/rcS
. /lib/lsb/init-functions
поэтому я их закомментировал.
Затем я могу запустить HAProxy, используя sudo /etc/init.d/haproxy start
и моя конфигурация работает так, как я ожидал, но когда я пытаюсь запустить sudo service haproxy start
Я по-прежнему получаю 503 - Служба недоступна.
Мне кажется как этот вопрос есть ответ, который я ищу, но мне не удалось перевести ответы оттуда на свой домен.
Это часть файла haproxy.cfg, где я использую переменные среды:
backend backend1
server EnvVar ${SERVER_IP}:86 maxconn 512
Я также просмотрел некоторые другие вопросы здесь, но не нашел решения своей проблемы.
Как мне установить переменную среды, чтобы ее можно было прочитать haproxy, когда haproxy запущен как служба?
Я наконец-то понял.
В /lib/systemd/system/haproxy.service
есть такая строка
EnvironmentFile=-/etc/default/haproxy
Я заглянул в /etc/default/haproxy
и вот как это выглядит:
# Defaults file for HAProxy
#
# This is sourced by both, the initscript and the systemd unit file, so do not
# treat it as a shell script fragment.
# Change the config file location if needed
#CONFIG="/etc/haproxy/haproxy.cfg"
# Add extra flags here, see haproxy(1) for a few options
#EXTRAOPTS="-de -m 16"
Я добавил туда свою переменную среды и отменил остальные мои изменения, и она работает как при запуске как службы, так и при ее прямом запуске с использованием /etc/init.d/haproxy
.
Это строка, которую я добавил:
SERVER_IP=165.88.76.44
Этот ответ правильный и правильно работает на haproxy 1.7 - 1.8
Вот простой скрипт для улучшения использования нескольких файлов haproxy:
cd /etc/sysconfig
for i in haproxy_*; do
echo $i;
echo "MY_SERVER=$(hostname -i)" >> $i
done
Теперь в настройках Haproxy:
...
backend lochttps
server server_name ${MY_SERVER}:60441 check ssl verify none id 1
...