Fabio
是可以从consul
中自动获取相关配置信息的HTTP/TCP反向代理。
传统的负载均衡器和反向代理服务都将配置信息写到文件中,这些配置包含代理的上游服务器的主机名和路径。这个过程可以使用像consul-template
这样的工具生成配置文件并自动触发重新加载。
Fabio
的工作原理有所不同,一旦存储在consul
中的路由表发生变化,Fabio
的相关配置也会立即发生变更,这个过程并不需要重启或者重新加载。
在向consul
中注册服务时需要为其填一个一个标签,这个标签声明了该服务的路径。例如: urlprefix-/user
或urlprefix-/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-/user
和urlprefix-/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
全部评论