P
pjc685

  • Joined Aug 26, 2016
  • 能否请教下实现脚本? 可以给个联系方式吗?

    在 2016年8月25日星期四 UTC+8上午9:58:10,牧童写道:
    Hi,春哥:

    先说下需求。
    我想根据用户请求url一致性哈希到后端缓存,后端使用多个redis实例,后端redis实例的需要健康检查,当某个redis挂掉或有新redis加入时,一致性哈希算法自动感知。

    我的做法:
    一致性哈希使用lua-resty-balancer;
    健康检查使用了lua-upstream-nginx-module + lua-resty-upstream-healthcheck;
    (lua-resty-upstream-healthcheck只支持http,做了redis的检查扩展)
    在healthcheck模块中,当发现peer_fail的时候,将对应server删除(调用lua-resty-balancer的delete接口);
    当发现peer_ok的时候,重新加入server(调用lua-resty-balancer的set接口)。

    问题:
    测试发现,挂掉的redis健康检查可以自动发现,但是一致性哈希还是会将请求哈希到挂掉的redis上(调用lua-resty-balancer的find接口)。

    另外,存储redis的server和lua-resty-balancer实例,是用来官方示例的方法package.loaded.*,根据healthcheck的结果动态更新。

    请问,这是问题是我用法不对,还是lua-resty-balancer模块有问题?
    • 你好,请问你的问题解决了吗? 我也遇到你一样的需求,能不能交流下?万分感谢!

      在 2016年8月25日星期四 UTC+8上午9:58:10,牧童写道:
      Hi,春哥:

      先说下需求。
      我想根据用户请求url一致性哈希到后端缓存,后端使用多个redis实例,后端redis实例的需要健康检查,当某个redis挂掉或有新redis加入时,一致性哈希算法自动感知。

      我的做法:
      一致性哈希使用lua-resty-balancer;
      健康检查使用了lua-upstream-nginx-module + lua-resty-upstream-healthcheck;
      (lua-resty-upstream-healthcheck只支持http,做了redis的检查扩展)
      在healthcheck模块中,当发现peer_fail的时候,将对应server删除(调用lua-resty-balancer的delete接口);
      当发现peer_ok的时候,重新加入server(调用lua-resty-balancer的set接口)。

      问题:
      测试发现,挂掉的redis健康检查可以自动发现,但是一致性哈希还是会将请求哈希到挂掉的redis上(调用lua-resty-balancer的find接口)。

      另外,存储redis的server和lua-resty-balancer实例,是用来官方示例的方法package.loaded.*,根据healthcheck的结果动态更新。

      请问,这是问题是我用法不对,还是lua-resty-balancer模块有问题?