apisix流控

一、蓝绿发布

  1. APISIX中新增加一个上游配置
  2. 记录新增上游的id
  3. 在对应service中加入traffic-split插件的配置如下, 其中:
    • http_变量名为http头里面指定的变量名,例如:http_version
    • 新版本号为字符串的版本号,例如: 1.5.3
    • 新增上游的ID为指向部署了新版本代码的服务器的上游
"plugins": {
    "traffic-split": {
      "rules": [
        {
          "match": [
            {
              "vars": [
                ["http_变量1", "==", "变量1的值"],
                ["http_变量2", ">", "变量2的值"],
                ...
              ]
            }
          ],
          "weighted_upstreams": [
            {
              "upstream_id": "新增上游的ID"
            }
          ]
        }
      ]
    }
  }

做完上述操作,前端http请求头内变量和变量值全匹配的请求会发送到新增的上游服务器,否则发送到默认上游。

二、按权重分流

"plugins": {
    "traffic-split": {
      "rules": [
        {
            "match": [
              {
                  "vars": [
                       ["http_变量1", "==", "变量1的值"],
                       ["http_变量2", ">", "变量2的值"],
                       ...
                  ]
              }
            ],
            "weighted_upstreams": [
                        {
                            "upstream_id": "指定上游的ID",
                            "weight": 指定上游的权重
                        },
                        {
                            "weight": 默认上游的权重
                        }
            ]
        }
      ]
    }
  }

按上述配置,所有变量值匹配的请求将会按指定的权重分流,未匹配的仍然走默认上游不分权重。

四、示例

下面示例定义了一个默认上游:upstream_A, 如果http请求头里面有Hd-App-Id的变量的值为abc, 且Hd-Version的变量值为0.0.1则请求匹配到weighted_upstreams中的规则,即1/(1+99)*100%=1%的流量分配到upstream_B, 剩下的99/(1+99)*100%=99%流量分配到默认的upstream_A

{
  "name": "prod_service_default",
  "upstream_id": "上游A",
  "plugins": {
    "traffic-split": {
      "rules": [
        {
          "match": [
            {
              "vars": [
                [ "http_Hd-App-Id", "==", "abc"],
                [ "http_Hd-Version", "==", "0.0.1"]
              ]
            }
          ],
          "weighted_upstreams": [
            {
              "upstream_id": "upstream_B",
              "weight": 1
            },
            {
              "weight": 99
            }
          ]
        }
      ]
    }
  }
}

五、参考

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