Файл конфигурации HaProxy - PullRequest
0 голосов
/ 28 января 2020

У меня есть 2 приложения Springboot, работающие на портах 9000 и 9001. Я также запускаю HaProxy с использованием контейнера docker. Мой конфигурационный файл выглядит следующим образом:

global

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

frontend http-in
    bind *:80

    acl has_web1 path_beg /web1
    acl has_web2 path_beg /web2

    use_backend web1 if has_web1 
    use_backend web2 if has_web2 

    default_backend web1

backend web1
    server web1 127.0.0.1:9000 check 

backend web2
    server web2 127.0.0.1:9001 check 

Когда я пытаюсь получить доступ к URL, скажем localhost / web1, он выдает код ошибки 503.

Может кто-нибудь сказать мне, почему это так это? Файл компоновки docker:

version: '3'
services:
  #web1:
  #  image: dockercloud/hello-world
  #  container_name: web1
  #  ports:
  #    - "81:80"

  #web2:
  #  image: dockercloud/hello-world
  #  container_name: web2
  #  ports:
  #    - "82:80"    

  haproxy:
    build: ./haproxy
    container_name: haproxy
    ports:
      - "80:80"

И файл Docker:

FROM haproxy:1.7

COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg

Я работаю над Windows, если это имеет значение.

Редактировать : Я переключил версию HaProxy на 2.1.2 и получил следующие предупреждения:

haproxy    | [NOTICE] 020/002817 (1) : New worker #1 (6) forked
haproxy    | [WARNING] 020/002817 (6) : Server web1/web1 is DOWN, reason: Layer4 connection problem, info: "Connection refused", check duration: 0ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
haproxy    | [ALERT] 020/002817 (6) : backend 'web1' has no server available!
haproxy    | [WARNING] 020/002818 (6) : Server web2/web2 is DOWN, reason: Layer4 connection problem, info: "Connection refused", check duration: 0ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
haproxy    | [ALERT] 020/002818 (6) : backend 'web2' has no server available!

Это из-за контейнера docker ?? Я запускаю его, используя запятую

docker-compose up --build

Редактировать:

Изменил мой docker compse файл на это:

version: '3'
services:
  #web1:
  #  image: dockercloud/hello-world
  #  container_name: web1
  #  ports:
  #    - "81:80"

  #web2:
  #  image: dockercloud/hello-world
  #  container_name: web2
  #  ports:
  #    - "82:80"    
  haproxy:
    build: ./haproxy
    container_name: haproxy
    ports:
      - "80:80"
    extra_hosts:
      - "dockerhost:<My IP>"

и файл конфигурации на это:

global

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

frontend http-in
    bind *:80

    acl has_web1 path_beg /web1
    acl has_web2 path_beg /web2

    use_backend web1 if has_web1 
    use_backend web2 if has_web2 

    default_backend web1

backend web1
    server web1 dockerhost:9000 check 

backend web2
    server web2 dockerhost:9001 check 

Теперь ошибки исчезли, но я могу получить доступ только к localhost, а не localhost / web1, localhost / web2 или любому другому. Но бэкэнды формируются, так как в консоли нет ошибок или предупреждений. Я получаю код ошибки 404.

...