【Fabio】概述与安装

747人浏览 / 6人评论

引言

Fabio是可以从consul中自动获取相关配置信息的HTTP/TCP反向代理。

传统的负载均衡器和反向代理服务都将配置信息写到文件中,这些配置包含代理的上游服务器的主机名和路径。这个过程可以使用像consul-template这样的工具生成配置文件并自动触发重新加载。

Fabio的工作原理有所不同,一旦存储在consul中的路由表发生变化,Fabio的相关配置也会立即发生变更,这个过程并不需要重启或者重新加载。

在向consul中注册服务时需要为其填一个一个标签,这个标签声明了该服务的路径。例如: urlprefix-/userurlprefix-/order,然后Fabio将会完成后续工作。

快速开始

使用源码、预编译包、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)

比如ubuntu下使用预编译包进行安装:

  • 下载预编译的二进制文件
$ mkdir /opt/fabio
$ cd /opt/fabio
$ wget https://github.com/fabiolb/fabio/releases/download/v1.5.10/fabio-1.5.10-go1.11.1-linux_amd64
  • 修改文件权限
$ chmod +x fabio-1.5.10-go1.11.1-linux_amd64
  • 建立软连接
$ ln -s fabio-1.5.10-go1.11.1-linux_amd64 fabio

现在就可以使用./fabio命令开启fabio了,当然也可以将这个命令加入到环境变量中去,这样就可以在任意位置开启服务了。

consul中注册服务

需要确保所注册的服务拥有为你的ServiceID不包含空格的服务名。

consul中注册健康监测机制

由于Fabio仅会监听标记为passing的服务,所以需要确保注册的服务为通过(passing)状态。

路由存储在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
    
# GRPC/S examples
urlprefix-/my.service/Method proto=grpc                      # method specific route
urlprefix-/my.service proto=grpc                             # service specific route
urlprefix-/my.service proto=grpcs                            # TLS upstream
urlprefix-/my.service proto=grpcs grpcservername=my.service  # TLS upstream with servername override
urlprefix-/my.service proto=grpcs tlsskipverify=true         # TLS upstream and self-signed cert

启动Fabio(不指定配置文件)

$ fabio

这种方式启动意味着默认在本机的localhost:8500运行着一个consul服务。

观察输出日志查看fabio如何选择其服务路径。

关于对Docker的支持,将在后面详细讲解。

尝试着开启/关闭服务,看看路由表是如何变化的。

测试是否可以通过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

将所有HTTP流量通过端口9999发送到fabio

引言 · 原文地址

快速开始 · 原文地址

全部评论

2020-09-10 11:47:42.0
sF3yer <a href="http://cnrwlrzdbsqh.com/">cnrwlrzdbsqh</a>, [url=http://hpvsotkgalbw.com/]hpvsotkgalbw[/url], [link=http://eqwiwsmunlhj.com/]eqwiwsmunlhj[/link], http://afskdxhoedaf.com/
2020-09-10 11:37:55.0
3Syj0C <a href="http://ogafkuifimyp.com/">ogafkuifimyp</a>, [url=http://shrwlqpwzlbu.com/]shrwlqpwzlbu[/url], [link=http://qerpmygwhikr.com/]qerpmygwhikr[/link], http://vjasmaedeiqe.com/
2020-09-10 11:27:14.0
16cb0Q <a href="http://ofvfyzizdxwh.com/">ofvfyzizdxwh</a>, [url=http://swofrbyqvjtf.com/]swofrbyqvjtf[/url], [link=http://ibvnxvfesbmn.com/]ibvnxvfesbmn[/link], http://zufujqovyzvx.com/
2020-09-09 22:35:15.0
VJfhpH <a href="http://gidruqowskvf.com/">gidruqowskvf</a>, [url=http://bxgfsjduhlbp.com/]bxgfsjduhlbp[/url], [link=http://pbzabapivvld.com/]pbzabapivvld[/link], http://rgfvbawiyyla.com/
2020-07-07 07:02:38.0
accutane online india Goactsalffal https://ascialis.com/# - cialis tadalafil pseunc Propecia Barata gagunumb <a href=https://ascialis.com/#>Cialis</a> matglymn achat cialis site securise
2020-06-16 16:01:41.0
Buy Kamagra Gel Marsiglia https://cheapcialisll.com/ - purchase cialis cialis physician samples <a href=https://cheapcialisll.com/#>Cialis</a> Female Viagra Online Canada