docker-compose.yml:

----------------------------------------------------------------------------------------

version: '2'

services:

  haproxy:

    p_w_picpath: haproxy:latest

    volumes:

      - /path/to/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg

    ports:

      - 23456:23456

    networks:

      - my-load

networks:

  my-load:

    external: true

------------------------------------------------------------------------------------------

haproxy.cfg: (监听tcp协议)

--------------------------------------------------------------------------------------

global

    log         127.0.0.1 local2


defaults

    timeout connect         5000ms

    timeout client          5000ms

    timeout server          5000ms


resolvers docker_dns

    nameserver dns "127.0.0.11:53"

    timeout retry  1s

    hold valid 1s


listen tcp_proxy

    mode tcp

    bind :23456

    log global

    server  app_1 phpcli_php_1:23456 check resolvers docker_dns resolve-prefer ipv4

    server  app_2 phpcli_php_2:23456 check resolvers docker_dns resolve-prefer ipv4

    server  app_3 phpcli_php_3:23456 check resolvers docker_dns resolve-prefer ipv4

    server  app_4 phpcli_php_4:23456 check resolvers docker_dns resolve-prefer ipv4

    server  app_5 phpcli_php_5:23456 check resolvers docker_dns resolve-prefer ipv4

    server  app_6 phpcli_php_6:23456 check resolvers docker_dns resolve-prefer ipv4

    server  app_7 phpcli_php_7:23456 check resolvers docker_dns resolve-prefer ipv4

    server  app_8 phpcli_php_8:23456 check resolvers docker_dns resolve-prefer ipv4

    server  app_9 phpcli_php_9:23456 check resolvers docker_dns resolve-prefer ipv4

    server  app_10 phpcli_php_10:23456 check resolvers docker_dns resolve-prefer ipv4

  ----------------------------------------------------------------------------------------

haproxy.cfg:(http协议)

global

    log         127.0.0.1 local2


    maxconn     4000

defaults

    mode                    http

    timeout http-request    10s

    timeout connect         5000ms

    timeout client          5000ms

    timeout server          5000ms

    timeout http-keep-alive 10s

    timeout check           10s

    maxconn                 3000


resolvers docker_dns

    nameserver dns "127.0.0.11:53"

    timeout retry  1s

    hold valid 1s


frontend webserver

    bind *:80

    mode http

    log global

    default_backend server

backend server

    balance roundrobin

    server  app_1 lnmp_openresty_1:80 check resolvers docker_dns resolve-prefer ipv4

    server  app_2 lnmp_openresty_2:80 check resolvers docker_dns resolve-prefer ipv4

    server  app_3 lnmp_openresty_3:80 check resolvers docker_dns resolve-prefer ipv4

    server  app_4 lnmp_openresty_4:80 check resolvers docker_dns resolve-prefer ipv4

    server  app_5 lnmp_openresty_5:80 check resolvers docker_dns resolve-prefer ipv4

------------------------------------------------------------------------------------------

案例,仅供参考!