Рейтинг:0

HAProxy - Не удается выполнить chroot /var/lib/haproxy

флаг in

Я пытаюсь запустить haproxy в докере, следуя этой статье из блога haproxy. https://www.haproxy.com/blog/haproxy-on-docker-swarm-load-balancing-and-dns-service-discovery/ Я получаю следующую ошибку Не удается выполнить chroot /var/lib/haproxy

hap_haproxy.3.j24pbth7qsup@prox1 | [ВНИМАНИЕ] (1) : Новый рабочий № 1 (9) разветвлен
hap_haproxy.3.j24pbth7qsup@prox1 | [ВНИМАНИЕ] (9) : версия haproxy 2.4.7-b5e51a5
hap_haproxy.3.j24pbth7qsup@prox1 | [ВНИМАНИЕ] (9) : путь к исполняемому файлу — /usr/local/sbin/haproxy
hap_haproxy.3.j24pbth7qsup@prox1 | [ВНИМАНИЕ] (9) : [haproxy.main()] Не удается выполнить chroot(/var/lib/haproxy).
hap_haproxy.3.j24pbth7qsup@prox1 | [ВНИМАНИЕ] (1) : Текущий рабочий №1 (9) вышел с кодом 1 (Выход)

Вот моя конфигурация haproxy

Глобальный
    журнал fd@2 локальный2
# log stdout format raw local0 info
    chroot /var/lib/haproxy
    pid-файл /var/lib/haproxy/haproxy.pid
    максконн 4000
    пользовательский прокси 
    группа haproxy
    stats socket /var/lib/haproxy/stats user haproxy group haproxy mode 660 уровень admin expose-fd listeners
    мастер

докер распознавателей
    сервер имен dns1 127.0.0.11:53
    разрешение_повторных попыток 3
    разрешение тайм-аута 1 с
    тайм-аут повторной попытки 1 с
    держи другие 10 секунд
    удерживать отказался 10s
    удерживать nx 10 с
    тайм-аут удержания 10 сек.
    удерживать действительные 10 с
    держать устаревшие 10s

значения по умолчанию
    тайм-аут соединения 10 сек.
    тайм-аут клиента 30 сек.
    тайм-аут сервера 30 секунд
    журнал глобальный
    режим http
    опция httplog

интерфейс fe_web
    привязать *:8080
    use_backend stat if {path -i /stats}
    default_backend be_service

серверная часть be_service
    круговой баланс
    server-template nginx-6 nginx-Service:80 проверить распознаватели docker init-addr libc, нет

серверная часть be_service_wrong_case
    круговой баланс
    server-template nginx- 6 nginx-service:80 проверить распознаватели docker init-addr libc, нет

внутренняя статистика
    включить статистику
    статистика uri /stats
    статистика обновляется 15с
    статистика шоу-легенды
    статистика шоу-узел

Я проверил dockerfile официального образа и путь /var/библиотека/хапрокси создано. Может кто-нибудь, пожалуйста, скажите мне, что происходит не так? (отредактировано)

Рейтинг:0
флаг us

В тот момент я обнаружил ту же проблему в Haproxy Dockerfile. Может быть, я чего-то не улавливаю. В любом случае простое решение:

Чтобы создать простой контекст докера для отправки:

mkdir haproxy && cd haproxy

Создать Докерфайл следующее:

ОТ debian: яблочко-тонкий

# примерно, https://salsa.debian.org/haproxy-team/haproxy/-/blob/732b97ae286906dea19ab5744cf9cf97c364ac1d/debian/haproxy.postinst#L5-6
ВЫПОЛНИТЬ установить -eux; \
    groupadd --gid 99 --system haproxy; \
    пользовательдобавить \
        --gid прокси \
        --home-dir /var/lib/haproxy \
        --no-создать-дом \
        --система \
        --uid 99 \
        хапрокси \
    ; \
    mkdir /var/lib/haproxy; \
    chown haproxy:haproxy /var/lib/haproxy

ENV HAPROXY_VERSION 2.5.4
ENV HAPROXY_URL https://www.haproxy.org/download/2.5/src/haproxy-2.5.4.tar.gz
ENV HAPROXY_SHA256 dc4015d85c7fef811b459803b763001d809b07a9251dc1864fedb9a07b44aefb

