当前位置: 首页 > 工具软件 > fabio > 使用案例 >

Fabio技术手册(2):部署

华修永
2023-12-01

fabio的主要用例是将来自internet的HTTP(S)和TCP请求分发给前端(FE)服务,后者可以处理这些请求。在这个场景中,前端提供服务然后使用Consul中的服务发现特性来查找它们需要的后端(BE)服务,以便为请求提供服务。

这意味着fabio目前没有用作FE-BE或BE-BE路由器来在服务之间路由通信,因为Consul的服务发现已经解决了这个问题。话虽如此,没有什么能阻止fabio被这样使用。这只是意味着我们没有这样做。

直接部署


在下面的设置中,fabio被配置为监听公共ip,可以选择终止一个或多个域(每个域一个ip)的SSL通信。

                                           +--> service-a
                                           |
internet -- HTTP/HTTPS --> fabio -- HTTP --+--> service-b
                                           |
                                           +--> service-c

为了扩展fabio,您可以将其与前端服务一起部署,前端服务提供高可用性并分配网络带宽。

           +- HTTP/HTTPS -> fabio -+- HTTP -> service-a (host-a)
           |                       |
internet --+- HTTP/HTTPS -> fabio -+- HTTP -> service-b (host-b)
           |                       |
           +- HTTP/HTTPS -> fabio -+- HTTP -> service-c (host-c)

在已有的网关后


在下面的设置中,fabio被配置为接收来自现有网关的所有传入流量,该网关也终止了一个或多个域的SSL。

                                                          +--> service-a
                                                          |
internet -- HTTP/HTTPS --> LB -- HTTP --> fabio -- HTTP --+--> service-b
                                                          |
                                                          +--> service-c

同样,为了扩展fabio,您可以将其与前端服务一起部署,前端服务提供高可用性并分配网络带宽

                               +- HTTP -> fabio -+-> service-a (host-a)
                               |                 |
internet -- HTTP/HTTPS --> LB -+- HTTP -> fabio -+-> service-b (host-b)
                               |                 |
                               +- HTTP -> fabio -+-> service-c (host-c)

Amazon ELB


您可以在Amazon ELB后面部署fabio,并启用代理协议支持来获取客户端的远程地址和端口。

                                +- HTTP w/PROXY proto -> fabio -+-> service-a (host-a)
                                |                               |
internet -- HTTP/HTTPS --> ELB -+- HTTP w/PROXY proto -> fabio -+-> service-b (host-b)
                                |                               |
                                +- HTTP w/PROXY proto -> fabio -+-> service-c (host-c)

Amazon API 网关


您可以将fabio部署为Amazon API网关的目标。

internet -- HTTP/HTTPS --> API GW -+- HTTP -> fabio -+-> service-b (host-b)

或支持代理协议的ELB:

                                           +- HTTP w/PROXY -> fabio -+-> service-a (host-a)
                                           |                         |
internet -- HTTP/HTTPS --> API GW --> ELB -+- HTTP w/PROXY -> fabio -+-> service-b (host-b)
                                           |                         |
                                           +- HTTP w/PROXY -> fabio -+-> service-c (host-c)

您可以使用客户端证书对API网关的调用进行身份验证。这要求您在fabio上配置一个使用有效证书的HTTPS监听器。

internet -- HTTPS --> API GW -+- HTTPS w/client cert -> fabio -+-> service

为了使fabio能够验证Amazon生成的证书,您需要配置aws.apigw.cert.cn,如下所示:

proxy.addr = 1.2.3.4:9999;your/cert.pem;your/key.pem;api-gw-cert.pem
aws.apigw.cert.cn = ApiGateway

api-gw-cert.pem是在AWS管理控制台生成的证书。您的/cert.pem/key.pemis是HTTPS证书的证书/密钥对。由于Amazon API网关证书没有设置CA标志,fabio需要信任它们以便客户端证书身份验证工作。否则,您将得到一个TLS握手错误:验证客户端证书失败。

注意:在1.2版和以后的支持动态证书存储的版本中,不会支持aws.apigw.cert.cn参数。您将不得不将caupgcn=ApiGateway参数添加到证书源配置中。有关详细信息,请参阅证书存储

 类似资料: