微服务治理

微服务应用

概述

微服务应用是一组工作负载、服务、服务网格资源等资源对象的集合,支持将微服务应用接入平台进行可视化治理。支持创建新的或选择已有的工作负载和服务创建微服务应用,以支持对应用进行流量治理、灰度发布、链路追踪、拓扑查看等。
Note: 在集群中使用微服务治理功能,需要先在集群部署微服务治理组件,可在创建集群时开启微服务治理组件,或进入集群详情页功能组件列表部署。

创建微服务应用

ZStack Zaku主菜单,选择容器编排 > 微服务治理 > 微服务应用。在微服务应用界面,点击创建微服务应用,弹出创建微服务应用界面。

可参考以下示例输入相应内容:
  • 名称:设置微服务应用的名称。命名规则 :长度限制1-50字符 ,只能包含小写字母、数字及分隔符 (-),且必须以小写字母开头,以数字或小写字母结尾
  • 简介:可选项,备注微服务应用相关的信息
  • 工作负载:指定微服务应用的工作负载。支持选择已有工作负载或创建新的工作负载
    • 选择已有 :直接选择已有的工作负载
      Note: 同一个工作负载只能关联到一个微服务应用
    • 新建 :创建一个新的工作负载关联到微服务应用,参考创建工作负载
  • 工作负载版本:设置工作负载版本。版本规则:长度限制1-50字符 ,只能包含小写字母、数字和分隔符 “-”,“-” 不能用于开头或结尾
    Note: 如工作负载已有 zsedge.io/version 标签,默认使用该标签的值作为工作负载版本,支持手动修改,修改后的值将覆盖到工作负载 zsedge.io/version。
  • 服务:指定工作负载的服务。支持选择已有服务或创建新的服务
    • 选择已有:直接选择已有的服务。
      Note: 已有服务必须跟微服务应用的工作负载关联
    • 新建:创建一个新的服务。参考创建服务

创建微服务应用所示:

图 1. 创建微服务应用


管理微服务应用

ZStack Zaku主菜单,点击容器编排 > 微服务治理 > 微服务应用,进入微服务应用界面。

微服务应用支持以下操作:

操作 描述
创建微服务应用 创建一个新的微服务应用。
灰度发布 创建灰度发布,通过灰度发布的方式更新微服务应用下的工作负载。
Note:
  1. 以下情况不支持灰度发布:
    • 微服务应用下没有工作负载。
    • 微服务应用下没有服务。
    • 微服务应用的服务网格资源曾通过非表单形式修改。
    • 微服务应用已存在灰度发布任务。
    • 微服务应用下的服务通过 zsedge.io/version 标签关联工作负载时,灰度发布的流量策略将无法准确生效,需先更新服务 Yaml,去除 spec.selector 中的 zsedge.io/version 标签,再进行灰度发布。
  2. 以下情况不支持可视化查看和管理灰度发布:
    • 微服务应用的服务网格资源曾通过非表单形式修改或微服务应用下无服务网格资源
    • 微服务应用下没有工作负载
删除微服务应用 删除微服务应用。
Note: 删除微服务应用将同步删除微服务应用下的服务网格资源。

灰度发布

背景信息

灰度发布是一种软件部署策略,旨在安全地逐步将新版本应用到生产环境中。ZStack Zaku支持可视化操作完整的灰度发布流程,包括:创建灰度发布任务、配置流量策略、实时监控灰度发布过程、版本下线等,实现版本更新的平滑过渡和风险控制。本节主要介绍灰度发布的全过程。
灰度发布全过程分为以下四步:
  1. 创建灰度发布任务
  2. 监控灰度发布
  3. 调整流量策略
  4. 接管所有流量并下线版本

