`
m635674608
  • 浏览: 5026945 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

traefik简介

 
阅读更多

traefik(https://traefik.io/)是一款开源的反向代理与负载均衡工具。它最大的优点是能够与常见的微服务系统直接整合,可以实现自动化动态配置。目前支持Docker, Swarm, Mesos/Marathon, Mesos, Kubernetes, Consul, Etcd, Zookeeper, BoltDB, Rest API等等后端模型。

traefik的具体模型如下:

为什么选择traefik?

事实上在之前我对LB的选择一直更倾向于使用 HAProxy 。但是选择traefik主要是有以下特点让我们决定使用:

  • Golang编写,单文件部署,与系统无关,同时也提供小尺寸Docker镜像。
  • 支持Docker/Etcd后端,天然连接我们的微服务集群。
  • 内置Web UI,管理相对方便。
  • 自动配置ACME(Let's Encrypt)证书功能。
  • 性能尚可,我们也没有到压榨LB性能的阶段,易用性更重要。

除了这些以外,traefik还有以下特点:

  • Restful API支持。
  • 支持后端健康状态检查,根据状态自动配置。
  • 支持动态加载配置文件和graceful重启。
  • 支持WebSocket和HTTP/2。

除了上面提到的微服务化集群支持,一些AB测试阶段也可以通过frontend的路由特性进行动态分配,当然这些对HAProxy等软件都是标准支持的。

traefik的配置

traefik支持的配置方式支持文件方式进行配置,这个也是比较常见的配置方式,我们这里简单介绍一下。

traefik支持的toml方式进行配置,官方提供了一个 示例的traefik.toml文件 用于演示配置。除此之外,后端服务一般是采用单独文件进行存储,比如演示配置中指定的rules.toml。

具体一个例子,如果我们有两个后端,127.0.0.1:7727,127.0.0.1:7728,我们希望所有的Chrome用户都可以访问127.0.0.1:7727,其它人都访问127.0.0.1:7728,这样这个rules.toml应该如何配置呢?

# rules.toml
[backends]
  [backends.backend1]
    [backends.backend1.servers.server1]
    url = "http://127.0.0.1:7727"
  [backends.backend2]
    [backends.backend2.servers.server1]
    url = "http://127.0.0.1:7728"


[frontends]
  [frontends.frontend1]
  entrypoints = ["http"]
  backend = "backend1"
    [frontends.frontend1.routes.test_1]
    rule = "HeadersRegexp: User-Agent, Chrome"
  [frontends.frontend2]
  entrypoints = ["http"]
  backend = "backend2"

首先定义两个后端服务,每个后端服务可以支持多个服务单元,这里我们只有一个。前端frontends用于匹配请求落到哪个后端服务中。我们这里定义一个规则test_1,设置规则为根据HTTP请求头部正则进行分配:如果UserAgent中包含Chrome字样,则访问到127.0.0.1:7727。匹配的规则方式包含了以下几种方式:

  • Headers / HeaderRegexp : 头部匹配方式,分别对应按值和正则表达式两种方式。
  • Host / HostRegexp : 按照请求主机名进行匹配,与头部信息相似。
  • Method : 按照请求方式区分。
  • Path / PathStrip / PathPrefix / PathPrefixStrip : 按照路径区分后端。

traefik与微服务集群

这个有人已经写过相关的文章了,我在这里简单推荐一下: Microservices Bliss with Docker and Traefik ( 中文译文 )。我就不做额外的描述了。

 

http://www.tuicool.com/articles/ZnuEfay

分享到:
评论

相关推荐

    traefik-1.7.34,k8s安装traefik作为ingress

    **Traefik简介** Traefik是一个动态配置的路由器,它能够自动发现和配置服务。它支持多种后端服务发现机制,如Docker、Kubernetes、Consul、Etcd等,这使得它能够实时响应服务的变化并更新路由规则。 **Kubernetes ...

    k8s部署Ingress Traefik

    知识点1:Traefik 简介 Traefik 是一个现代化的反向代理和负载均衡器,提供了许多高级功能,例如路由,负载均衡,SSL/TLS 终端,中间件和 metrics 等。Traefik 使用 Go 语言编写,具有高性能、可扩展性和灵活性等...

    nomad-box:Nomad Box-对运行DockerGoLangJava工作负载的群集Consul,Nomad和Traefik负载均衡器的Azure进行简单的Terraform设置。 注意:此刻仅适用于开发环境,直到我了解更多Terraform,Consul,Nomad,Vault:P

    Nomad Box简介 一个自以为是的多提供商多区域服务平台,可以轻松,自动地处理Docker / GoLang / Java和旧版工作负载的开发,打包,测试,部署和操作。 应提供无摩擦的工具,以缓解应用程序生命周期的所有阶段。 ...

    Souin:建立在不同反向代理之上的缓存系统,可以轻松地缓存数据并节省与@ traefik,@ caddyserver,@ nginx和@apache兼容的宝贵ms

    Nginx的学分 反向代理缓存 项目简介Souin是适用于每种反向代理的新缓存系统。 无论是Apache,Nginx还是Traefik,它将被放置在您当前的反向代理之上。 正如它用go编写的那样,它可以部署在任何服务器上,而且由于...

    GO语言进阶.docx

    11-5_基于Docker-compose与Traefik的容器化部署演示.mp4 11-6_Kubernetes基础原理.mp4 11-7_基于Kubernetes的容器化部署演示.mp4 第12章 “云存储”系统之持续集成部署 12-1_ubuntu下离线安装harbor1.6.mp4 12-...

    Kubernetes ingress yaml文件包

    **一、Kubernetes Ingress简介** Kubernetes Ingress是集群中对外暴露服务的一种标准方式,它允许你定义基于HTTP/HTTPS的路由规则,可以将外部流量根据不同的路径、主机名或端口转发到内部的Service。Ingress并不...

    Docker到Kubernetes进阶视频.rar

    │ │ 2.Docker 简介与安装.mp4 │ │ 3.Docker 基本命令.mp4 │ │ 4.Dockerfile 基本用法.mp4 │ │ 5.Docker 私有仓库.mp4 │ │ 6.数据共享与持久化.mp4 │ └ 7.Docker 网络模式.mp4 ├ 五、Kubernetes基础 │ ...

    kubernetes中文文档

    ### Kubernetes简介 #### 1.1 基本概念 Kubernetes(简称K8s)是一个开源系统,用于自动化部署、扩展以及管理容器化应用。它能够提供一个统一的平台来管理跨多个主机的应用程序,简化了容器化应用程序的部署流程,...

    Introduction of CubeAI-v3-教程与笔记习题

    【CubeAI-v3简介与教程】\n\nCubeAI-v3是一个综合性的AI平台,集成了在线训练、模型发布、部署以及AI能力可视化等功能模块。它旨在为用户提供一个高效、便捷的AI开发环境,助力AI项目的实施和管理。平台支持多种...

    全球服务网格工具软件行业研究报告.pdf

    #### 三、企业简介 ##### 3.1 主要企业概况 - **HashiCorp**:其Consul Connect产品为企业提供全面的服务网格解决方案,在服务网格工具软件领域具有重要地位。 - **Google**:作为Istio的开发者,Google在推动服务...

    kubernetes.pdf

    #### 一、Kubernetes简介 **1.1 基本概念** - **Kubernetes(K8s)**:由谷歌发起并开源的一个容器集群管理系统,它旨在简化容器化应用程序的部署、扩展和管理。 - **容器**:一种轻量级、可移植且自包含的软件包...

    kubernetes基础入门

    - **4.8.3 TraefikIngress**: 使用Traefik作为Ingress控制器。 - **4.8.4 Keepalived-VIP**: 使用Keepalived实现VIP。 #### 五、进阶主题 **5.1 状态管理** - **5.1.1 StatefulSet**: 用于管理有状态应用的控制器...

Global site tag (gtag.js) - Google Analytics