Traefik is an open-source Edge Router that makes publishing your services a fun and easy experience. It receives requests on behalf of your system and finds out which components are responsible for handling them.
英文自己看哈,可以理解为和nginx做的工作一样,进行负载均衡,端口暴露等,但是比nginx灵活的多,支持自动更新配置。
三个主要的概念
1、entryPoint
是访问traefik的网络接入端口,支持http和TCP。
entrypoint只能定义在静态文件中,traefik启动默认加载的文件,默认目录为 /etc/traefic,所以把配置文件丢到这个目录下
1 #static configuration 2 api: 3 dashboard: true 4 insecure: true 5 providers: 6 file: 7 filename: "/etc/traefik/dynamic-conf.yml" 8 watch: true 9 entryPoints: 10 web: 11 address: ":80" 12 web-secure: 13 address: ":443" 14 traefik: 15 address: ":8080" 16 cluster-9001: 17 address: ":9001" 18 cluster-9002: 19 address: ":9002" 20 cluster-9003: 21 address: ":9003" 22 cluster-9004: 23 address: ":9004" 24
2、router
routers可以理解为traefik接收到的请求如何路由到service上,或者又哪个service转到真实的服务商,可以包含许多的规则。
配置样例(配置到动态配置文件中)
1 tcp: 2 routers: 3 cluster-router-111111: 4 entryPoints: 5 - "cluster-9001" 6 rule: "HostSNI(`*`)" 7 service: "cluster-service-9001"
3、service
The Services
are responsible for configuring how to reach the actual services that will eventually handle the incoming requests.
简单理解service就是定义如何访问到真实的服务上去
1 services: 2 cluster-service-9001: 3 loadBalancer: 4 servers: 5 - address: "10.20.26.119:20001" 6 - address: "10.20.26.119:20002"
4、测试
启动方式
sudo ./traefik (cd到traefik的下载目录下,把配置文件都丢到/ect/traefik下,启动的时候会自动到该目录下加载配置,也会从其他的目录加载配置,具体的请参考官网说明)
访问http://xxx.xxx.xxx.xxx:8080/,因为在entrypoints里已经将8080端口开放了。
在Service Details里,Servers是就是真实的服务提供Ip和端口,示例中,20001端口和20002端口都是映射的redis的6379端口。用docker启动的redis
其中,-p 9002端口是我在entrypoint中暴露的端口,测试成功
更详细的使用要参考官网:https://docs.traefik.io/v2.1/