操作步骤

  1. 创建灰度发布任务
    ZStack Zaku主菜单,点击容器编排 > 微服务治理 > 微服务应用。在微服务应用界面,选择要进行灰度发布的微服务应用,点击灰度发布,弹出灰度发布界面。

    创建灰度发布任务分为以下两步:

    1. 新版工作负载

      创建新版本的工作负载,支持快速创建、标准创建、选择已有三种方式:

      1. 快速创建

        仅设置工作负载的名称、副本数、镜像配置,其余配置保持跟旧版工作负载一致。

        可参考以下示例输入相应内容:

        • 工作负载名称:指定新版本工作负载的名称。名称规则:长度限制2-50字符,且只能包含小写字母、数字和分隔符 “-”,必须以小写字母开头,以小写字母或数字结尾
        • 工作负载版本:指定新版本工作负载的版本。版本规则:长度限制1-50字符 ,只能包含小写字母、数字和分隔符 “-”,“-” 不能用于开头或结尾
        • 副本数:设置工作负载包含的容器组个数,最多支持100副本。DeamonSet类型的工作负载不需要设置副本数
        • 镜像配置:配置容器的镜像,默认设置与旧版工作负载一致
          • 容器:容器名称,与旧版工作负载保持一致,不可修改
          • 镜像来源:选择容器镜像来源 ,支持本地仓库和外部仓库两种镜像来源
            如选择本地仓库,将使用已上传到ZStack Zaku本地仓库的镜像创建容器 ,请设置以下参数:
            • 镜像:选择容器镜像
            • 镜像标签:选择镜像标签
            如选择外部仓库,将从ZStack Zaku外的仓库拉取镜像创建容器,请设置以下参数:
            • 镜像:输入详细的镜像地址,例如:docker.io/library/nginx:latest
            • 镜像拉取保密字典:可选项,如镜像所属的外部仓库是私有仓库,需选择保密字典用于镜像仓库认证
        Note: 快速创建方式除工作负载的名称、副本数、镜像配置外,其余配置保持跟旧版工作负载一致,如旧版工作负载挂载的数据卷不支持多节点读或写,请使用标准创建以选择新的数据卷
        图 1所示:
        图 1. 灰度发布-快速创建新版工作负载


      2. 标准创建

        可参考以下示例输入相应内容:

        • 新建工作负载:创建一个新的工作负载,参考创建工作负载
        • 工作负载版本:指定新版本工作负载的版本,版本规则:长度限制1-50字符 ,只能包含小写字母、数字和分隔符 “-”,“-” 不能用于开头或结尾
          Note: 如工作负载已有 zsedge.io/version 标签,默认使用该标签的值作为工作负载版本,支持手动修改,修改后的值将覆盖到工作负载 zsedge.io/version。
        图 2所示:
        图 2. 灰度发布-标准创建新版工作负载


      3. 选择已有

        可参考以下示例输入相应内容:

        • 选择工作负载:如新版本工作负载已经通过其他方式创建,则可直接选择该工作负载
          Note: 需确保所选工作负载能被应用下的服务关联。
        • 工作负载版本:指定新版本工作负载的版本,版本规则:长度限制1-50字符 ,只能包含小写字母、数字和分隔符 “-”,“-” 不能用于开头或结尾
          Note: 如工作负载已有 zsedge.io/version 标签,默认使用该标签的值作为工作负载版本,支持手动修改,修改后的值将覆盖到工作负载 zsedge.io/version。
        图 3所示:
        图 3. 灰度发布-选择已有工作负载


    2. 灰度策略

      可参考以下示例输入相应内容:

      • 策略类型:选择流量策略的类型,支持按流量比例和按请求内容两种方式将流量分配到新旧两个版本
        如选择按流量比例,访问流量将按照配置的比例发送到新版工作负载,剩余比例的流量将发送到旧版工作负载,请设置以下参数:
        • 新版本流量比例:设置要发送到新版本的流量的比例,默认为50%,最大为100%
        如选择按请求内容,则符合以下请求内容配置的流量将发送到新版工作负载,其他流量将被发送到旧版工作负载,请设置以下参数:
        • 请求内容:设置发送到新版工作负载的请求内容要求,只有符合该要求的请求才会被发送到新版工作负载,其他请求将被发送到旧版工作负载。用户可同时填写 URI、Cookie、Header 和操作系统要求,也可只填写其中的一个或几个
          • URI:设置URI的匹配方式及要匹配的内容,即请求流量访问的URI需能按选择的匹配方式匹配到填写的内容
          • Cookie:设置Cookie的匹配方式及要匹配的内容,即需能按选择的匹配方式在请求流量的Cookie中匹配到填写的内容
          • Header:设置Header的匹配方式及要匹配的内容,即需能按选择的匹配方式在请求流量的Header中匹配到填写的内容
          • 操作系统:指定来自哪些操作系统的请求流量能发送到新版本,默认为所有操作系统,可指定Windows、Linux、Mac OS、Android、iOS
            Note: 支持以下三种匹配方式:
            • 完全匹配:请求 URI/Cookie/Header 需与规定内容完全匹配,才能被发送到新版本。
            • 前缀匹配:请求 URI/Cookie/Header 需符合指定的前缀要求,才能被发送到新版本。
            • 正则匹配:请求 URI/Cookie/Header 需符合指定的正则表达式,才能被发送到新版本。
  2. 监控灰度发布
    创建灰度发布任务后,在ZStack Zaku主菜单,点击容器编排 > 微服务治理 > 微服务应用。在微服务应用界面,点击已进行灰度发布的微服务应用,进入微服务应用详情页灰度发布页面,可以查看灰度发布任务的详情及新旧版本间的流量监控。
    图 4所示:
    图 4. 灰度发布详情




  3. 调整流量策略
    ZStack Zaku主菜单,点击容器编排 > 微服务治理 > 微服务应用。在微服务应用界面,点击已进行灰度发布的微服务应用,进入微服务应用详情页灰度发布页面,点击修改策略,弹出修改策略界面。可根据灰度发布的实际情况参考创建灰度发布任务步骤调整流量策略。
  4. 接管所有流量并版本下线
    当确定新版本功能稳定后,可让新版本接管所有流量,或在新版本出现问题时由旧版本接管回所有流量。在ZStack Zaku主菜单,点击容器编排 > 微服务治理 > 微服务应用。在微服务应用界面,点击已进行灰度发布的微服务应用,进入微服务应用详情页灰度发布页面,选择需要接管所有流量的版本,点击接管所有流量,则请求流量将全部发送到接管流量的版本。此时,可点击版本下线,将没有流量访问的版本下线,并删除版本对应的工作负载。

