[英]ThreadLocal - using as context information for REST API with spring-boot
[英]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“沒有服務器可用於處理此請求。” 通常是指:
如果您確實想使用名稱“localhost”進行訪問,請相應地更改您的 ACL:
acl host_web1 hdr(host) -i localhost
讓 HAProxy 能夠對客戶端發送的主機頭進行匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.