Điểm:0

HAProxy - Không thể chroot /var/lib/haproxy

lá cờ in

Tôi đang cố chạy haproxy trong docker bằng cách theo dõi bài viết này từ blog haproxy. https://www.haproxy.com/blog/haproxy-on-docker-swarm-load-balancing-and-dns-service-detecty/ Tôi nhận được lỗi sau Không thể chroot /var/lib/haproxy

hap_haproxy.3.j24pbth7qsup@prox1 | [THÔNG BÁO] (1): Công nhân mới #1 (9) rẽ nhánh
hap_haproxy.3.j24pbth7qsup@prox1 | [THÔNG BÁO] (9): phiên bản haproxy là 2.4.7-b5e51a5
hap_haproxy.3.j24pbth7qsup@prox1 | [THÔNG BÁO] (9): đường dẫn đến tệp thực thi là /usr/local/sbin/haproxy
hap_haproxy.3.j24pbth7qsup@prox1 | [ALERT] (9): [haproxy.main()] Không thể chroot(/var/lib/haproxy).
hap_haproxy.3.j24pbth7qsup@prox1 | [CẢNH BÁO] (1): Công nhân hiện tại #1 (9) đã thoát với mã 1 (Thoát)

Đây là cấu hình haproxy của tôi

toàn cầu
    đăng nhập fd@2 local2
# log định dạng thiết bị xuất chuẩn thông tin local0 thô
    chroot /var/lib/haproxy
    pidfile /var/lib/haproxy/haproxy.pid
    maxconn 4000
    người dùng haproxy 
    nhóm haproxy
    ổ cắm thống kê /var/lib/haproxy/stats người dùng haproxy nhóm chế độ haproxy 660 quản trị viên cấp trình bày trình nghe fd
    thợ cả

trình giải quyết docker
    máy chủ định danh dns1 127.0.0.11:53
    giải quyết_retries 3
    thời gian chờ giải quyết 1 giây
    hết thời gian thử lại 1s
    giữ 10s khác
    giữ từ chối 10s
    giữ nx 10s
    giữ thời gian chờ 10 giây
    giữ 10s hợp lệ
    giữ 10s lỗi thời

mặc định
    hết thời gian kết nối 10s
    máy khách hết thời gian 30 giây
    máy chủ hết thời gian 30 giây
    đăng nhập toàn cầu
    chế độ http
    tùy chọn httplog

giao diện người dùng fe_web
    ràng buộc *:8080
    use_backend stat if { path -i /stats }
    default_backend be_service

phụ trợ be_service
    thăng bằng vòng tròn
    server-template nginx- 6 nginx-Service:80 trình phân giải kiểm tra docker init-addr libc,none

phụ trợ be_service_wrong_case
    thăng bằng vòng tròn
    server-template nginx- 6 nginx-service:80 kiểm tra trình phân giải docker init-addr libc,none

thống kê phụ trợ
    kích hoạt số liệu thống kê
    số liệu thống kê uri / số liệu thống kê
    thống kê làm mới 15 giây
    số liệu thống kê huyền thoại
    nút hiển thị số liệu thống kê

Tôi đã kiểm tra dockerfile của hình ảnh chính thức và đường dẫn /var/lib/haproxy được tạo ra. Ai đó có thể vui lòng cho tôi biết những gì đang xảy ra? (đã chỉnh sửa)

Điểm:0
lá cờ us

Tại thời điểm tôi tìm thấy cùng một vấn đề trong Haproxy Dockerfile. Có lẽ đó là một cái gì đó mà tôi không nắm bắt được. Dù sao một giải pháp đơn giản:

Để tạo một bối cảnh docker đơn giản để gửi:

mkdir haproxy && cd haproxy

Tạo một Dockerfile như sau:

TỪ debian:bullseye-slim

# đại khái, https://salsa.debian.org/haproxy-team/haproxy/-/blob/732b97ae286906dea19ab5744cf9cf97c364ac1d/debian/haproxy.postinst#L5-6
CHẠY bộ -eux; \
    groupadd --gid 99 --system haproxy; \
    người dùng \
        --gid haproxy \
        --home-dir /var/lib/haproxy \
        --no-tạo-nhà \
        --hệ thống \
        --uid 99 \
        haproxy \
    ; \
    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

