这篇文章将会介绍如何在配置应用网关中的规则, 从而对应用的访问进行控制.

在这篇文章中, 你将会完成:

  • 添加 HTTP 策略
  • 添加 HTTP 强转 HTTPs 策略
  • 添加 TCP 策略
  • 添加 泛域名 策略
  • 添加 A/B 测试, 灰度发布策略

前期准备

请确保你能够满足以下条件:

  • 一个状态健康的 Rainbond.
  • 一个或多个运行中的应用.
  • 一个可用, 并且已经解析到应用网关所在机器上的域名(机器的 IP 可以在添加策略的面板上找到)

1. 添加 HTTP 策略

  • 准备一个应用(Nginx)
  • 点击 应用网关 -> 访问控制 -> 添加策略
  • 填写 域名, 应用(组), 服务组件, 端口号等基本信息
  • 点击 确认访问控制 - 图1
    配置完成后, 就可以通过域名(www.test.com)对应用(Nginx)进行访问了.

3.2 HTTPs 策略, HTTP 强转 HTTPs 策略

  • 准备一个应用(Nginx)
  • 点击 应用网关 -> 访问控制 -> 添加策略
  • 填写 域名, 绑定证书, 应用(组), 服务组件, 端口号, HTTP Rewrite HTTPs 等信息
  • 点击 确认
如果没有勾选 HTTP Rewrite HTTPs, 那么将会是单纯的HTTPs

访问控制 - 图2

配置完成后, 用 http://www.test.com 进行访问, 将被强制转成 https://www.test.com.

3.3 TCP 访问策略

  • 准备一个应用(Nginx)
  • 点击 应用网关 -> 访问控制 -> TCP/UDP -> 添加策略
  • 填写 IP, 端口, 应用(组), 服务组件, 端口号, 负载均衡
  • 点击 确认
TCP 策略会有一个系统自动分配的端口, 你也可以指定端口, 但是要注意端口冲突的问题.

访问控制 - 图3

配置完成后, 就可以通过 IP+Port(47.92.168.60:20128)访问应用了.

3.4 泛域名

  • 准备一个应用(Nginx)
  • 点击 应用网关 -> 访问控制 -> 添加策略
  • 填写 泛域名, 应用(组), 服务组件, 端口
  • 点击 确认
    访问控制 - 图4

配置完成后, 任何一个解析到47.92.168.60的 test.com 的子域名都会访问同一个应用(Nginx).

3.5 高级路由(A/B 测试, 灰度发布)

在高级路由中, 我们可以对不同的服务绑定同一个域名, 通过设置不同的 请求路径, Cookie, Header, 将流量路由到相应的服务上. 另外, 我们还可以通过设置权重, 将流量按权重分配到不同的服务上. 以上的功能, 可以帮助我们轻松地实现 A/B 测试, 灰度发布.

在 HTTP 策略中添加两个Cookie信息, branch=v5.0和version=beta, 如下图所示:

访问控制 - 图5

设置了Cookie后, 单纯的通过域名已经无法访问应用了:

  1. 172:~ abe$ curl test.goodrain.com
  2. <html>
  3. <head><title>502 Bad Gateway</title></head>
  4. ...

在访问的时候需要带上Cookie信息才能正常地对应用进行访问:

  1. 172:~ abe$ curl --cookie "branch=v5.0;version=beta" test.goodrain.com
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <title>Welcome to nginx!</title>
  6. ...

3.5.2 Header

在 HTTP 策略中添加两个请求头信息, branch=v5.0 和 version=beta, 如下图所示:

访问控制 - 图6

设置了请求头后, 单纯的通过域名已经无法访问应用了:

  1. 172:~ abe$ curl test.goodrain.com
  2. <html>
  3. <head><title>502 Bad Gateway</title></head>
  4. ...

在访问的时候需要带上请求头信息才能正常地对应用进行访问:

  1. 172:~ abe$ curl -H "branch:v5.0" -H "version:beta" test.goodrain.com
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <title>Welcome to nginx!</title>
  6. ...

3.5.4权重

首先, 准备两个应用, 2048和Nginx:

访问控制 - 图7

然后, 给这两个应用, 分别添加一条 除了权重, 其他信息都一样的策略. 2048的权重设置为75, Nginx的权重设置为25.

最后, 通过他们的域名test.goodrain.com访问; 可以发现, 有75%的概率访问的是2048, 25%的概率访问的是Nginx.访问控制 - 图8

通过以上对 Cookie, Header, 权重的配置, 就可以灵活地配置 A/B 测试灰度发布.

原文: https://www.rainbond.com/docs/stable/user-manual/gateway/traffic-control.html