Fabio技术手册(1):概述和快速上手

Fabio技术手册(1):概述和快速上手概述 Fabio 是一个 HTTP 和 TCP 反向代理 它使用来自 Consul 的数据配置自己 传统的负载均衡器和反向代理需要配置文件进行配置 配置包含代理转发到上游服务的主机名和路径 这个过程可以通过像 consul template 这样的工具来自动化 这些工具可以生成配置文件并触发重新加载 Fabio 的工作方式不同 因为它会在 Consul 存储的数据发生更改时直接更新路由表 而无需重新启动或重新加

概述


Fabio是一个HTTP和TCP反向代理,它使用来自Consul的数据配置自己。

传统的负载均衡器和反向代理需要配置文件进行配置。配置包含代理转发到上游服务的主机名和路径。这个过程可以通过像consul-template这样的工具来自动化,这些工具可以生成配置文件并触发重新加载。

Fabio的工作方式不同,因为它会在Consul存储的数据发生更改时直接更新路由表,而无需重新启动或重新加载。

当您在Consul注册一个服务时,您需要添加的只是一个标记(tag),它会告知上游服务接受的路径,例如urlprefix-/userurlprefix-/order, fabio将完成剩下的工作。

维护人员


Fabio是由Frank Schröder和伟大的社区开发和维护的。

它最初是在荷兰阿姆斯特丹的eBay Classifieds集团开发的。

 

快速上手


  1. 从源代码、二进制、Docker或Homebrew安装
    go get github.com/fabiolb/fabio (>= go1.8) brew install fabio (OSX/macOS stable) docker pull fabiolb/fabio (Docker) https://github.com/fabiolb/fabio/releases (pre-built binaries)
  2. 在Consul注册你的服务.

    确保每个实例都使用唯一的ServiceID和没有空格的服务名注册。

  3. 按照这里的描述在Consul注册健康检查。

    确保健康检查是passing的,因为fabio将只监视通过了健康检查的服务。

  4. 路由存储在Consul的Service Tags中,您需要为服务所服务的每个host/path前缀添加一个单独的urlprefix-标记。

    例如,如果您的服务处理/user/product,那么添加两个标签urlprefix-/userurlprefix-/product。你可以注册任意数量的前缀。

    fabio可以转发HTTP、HTTPS和TCP流量。下面是一些配置示例:

    # HTTP/S examples # Make sure the prefix for HTTP routes contains at least one slash (/). urlprefix-/css # path route urlprefix-i.com/static # host specific path route urlprefix-mysite.com/ # host specific catch all route urlprefix-/foo/bar strip=/foo # path stripping (forward '/bar' to upstream) urlprefix-/foo/bar proto=https # HTTPS upstream urlprefix-/foo/bar proto=https tlsskipverify=true # HTTPS upstream and self-signed cert # TCP examples urlprefix-:3306 proto=tcp # route external port 3306

     

  5. 启动fabio不需要配置文件
    $ fabio

    这假设已经有一个Consul代理正在localhost:8500上运行。

    观察日志输出fabio如何选择路由到您的服务。

    注意:通过Docker运行fabio可以看这里。

  6. 尝试启动/停止服务,以查看路由表如何立即更新。
  7. 测试您是否可以通过fabio访问上游服务
    # for urlprefix-/foo curl -i http://localhost:9999/foo # for urlprefix-mysite.com/foo curl -i -H 'Host: mysite.com' http://localhost:9999/foo

     

  8. 将所有HTTP流量发送到端口9999上的fabio
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214569.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午3:57
下一篇 2026年3月18日 下午3:57


相关推荐

  • idea插件activate-power-mode-x

    idea插件activate-power-mode-xactivate-power-mode-x一、介绍可以写代码的时候有特效二、安装-安装完成后重启idea三、设置刚开始时右上角会有个计数器,每次到达到多少个单词后才会有效果触发,还有抖动效果可以根据自己的喜好进行设置(去掉shake没有抖动效果,去掉combo没有计数器)…

    2022年7月14日
    40
  • jenkinsfile docker_dockerfile制作镜像

    jenkinsfile docker_dockerfile制作镜像前言之前我们用docker手动安装了jenkins环境,在jenkins中又安装了python3环境和各种安装包,如果我们想要在其他3台机器上安装,又是重复操作,重复劳动,那会显得很low,这里可以

    2022年8月6日
    21
  • OpenClaw Sub-Agent vs Skill 选型指南

    OpenClaw Sub-Agent vs Skill 选型指南

    2026年3月13日
    4
  • python3菜鸟教程笔记「建议收藏」

    python3菜鸟教程笔记「建议收藏」python2和python3的一些差异:*print函数变了,python3中的print函数必须要加括号*xrange函数合并到了range中,2到5的序列可以直接用range(2,5

    2022年7月5日
    28
  • 「从零单排canal 03」 canal源码分析大纲

    「从零单排canal 03」 canal源码分析大纲

    2020年11月19日
    224
  • FastCGI 介绍

    FastCGI 介绍本文主要介绍FastCGI的相关知识。首先简要看一下CGI(百科)CGI(通用网关接口)CGI是Web服务器运行时外部程序的规范, 按CGI编写的程序可以扩展服务器功能。CGI应用程序能与浏览器进行交互,还可通过数据库API与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。…

    2022年7月11日
    19

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号