# xem https://sources.debian.net/src/haproxy/jessie/debian/rules/ để biết một số điều hướng hữu ích về các đối số "tạo" có thể
CHẠY bộ -eux; \
    \
    đã lưuAptMark="$(apt-mark showmanual)"; \
    apt-get update && apt-get install -y --no-install-recommends \
        chứng chỉ ca \
        gcc \
        libc6-dev \
        liblua5.3-dev \
        libpcre2-dev \
        libssl-dev \
        chế tạo \
        quên \
    ; \
    rm -rf /var/lib/apt/lists/*; \
    \
    wget -O haproxy.tar.gz "$HAPROXY_URL"; \
    tiếng vang "$HAPROXY_SHA256 *haproxy.tar.gz" | sha256sum -c; \
    mkdir -p /usr/src/haproxy; \
    tar -xzf haproxy.tar.gz -C /usr/src/haproxy --strip-components=1; \
    rm haproxy.tar.gz; \
    \
    makeOpts=' \
        MỤC TIÊU=linux-glibc \
        USE_GETADDRINFO=1 \
        USE_LUA=1 LUA_INC=/usr/include/lua5.3 \
        USE_OPENSSL=1 \
        USE_PCRE2=1 USE_PCRE2_JIT=1 \
        SỬ DỤNG_PROMEX=1 \
        \
        EXTRA_OBJS="\
        " \
    '; \
# https://salsa.debian.org/haproxy-team/haproxy/-/commit/53988af3d006ebcbf2c941e34121859fd6379c70
    dpkgArch="$(dpkg --print-architecture)"; \
    trường hợp "$dpkgArch" trong \
        armel) makeOpts="$makeOpts ADDLIB=-latomic" ;; \
    esac; \
    \
    nproc="$(nproc)"; \
    eval "make -C /usr/src/haproxy -j '$nproc' all $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" ] || thủ công apt-mark $savedAptMark; \
    tìm /usr/local -type f -executable -exec ldd '{}' ';' \
        | awk '/=>/ { in $(NF-1) }' \
        | sắp xếp -u \
        | xargs -r dpkg-query --search \
        | cắt -d: -f1 \
        | sắp xếp -u \
        | hướng dẫn sử dụng xargs -r apt-mark \
    ; \
    apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
    \
# thử khói
    haproxy -v

# https://www.haproxy.org/download/1.8/doc/manager.txt
# "4. Dừng và khởi động lại HAProxy"
# "khi tín hiệu SIGTERM được gửi đến quy trình haproxy, nó sẽ ngay lập tức thoát và tất cả các kết nối đã thiết lập đều bị đóng"
# "dừng duyên dáng được kích hoạt khi tín hiệu SIGUSR1 được gửi đến quy trình haproxy"
TÍN HIỆU DỪNG SIGUSR1

SAO CHÉP docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT ["docker-entrypoint.sh"]

NGƯỜI DÙNG
CMD ["haproxy", "-f", "/usr/local/etc/haproxy/haproxy.cfg"]

Sau đó tạo docker-entrypoint.sh như sau:

chạm vào docker-entrypoint.sh

và dán nội dung sau:

#!/bin/sh
đặt -e

# đối số đầu tiên là `-f` hoặc `--some-option`
nếu [ "${1#-}" != "$1" ]; sau đó
    đặt -- haproxy "$@"
fi

nếu [ "$1" = 'haproxy' ]; sau đó
    thay đổi # "haproxy"
    # nếu người dùng muốn "haproxy", hãy thêm một vài cờ hữu ích
    # -W -- "chế độ master-worker" (tương tự như "haproxy-systemd-wrapper" cũ; cho phép tải lại qua "SIGUSR2")
    # -db -- tắt chế độ nền
    đặt -- haproxy -W -db "$@"
fi

thực thi "$@"

Sau các bước này, bạn có thể xây dựng hình ảnh haproxy đang hoạt động của mình: docker build -t haproxy .

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.