最近go的項目準備上一個代理程序,瞭解到traefik也是go寫的。然後看了看它的文檔(traefik中國),覺得很棒,那就擼起袖子幹吧。
raefik 是一個HTTP層面的反向代理和負載均衡, 用 Go 編寫, 有的功能包括:
沒有依賴
帶熔斷器
證書支持
無縫重啓
支持多個後端:Docker/Kubernetes等(最新版要比舊版支持的少)
自帶一個簡單的web ui,用於查看請求響應時間和配置等
總體來說,是一個很優秀的代理軟件。
一、安裝
推薦使用docker安裝
docker pull fraefik (默認拉取最新版)
二、部署
docker network create fraefikBridge (給traefik創建一個網絡,需要代理的所有容器也都指定此網絡)
# docker-compose.yaml
version: '3'
services:
proxy:
image: traefik
command: --api=true --api.insecure=true --providers.docker
networks:
- apinetwork
ports:
- "80:80"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
# - ./traefik.toml:/etc/traefik/traefik.toml
networks:
apinetwork:
external:
name: fraefikBridge
大家注意,我上面的version是3。目前網上大部分的文章都是version2,如果你拉取的是最新版,2.x以後的,請使用version3。題主就是2.x,然後根據(traefik中國)的文檔來部署沒成功~。~,然後我去下官方文檔,發現如果不太一樣。附上鍊接
traefik是根據容器的標籤來選擇是否要把其加入到traefik的代理之中,也是根據標籤來進行route的配置等
# 要被代理的容器
version: "3"
services:
xxxcontainer:
# ...
labels:
- traefik.http.routers.xxxcontainer.rule=Host(`mydomain.com`)
上面簡單說就說,traefik以http協議代理xxxcontainer這個容器,路由規則是mydomain.com。注意xxxcontainer以實際容器名爲準,其他內容請參照官方文檔。
之前有過一次因爲版本導致的問題。。時間這次又遇到了。。。希望下次能反應的快一些