假设您已经在编排器(如:Swarm或Kubernetes)或服务注册表(如etcd或consul)的帮助下部署了一系列微服务。现在你想让用户进入这些微服务,所以你会需要一个反向代理。
传统的反向代理服务器需要您配置所有的会连接到每个微服务的路径或子域的路由。在一个每天需要多次添加,删除,终止,升级或拓展服务的环境中,将路由保持在最新状态的任务变得单调乏味。
这个时候Traefik就可以帮助你!
Traefik监听你的服务注册表或编排器的API,并立即生产路由,这样你的微服务就可以连接刀外面的世界而无需你进一步的干涉。
运行Traefik,让它为你工作!(但如果你更愿意手动配置路由,Traefik也支持这一点)
连续不断的更新配置(无需重启)支持多种负载平衡算法通过let’s encrypt(支持通配符证书)为你的微服务提供HTTPS断路器,可重试集群下的高可用(BETA测试版)通过干净的web UI界面,让你见识到它的魔力Websocket, HTTP/2, GRPC 准备就绪提供指标(Rest, Prometheus, Datadog, Statsd, InfluxDB)保留访问日志(JSON,CLF)快速暴露一个Rest API打包成了一个单一二进制文件(made with ❤️ with go),也可以使用一个轻量的官方docker镜像
Docker / Swarm modeKubernetesMesos / MarathonRancher (API, Metadata)Azure Service FabricConsul CatalogConsul / Etcd / Zookeeper / BoltDBEurekaAmazon ECSAmazon DynamoDBFileRest
在这个快速启动中,我们将使用docker compose 来创建我们的demo基础服务。
为了节省时间,你可以克隆Traefik仓库并使用 examples/quickstart 目录下的快速开始文件。
创建一个docker-compose.yml文件,你可以用Traefik的官方镜像在文件中定义一个reverse-proxy服务:
version: '3' services: reverse-proxy: image: traefik # Traefik的官方镜像 command: --api --docker # 使用web UI并监听dokcer ports: - "80:80" # HTTP端口 - "8080:8080" # Web UI端口 (通过 --api 开启) volumes: - /var/run/docker.sock:/var/run/docker.sock #让Traefik监听docker事件警告:使用–api 命令开启web ui将会暴露配置元素。你可以在这里了解更多
就是这样,现在你可以运行Traefik了 使用下面的命令启动你的reverse-proxy docker-compose up -d reverse-proxy 现在你可以打开浏览器并访问http://localhost:8080查看Traefik的仪表盘(在步骤2中启动服务后,我们将会返回到这里)
现在我们已经部署运行了一个Traefik实例,接下来我们将部署新服务。
编辑你的docker-compose.yml文件,并把下面这些东西加到你的文件末尾:
# ... whoami: image: containous/whoami # A container that exposes an API to show its IP address labels: - "traefik.frontend.rule=Host:whoami.docker.localhost"上面定义了Whoami:一个简单的web 服务,它输出关于它所部署机器的(IP地址,主机等)信息。
使用下面的命令启动Whoami服务: docker-compose up -d whoami 返回你的浏览器(http://localhost:8080)查看Traefik是否已经自动的检测到新的容器,并更新它的配置信息。
当Traefik检测到新的服务,它会创建响应的路由,这样你就可以调用它们…让我们来看一下(这里,我们使用curl命令): curl -H Host:whoami.docker.localhost http://127.0.0.1 展示下面的输出:
Hostname: 8656c8ddca6c IP: 172.27.0.3 #...通过下面的命令启动更多的whoami服务: docker-compose scale whoami=2 返回你的浏览器(http://localhost:8080)并查看Traefik是否已经自动的检测到这些新容器的实列。
最后,通过运行两次下面的命令,查看你服务的两个实列: curl -H Host:whoami.docker.localhost http://127.0.0.1 输出将显示以下两者之一:
Hostname: 8656c8ddca6c IP: 172.27.0.3 #... Hostname: 8458f154e1f1 IP: 172.27.0.4 # ...现在,你对Traefik怎样自动的创建路由到你的服务并负载均衡他们有了一个初步的了解,那么是时候学习深入了解的文档,让Traefik为你工作!无论你的基础服务是什么,都会有一个可用的Traefik供应商来实现该任务。
我们建议你亲自使用专用的用户指南来了解一下Traefik的let’s encrypt整合开启https是多么的简单
这是埃米尔·沃格在2017年Gophercon的演讲。您将在不到10分钟的时间内学习Traefik基础知识。
Traefik GopherCon 2017
这是EdRobinson在英国容器微服务会议上的演讲。您将学习基本的Traefik功能,并看到一些Kubernetes演示。 Traefik ContainerCamp UK
官方二进制包 你可以在这个网页拿到最新版的二进制包:地址 并用这个配置模板运行:地址 ./traefik -c traefik.toml
官方docker镜像 使用最小的docker镜像: docker run -d -p 8080:8080 -p 80:80 -v $PWD/traefik.toml:/etc/traefik/traefik.toml traefik