最近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以实际容器名为准,其他内容请参照官方文档。
之前有过一次因为版本导致的问题。。时间这次又遇到了。。。希望下次能反应的快一些