# см. https://sources.debian.net/src/haproxy/jessie/debian/rules/ для полезной навигации по возможным аргументам "make"
ВЫПОЛНИТЬ установить -eux; \
    \
    saveAptMark="$(apt-mark showmanual)"; \
    apt-get update && apt-get install -y --no-install-recommends \
        ca-сертификаты \
        gcc \
        libc6-dev \
        liblua5.3-dev \
        libpcre2-dev \
        libssl-dev\
        делать \
        wget \
    ; \
    rm -rf /var/lib/apt/lists/*; \
    \
    wget -O haproxy.tar.gz "$HAPROXY_URL"; \
    эхо "$HAPROXY_SHA256 *haproxy.tar.gz" | ша256сум -с; \
    mkdir -p /usr/src/haproxy; \
    tar -xzf haproxy.tar.gz -C /usr/src/haproxy --strip-components=1; \
    rm haproxy.tar.gz; \
    \
    makeOpts=' \
        ЦЕЛЬ=linux-glibc \
        USE_GETADDRINFO=1 \
        USE_LUA=1 LUA_INC=/usr/include/lua5.3 \
        USE_OPENSSL=1 \
        USE_PCRE2=1 USE_PCRE2_JIT=1 \
        USE_PROMEX=1 \
        \
        EXTRA_OBJS=" \
        " \
    '; \
# https://salsa.debian.org/haproxy-team/haproxy/-/commit/53988af3d006ebcbf2c941e34121859fd6379c70
    dpkgArch="$(dpkg --print-architecture)"; \
    case "$dpkgArch" в \
        armel) makeOpts="$makeOpts ADDLIB=-latomic" ;; \
    эсак; \
    \
    nproc="$(nproc)"; \
    eval "сделать -C /usr/src/haproxy -j '$nproc' все $makeOpts"; \
    eval "make -C /usr/src/haproxy install-bin $makeOpts"; \
    \
    mkdir -p /usr/local/etc/haproxy; \
    cp -R /usr/src/haproxy/examples/errorfiles /usr/local/etc/haproxy/errors; \
    rm -rf /usr/src/haproxy; \
    \
    apt-mark auto '.*' > /dev/null; \
    [ -z "$savedAptMark" ] || руководство по метке apt $savedAptMark; \
    найти /usr/local -type f -executable -exec ldd '{}' ';' \
        | awk '/=>/ { print $(NF-1) }' \
        | сортировать -у \
        | xargs -r dpkg-запрос --поиск \
        | вырезать -d: -f1 \
        | сортировать -у \
        | xargs -r apt-mark руководство \
    ; \
    apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
    \
# дымовой тест
    хапрокси -v

# https://www.haproxy.org/download/1.8/doc/management.txt
# "4. Остановка и перезапуск HAProxy"
# "когда сигнал SIGTERM отправляется процессу haproxy, он немедленно завершает работу и все установленные соединения закрываются"
# "изящная остановка срабатывает, когда сигнал SIGUSR1 отправляется в процесс haproxy"
СТОП-СИГНАЛ SIGUSR1

КОПИРОВАТЬ docker-entrypoint.sh /usr/local/bin/
ТОЧКА ВХОДА ["docker-entrypoint.sh"]

ПОЛЬЗОВАТЕЛЬ
CMD ["haproxy", "-f", "/usr/local/etc/haproxy/haproxy.cfg"]

Затем создайте докер-entrypoint.sh следующее:

коснитесь docker-entrypoint.sh

и вставьте следующее содержимое:

#!/бин/ш
установить -е

# первый аргумент `-f` или `--some-option`
если [ "${1#-}" != "$1" ]; тогда
    установить -- haproxy "$@"
фи

если [ "$1" = 'haproxy' ]; тогда
    сдвиг # "хапрокси"
    # если пользователь хочет "haproxy", добавим пару полезных флагов
    # -W -- "режим master-worker" (похож на старый "haproxy-systemd-wrapper"; позволяет перезагружаться через "SIGUSR2")
    # -db -- отключает фоновый режим
    установить -- haproxy -W -db "$@"
фи

выполнить "$@"

После этих шагов вы можете создать рабочий образ haproxy: сборка докеров -t haproxy .

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.