一款云原生的反向代理和负载均衡系统

文摘   2024-10-14 12:11   广东  
系统介绍
Traefik是一个云原生的新型HTTP反向代理和负载均衡软件,专为简化微服务的部署而设计。Traefik负责接收系统的请求,然后使用合适的组件来对这些请求进行处理。它也可以被称为边缘路由器(Edge Router),是整个平台的大门,能够拦截并路由每个传入的请求。它知道所有的逻辑和规则,这些规则确定哪些服务处理哪些请求。

主要特点

  • 兼容性:Traefik兼容所有主流的集群技术,如Kubernetes、Docker、Docker Swarm、AWS、Mesos、Marathon等,甚至可以用于在裸机上运行的较旧的软件。

  • 自动配置:使用Traefik时,不需要维护或同步一个独立的配置文件,因为一切都会自动配置并实时操作(无需重新启动,不会中断连接)。

  • 动态服务发现:传统的反向代理需要一个包含路由到服务的所有可能路由的配置文件,而Traefik会实时检测服务并自动更新路由规则。

  • 支持动态加载配置文件和优雅重启。

  • 自动配置ACME(Let's Encrypt)证书功能。

  • 支持熔断、重试。

  • 内置Web UI,管理相对方便。

  • 支持WebSocket、HTTP/2、gRPC。

  • 支持metrics(如Rest、Prometheus、Datalog、Statsd、InfluxDB)

常用组件

  • Providers:用于自动发现平台上的服务,可以是编排工具、容器引擎或key-value存储等。

  • Entrypoints:监听传入的流量(如端口等),是网络入口点,定义了接收请求的端口(HTTP或TCP)。

  • Routers:分析请求(如host、path、headers、SSL等),负责将传入请求连接到可以处理这些请求的服务上。

  • Services:将请求转发给应用(如负载均衡等),负责配置如何获取最终将处理传入请求的实际服务。

  • Middlewares:中间件,用于修改请求或根据请求做出一些判断(如身份验证、速率限制、headers等)。中间件被附加到路由上,是一种在请求发送到服务之前(或在服务的响应发送到客户端之前)调整请求的方法。
如需了解更多信息,可以访问其官方网站或查阅相关的技术文档。
官方文档
https://doc.traefik.io/traefik/getting-started/quick-start/
Docker镜像
https://hub.docker.com/_/traefik
GitHub地址
https://github.com/traefik/traefik?tab=readme-ov-file

安装教程

Traefik支持K8S和Docker部署,Docker部署操作步骤:安装Docker、编写docker-compose.yml、启动容器、设置反向代理

| 安装docker

sudo apt update
sudo apt install -y docker.io docker-compose

| 编写docker-compose.yml

version: '3'
services:
reverse-proxy:
image: traefik:v3.1
command: --api.insecure=true --providers.docker
ports:
# The HTTP port
- "80:80"
# The Web UI (enabled by --api.insecure=true)
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock

启动容器

sudo docker-compose up -d reverse-proxy

启动成功之后,访问 http://IP:8080 来确定是否部署成功,上述示例是自动监听了宿主机的80端口,如需监听多个端口按上述配置编写即可。

| 设置反向代理

通过配置其他docker服务的labels属性设置反向代理,在上述的docker-compose.yml文件末尾添加新的Docker服务。

version: '3'
services:

...

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`)"

启动容器whoami

sudo docker-compose up -d whoami

浏览器访问http://IP:8080/api/rawdata发现Traefik已经自动检测到了新的容器,并且更新了自己的配置。

更多关于Traefik的使用,请参考官方文档。

关注公众号,为你推荐更多原创干货!

更多内容也可看笔者出版图书

—————————

幼稚猿
分享各类技术资讯和教程,出版多本IT图书《Django+Vue系统架构设计与实现》、《Golang+Vue.js商城项目实战》等
 最新文章