服务拓扑

概述

服务拓扑直观展示当前命名空间下微服务应用间的调用、依赖关系和流量监控数据。支持可视化查看历史和实时的拓扑图,并支持对微服务应用配置负载均衡、连接池、熔断器等流量治理规则。
Note: 要在集群中使用微服务治理功能,需要先在集群部署微服务治理组件,可在创建集群时开启微服务治理组件,或进入集群详情页功能组件列表部署。

查看拓扑图

ZStack Zaku主菜单,选择容器编排 > 微服务治理 > 服务拓扑,进入服务拓扑界面。

服务拓扑默认展示所选集群所选命名空间下最近1分钟微服务应用的拓扑图,支持如下内容:
  • 展示工作负载的每秒请求数、请求成功率、请求延时、容器组数量
  • 每分钟自动刷新获取最新数据并实时展示
  • 支持选择时间段,查看所选时间段的拓扑
    Note: 如所选时间段内,微服务应用间无流量访问,则拓扑图只展示节点,无连线。
  • 节点连线包括绿、黄、红三色,直观展示请求成功率。请求成功率的颜色阈值为:绿(大于等于99.9%)、黄(大于等于80%且小于99.9%)、红(小于80%)
  • 支持放大、缩小、全屏查看

图 1所示:

图 1. 服务拓扑


流量治理

ZStack Zaku主菜单,选择容器编排 > 微服务治理 > 服务拓扑,进入服务拓扑界面。在拓扑图上点击要进行流量治理的微服务应用或工作负载,弹出流量治理界面。

