Openresty+Redis 动态切换upstream

场景
当版本切换的时候,后端服务器不可能瞬间同时进行代码更新,这样就会出现客户在短暂时间内访问到不同版本的服务。

使用以下流程可以避免上述问题:
1.后端设立两个的主机组(A_CLUSTER,B_CLUSTER),以及一个ALL_CLUSTER包含两个主机组提供服务。
2.当要发布前,将所有的流量切换到B_CLUSTER。
3.切换完毕后升级A_CLUSTER代码。
4.将流量再切换到A_CLUSTER。
5.再升级B_CLUSTER的代码。
6.最后将流量再切换至两CLUSTER。

要完成上述操作,在代码更新方面有jenkins等发布工具来实现。但前端切换流量的在传统中只能通过手动修改nginx配置文件来实现。

openresty提供了一个可编程的nginx,通过lua可以实现对于nginx的”在线修改”,从redis获取信息从而选择将请求发送到后端指定的upsteam。而如何指定所需要的upstream?这时就需要redis,或者其他的中间件或其他lua可以调用的接口来实现。

准备工作
1.安装redis
2.安装openrestry
3.安装lua
4,安装lua的redis驱动

配置分享
nginx.conf:

http {
    lua_shared_dict vtimes 10m;
    upstream a_cluster {
        server 192.168.1.200:8888;
    }
    upstream b_cluster {
        server 192.168.1.203:8080;
    }

    init_by_lua_block {
      
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值