簡體   English   中英

我必須使用我的 spring-boot 簡單 rest Z72664DC0959F3B0CA9F5EZ 的 docker 容器展示負載均衡器演示

[英]I have to showcase a load-balancer demo using docker containers of my spring-boot simple rest Api

所以我寫了一個簡單的 spring 啟動 rest 應用程序。 現在我需要創建幾個容器並在其中模擬一些延遲,以便可以使用負載均衡器(編程團隊招聘任務)訪問其他容器。 我覺得一切都應該在當地發生,但我可能錯了。 我是一個初學者程序員。

這是我在 docker-compose 中嘗試過的

version: '3.3'

networks:
  frontend:
    driver: bridge
  backend:
    driver: bridge

services:
  haproxy:
    build:
      context: ./
      dockerfile: HAProxyDockerfile
    container_name: haproxy
    restart: always
    ports:
      - 80:80
    depends_on:
      - web1_app
      - web2_app
    networks:
      - frontend
      - backend

  database:
    image: mysql:5.7
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=pass123
      - MYSQL_USER=user
      - MYSQL_PASSWORD=pass123
      - MYSQL_DATABASE=currencyconverterdb
    networks:
      - backend
      - frontend

  web1_app:
    image: spring-boot-converter
    container_name: web1_app
    ports:
      - 8082:8080
    build:
      context: ./
      dockerfile: Dockerfile
    depends_on:
      - database
    environment:
      - DATABASE_HOST=database
      - DATABASE_USER=user
      - DATABASE_PASSWORD=pass123
      - DATABASE_NAME=currencyconverterdb
      - DATABASE_PORT=3306
    networks:
      - frontend
      - backend

  web2_app:
    image: spring-boot-converter
    container_name: web2_app
    ports:
      - 8081:8080
    build:
      context: ./
      dockerfile: Dockerfile
    depends_on:
      - database
    environment:
      - DATABASE_HOST=database
      - DATABASE_USER=user
      - DATABASE_PASSWORD=pass123
      - DATABASE_NAME=currencyconverterdb
      - DATABASE_PORT=3306
    networks:
      - frontend
      - backend

這是我構建 HAProxy 容器的方法

FROM haproxy:1.8

RUN apt-get update && apt-get install -y \
    inetutils-ping \
    curl && \
    mkdir /srv/logs && \
    touch /srv/logs/haproxy

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

這是我在 haproxy.cfg 中寫的

global
    daemon
    log /srv/logs/haproxy local0
    log /srv/logs/haproxy local1 notice

defaults
    mode http
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms
    option http-keep-alive

frontend http-in

        bind :80

        # springboot 1
        acl host_web1 hdr(host) -i 127.0.0.1
        use_backend web1_be if host_web1

backend web1_be

    http-request set-header X-Forwarded-Port %[dst_port]
    http-request add-header X-Forwarded-Proto https if { ssl_fc }
    server node1 web1_app
    server node1 web2_app

當我訪問 localhost:80 時,我收到 503 消息“沒有服務器可用於處理此請求”。

將感謝任何建議/解決方案。 我只剩下一天了。

503“沒有服務器可用於處理此請求。” 通常是指:

  • 您的 ACL 不起作用,並且您沒有定義 default_backend
  • 您的 HAProxy 無法訪問其任何上游(服務器)
  • 您的 HAProxy 無法解析名稱“web1_app”和“web2_app”,因此無法訪問其任何上游
  • “web1_app”/“web2_app”的端口 80 上沒有運行應用程序

如果您確實想使用名稱“localhost”進行訪問,請相應地更改您的 ACL:

        acl host_web1 hdr(host) -i localhost

讓 HAProxy 能夠對客戶端發送的主機頭進行匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM