基于ngx_lua的动态服务路由方案

今天介绍的是基于ngx_lua的动态服务路由,是整个容器化过程中的一个组件。容器化在服务路由这一块有很大的挑战,又拍云通过自己的一些方案去解决它,而且这个方案也会开源出来,如果大家以后也碰到这样的问题,可以直接用这个方案。

如何做到服务的zero down_time的更新

在更新服务的时候,怎么能做到让自己的服务不断掉,又拍云做更新的时候,不允许有失败,如果说因为我们的失败而导致请求失败,即使你的请求非常少,首先从口碑上就很不好;另外一个原因:如果造成了事故,是要赔钱的。这也是我们做动态服务路由的重要原因。

说到服务路由,大家都会想到三个方面:

  • 服务注册、服务发现、负载均衡,服务注册说的是服务提供者在起来的时候,得去服务发现注册一下,以表明我提供了的服务、端口、IP是多少,服务名又是什么。

  • 服务发现就是一个集中管理服务的地方,上面记录了有哪些服务,它们在哪些地方。

  • 负载均衡,因为有很多同样的容器提供了同样的一个服务,怎么在这些容器里做负载均衡,也是要考虑的。 

服务发现有很多方案,ETC跟Consul算是后起之秀,比较常见。Zookeeper是一个比较老牌的开源项目,比较成熟,对资源的要求比较高,相对比较强大一点。Consul不但支持KV存储,还有原生的服务监控、多数据中心、DNS功能等,所以我们选了Consul这个方案。

负载均衡也是有很多方案,比如说Nginx,LVS扩展起来非常难;再高级一点的有HA_PROXY,它可以做到高层的,也可以做到基层的,Nginx专注于做HTTP,后续也支持了TCP。从负载均衡出发,选择了Nginx。

image


为您推荐了相关的技术文章:

  1. 透过F5获取服务器真实内网IP - 勾陈安全实验室
  2. 透过F5获取服务器真实内网IP - ThreatHunter
  3. Nginx Installation、Configuration、Rreverse Proxy、Load Balancing Learning
  4. 分布式数据库和 Hadoop 都不够好,于是我们设计了分布式 SQL 计算系统
  5. 浅谈Web渗透测试中的信息收集 - FreeBuf.COM | 关注黑客与极客

原文链接: support.upyun.com