可参考以下示例输入相应内容:
  • 负载均衡:选择是否配置负载均衡参数,默认关闭。若开启,则需设置如下参数:
    • 负载均衡策略:选择负载均衡策略,支持最少请求、轮询、随机、会话保持四种策略,默认为最少请求
      Note:
      • 最少请求:将访问流量发送到当前请求量最少的容器组。
      • 轮询:将访问流量轮流发送到各个容器组。
      • 随机:将访问流量随机发送到任意容器组。
      • 会话保持:基于哈希算法,将满足条件的流量分配给同一个容器组,保证会话连续性和一致性。
      如选择会话保持,则基于哈希算法,将满足条件的流量分配给同一个容器组,保证会话连续性和一致性,请设置以下参数:
      • 会话保持算法:设置会话保持算法,支持基于HTTP Header哈希、基于HTTP Cookie哈希、基于源IP地址哈希三种算法,默认为基于HTTP Header哈希
        如选择基于HTTP Header哈希,则根据 Header 中的信息保持会话,将 Header 中指定键值一致的请求发送到同一个容器组,请设置以下参数:
        • HTTP Header键:设置要用于HTTP Header哈希的指定Header键的名称
        如选择基于 HTTP Cookie 哈希,则根据 Cookie 信息保持会话,将 Cookie 中指定信息一致的请求发送到同一个容器组,请设置以下参数:
        • Cookie名称:设置要用于HTTP Cookie 哈希的Cookie名称
        • Cookie路径:选填,设置要用于HTTP Cookie 哈希的Cookie路径
        • Cookie有效时间:选填,设置要用于HTTP Cookie 哈希的Cookie有效时间,单位秒

        如选择基于源 IP 地址哈希,则根据 HTTP 源 IP 地址信息保持会话,将来自同一个源 IP 地址的请求发送到同一个容器组

  • 连接池:选择是否配置连接池参数,默认关闭。若开启,则需设置如下参数:
    • 最大等待请求数:设置连接池最大等待的请求数,只能是正整数
    • 最大请求数:设置连接池允许的最大请求数,只能是正整数
    • 每连接最大请求数:设置每连接允许的最大请求数,只能是正整数
      Note: 若每连接最大请求数设置为 1,将禁用会话保持。
    • 最大重试次数:设置最大重试次数,只能是正整数
    • 连接超时时间:设置连接超时时间,单位秒,只能是正整数
  • 熔断器:选择是否开启熔断器,默认关闭。若开启,则需设置如下参数:
    Note: 熔断器是一种被动保持 HTTP 服务健康的机制。当发送到某个容器组的请求连续返回 5xx 响应错误并达到指定次数时,该容器组将被熔断,熔断期间,客户端请求将不会被发送到该容器 组。
    • 连续5xx错误响应个数:指定连续多少次5xx错误响应时将容器组熔断,只能是正整数
    • 检测间隔:设置检测的间隔,单位秒,只能是正整数
    • 最短熔断时间:设置最短熔断时间,单位秒,只能是正整数。容器组熔断时间 = 最短熔断时间 * 该容器组被熔断次数
    • 最大熔断比例:设置最大熔断比例,只能是1-100的整数。可熔断容器组数 = 总容器组数 * 最大熔断比例。当计算结果不是整数时,将自动向下取整
图 1所示:
图 1. 流量治理


链路追踪

概述

链路追踪集成Jager,提供服务之间的调用链查询,全方位监控调用链中服务的调用状态、调用耗时等关键指标,帮助用户了解业务请求链路中各节点的响应情况,以便快速定位问题及问题发生的模块。
Note: 要在集群中使用微服务治理功能,需要先在集群部署微服务治理组件,可在创建集群时开启微服务治理组件,或进入集群详情页功能组件列表部署。

查看调用链数据

ZStack Zaku主菜单,选择容器编排 > 微服务治理 > 链路追踪,进入链路追踪界面。可按服务名称、TraceID、请求时间查询调研链,支持自定义查询时间段。每条数据显示⼀个请求操作,包含访问时间、请求时⻓,span数、每个span信息

图 1所示:
图 1. 调用链


点击请求进入详情页,可查看请求详细信息。

图 2所示:
图 2. 调用链详情