在介紹除錯工具之前,想先將一般企業級服務架構先建立起來,再輔以除錯工具,會比較好呈現實際環境的狀況。
Application Proxy(以前稱為Reverse Proxy,相較於Client->Proxy->WAN這類的正向代理)一般會有硬體式跟軟體式,硬體式的常見就是F5 LTM這類的設備,軟體類最有名則是NGINX。
我們這邊想嘗試使用Cloud native的方案Traefik,相較之下比較輕量簡易,也有不錯的內建儀表板可以看到整個運作架構。
首先,先從官方的範例練習:
DockerCompose yaml如下:
version: '3'
services:
reverse-proxy:
# The official v2 Traefik docker image
image: traefik:v2.10.4
# Enables the web UI and tells Traefik to listen to docker
command: --api.insecure=true --providers.docker
ports:
# The HTTP port
- "80:80"
# The Web UI (enabled by --api.insecure=true)
- "8080:8080"
volumes:
# So that Traefik can listen to the Docker events
- /var/run/docker.sock:/var/run/docker.sock
whoami:
# A container that exposes an API to show its IP address
image: traefik/whoami
labels:
- "traefik.http.routers.whoami.rule=Host(`whoami.docker.localhost`)"
這是嘗試用traefik當load balancing,服務則是whoami,可以呈現現在是哪個ip。
- "traefik.http.routers.whoami.rule=Host(`whoami.docker.localhost`)"
這一段的寫法我們可以理解成只要網址的路徑輸入成whoami.docker.localhost,就會導向whoami這個服務。
接著我們下指令,讓whoami這個無狀態服務出現2個,讓traefik幫我們分流
sudo docker-compose up -d --scale whoami=2
我們在瀏覽器輸入網址:
http://whoami.docker.localhost
可以看到輸入127.0.0.1,後端會有兩種ip:172.25.0.4跟172.25.0.2。
Traefik有個Dashboard,可以輸入以下網址可以看到Dashboard:
http://0.0.0.0:8080/dashboard#/
因為我們的服務是http,點http
找到我們服務的route,點進去
依序是entrypoints->route->services,因為我們有多個services,點service看看這個route後端有幾個services
這邊就相當清楚,我們有兩個docker services,剛好就是whoami出現的兩個ip
後面我們會嘗試用這個範例當基礎,調整成其他服務一樣藉由traefik來作到application proxy效果。