基于OpenResty与Consul实现服务网格ServiceMesh
一、逻辑架构 1 、基于 OpenResty 开发智能代理, 利用其动态可编程特性,动态化配置 nginx 服务路由。 2 、可能需要向 OpenResty 添加 weibo 开源的 upsync 服务发现模块。 3 、基于 consul 建设微服务注册中心集群。 4 、服务网格中的每个 node包括至少一个智能代理,若干个微服务, 各个 node 和注册中心一起构成一个服务网格 。 5 、每个微服务启动时需向注册中心上报自身服务信息,包括 ip, 端口,服务名等。 6 、智能代理根据自身的配置和需求从注册中心 pull 相应的动态服务列表信息,并在本地落地做兜底,防止注册中心不可用的情况。 7 、至此,对于每个微服务: ( 1 )对外访问可通过要访问的服务名由智能代理提供 upstream 动态负载均衡访问。 ( 2 )对外提供服务则只需在启动时调用 rest API 向注册中心集群提供自身服务信息即可。 二、组件功能需求 1、 智能 proxy (1) 配置并存放服务注册中心 URL 、配置本 node 需要的外部服务 list 。 (2) 负责发送(转发)本 node 上各个 service 的服务注册请求到服务注册中心。 (3) 根据外部服务 list 到服务注册中心动态获取服务详细信息,通过 openresty 内嵌 lua 脚本动态生成本地配置 location 、