首页 > 其他分享 >基于阿里云服务网格流量泳道的全链路流量管理(三):无侵入式的宽松模式泳道

基于阿里云服务网格流量泳道的全链路流量管理(三):无侵入式的宽松模式泳道

时间:2024-06-05 16:13:23浏览次数:23  
标签:泳道 ip mocka 192.168 v1 version 流量 链路

作者:尹航

在前文《基于阿里云服务网格流量泳道的全链路流量管理(一):严格模式流量泳道》《基于阿里云服务网格流量泳道的全链路流量管理(二):宽松模式流量泳道》中,我们介绍了流量泳道的概念、使用流量泳道进行全链路灰度管理的方案,以及阿里云服务网格 ASM 提供的严格模式与宽松模式的流量泳道。在本文中,我们将介绍一种基于 OpenTelemetry 自动插装方案实现的宽松模式流量泳道场景,无需任何业务代码改造即可为运行在 Kubernetes 集群中的云原生应用实现灵活的全链路灰度管理能力。

概述

流量泳道是将一个云原生应用中的多个服务根据服务版本(或其他特征)隔离成的多个独立的运行环境。

在严格模式下,每条流量泳道中包含应用的调用链路上的全部服务,对于应用程序则没有任何要求。

而在宽松模式下,您只需要确保创建一条包含调用链路中所有服务的泳道:基线泳道。其它泳道可以不包含调用链路上的全部服务。当一个泳道中的服务进行相互调用时,若目标服务在当前泳道中不存在,则请求将被转发到基线泳道中的相同服务,并在请求目标存在当前泳道中存在时将请求重新转发回当前泳道。宽松模式的流量泳道虽然可以实现灵活的全链路灰度,但要求应用程序必须包含一个能够在整条调用链路中透传的请求头(链路透传请求头)。

阿里云服务网格 ASM 已经提供一种基于 baggage 透传的全新宽松模式流量泳道方案,能够在不改造业务代码的情况下,实现泳道服务的灵活灰度。

背景介绍

OpenTelemetry 是云原生计算基金会(Cloud Native Computing Foundation, CNCF)的一个项目,与其他 CNCF 项目如 Kubernetes、Prometheus 和 Envoy 等紧密相连,共同构建了云原生技术生态系统的基础。由于其提供的丰富功能和广泛适用性,OpenTelemetry 在业内已经确立了其领导地位,越来越多的企业和开发者采用它作为构建和维护可观测性平台的核心组件。

baggage 是由 OpenTelemetry 制定并推动的、在分布式系统调用链路中传递链路上下文信息的标准。它具体表现为一个名为 baggage 的请求头,其内部包含了以键值对形式存储的链路上下文信息,例如:

baggage: userId=alice,serverNode=DF%2028,isProduction=false

您可以使用 OpenTelemetry 提供的 SDK,在服务调用链路中传递 baggage 请求头、进而在整条服务链路上传递自定义的上下文信息。当服务部署在 Kubernentes 集群中时,则可以通过 OpenTelemetry Operator 的自动插装来为服务提供 baggage 透传能力、而无需修改业务代码。有关 baggage 的详细信息,可以参考 baggage [ 1]

基于 baggage 的透传,阿里云服务网格 ASM 提供了一种无需修改代码即可实现的宽松模式流量泳道,并针对流量泳道的引流策略进行了增强,支持基于流量权重策略对不同的泳道进行引流。本文将首先使用 OpenTelemetry 自动插装来为服务引用透传 baggage 请求头的能力,接下来创建宽松模式下的三条泳道,并基于流量权重策略对不同的泳道进行引流。

演示:实现服务 baggage 透传与宽松模式流量泳道

前提条件

  • 已创建 ASM 企业版或旗舰版实例,且版本为 1.21.6.54 及以上。具体操作,请参见创建 ASM 实例 [ 2]
  • 已添加集群到 ASM 实例。具体操作,请参见添加集群到 ASM 实例 [ 3]
  • 已创建名称为 ingressgateway 的 ASM 网关。具体操作,请参见创建入口网关服务 [ 4]
  • 已创建名称为 ingressgateway 且命名空间为 istio-system 的网关规则。具体操作,请参见管理网关规则 [ 5]
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
 name: ingressgateway
  namespace: istio-system
spec:
  selector:
    istio: ingressgateway
  servers:
    - port:
        number: 80
        name: http
        protocol: HTTP
      hosts:
        - '*'

步骤一:配置服务透传 baggage 上下文

本节主要展示如何通过 OpenTelemetry Operator 自动插装的方法,为 Kubernetes 集群中的服务添加 baggage 透传能力。

  1. 部署 OpenTelemetry Operator。

a. 通过 kubectl 连接到 ASM 实例添加的 Kubernetes 集群。执行以下命令,创建 opentelemetry-operator-system 命名空间。

kubectl create namespace opentelemetry-operator-system

b. 执行以下命令,使用 Helm 在 opentelemetry-operator-system 命名空间下安装 OpenTelemetry Operator。(如果尚未安装 Helm,可以参考安装 Helm 来安装 Helm 命令行工具。)

helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
helm install \
    --namespace=opentelemetry-operator-system \
    --version=0.46.0 \
    --set admissionWebhooks.certManager.enabled=false \
    --set admissionWebhooks.certManager.autoGenerateCert=true \
    --set manager.image.repository="registry-cn-hangzhou.ack.aliyuncs.com/acs/opentelemetry-operator" \
    --set manager.image.tag="0.92.1" \
    --set kubeRBACProxy.image.repository="registry-cn-hangzhou.ack.aliyuncs.com/acs/kube-rbac-proxy" \
    --set kubeRBACProxy.image.tag="v0.13.1" \
    --set manager.collectorImage.repository="registry-cn-hangzhou.ack.aliyuncs.com/acs/opentelemetry-collector" \
    --set manager.collectorImage.tag="0.97.0" \
    --set manager.opampBridgeImage.repository="registry-cn-hangzhou.ack.aliyuncs.com/acs/operator-opamp-bridge" \
    --set manager.opampBridgeImage.tag="0.97.0" \
    --set manager.targetAllocatorImage.repository="registry-cn-hangzhou.ack.aliyuncs.com/acs/target-allocator" \
    --set manager.targetAllocatorImage.tag="0.97.0" \
    --set manager.autoInstrumentationImage.java.repository="registry-cn-hangzhou.ack.aliyuncs.com/acs/autoinstrumentation-java" \
    --set manager.autoInstrumentationImage.java.tag="1.32.1" \
    --set manager.autoInstrumentationImage.nodejs.repository="registry-cn-hangzhou.ack.aliyuncs.com/acs/autoinstrumentation-nodejs" \
    --set manager.autoInstrumentationImage.nodejs.tag="0.49.1" \
    --set manager.autoInstrumentationImage.python.repository="registry-cn-hangzhou.ack.aliyuncs.com/acs/autoinstrumentation-python" \
    --set manager.autoInstrumentationImage.python.tag="0.44b0" \
    --set manager.autoInstrumentationImage.dotnet.repository="registry-cn-hangzhou.ack.aliyuncs.com/acs/autoinstrumentation-dotnet" \
    --set manager.autoInstrumentationImage.dotnet.tag="1.2.0" \
    --set manager.autoInstrumentationImage.go.repository="registry-cn-hangzhou.ack.aliyuncs.com/acs/opentelemetry-go-instrumentation" \
    --set manager.autoInstrumentationImage.go.tag="v0.10.1.alpha-2-aliyun" \
    opentelemetry-operator open-telemetry/opentelemetry-operator

c. 执行以下命令,检查 opentelemetry-operator 是否正常运行。

kubectl get pod -n opentelemetry-operator-system

预期输出:

NAME READY   STATUS    RESTARTS   AGE
opentelemetry-operator-854fb558b5-pvllj   2/2     Running   0          1m
  1. 配置自动插装(auto-instrumentation)。

a. 使用以下内容,创建 instrumentation.yaml 文件。

apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
 name: demo-instrumentation
spec:
  propagators:
    - baggage
  sampler:
    type: parentbased_traceidratio
    argument: "1"

b. 执行以下命令,在 default 命名空间下声明自动插装。

kubectl apply -f instrumentation.yaml

标签:泳道,ip,mocka,192.168,v1,version,流量,链路
From: https://www.cnblogs.com/alisystemsoftware/p/18233206

相关文章

  • 最新UI酒桌喝酒游戏小程序源码 娱乐小程序源码 带流量主
    最新UI酒桌喝酒游戏小程序源码 娱乐小程序源码带流量主修改增加了广告位,根据文档直接替换,原版本没有广告位直接上传源码到开发者端即可通过后改广告代码,然后关闭广告展示提交,通过后打开即可无广告引流流量主版本的(配合流量主搭建)下载链接:......
  • 企业AI智能名片S2B2C商城系统小程序在奢侈品品牌建设中的应用及流量管理策略
    一、引言在当今数字化时代,品牌建设不再是单一的广告轰炸,而是需要运用创新技术来精准触达并影响目标用户。以奢侈品品牌“星辰璀璨”为例,该品牌通过引入企业AI智能名片S2B2C商城系统小程序,成功地在竞争激烈的市场中树立了独特的品牌形象,并实现了流量的有效管理。本文旨在通过“......
  • 国内首个开源网络流量可视化分析平台 -- 流影
    流影:基于流量的网络行为高级分析平台  流影是一款基于全流量的高级网络行为分析平台,该系统是由深海鱼(北京)科技有限公司流影项目组研发设计,首发开源是1.0版本。项目简介  深海鱼(北京)科技有限公司专注于为客户提供优质的数据分析相关服务,近年来立足于客户的数字安全需求,深耕......
  • 计网期末复习指南(三):数据链路层(CRC冗余校验码计算、PPP协议、CSMA/CD协议、交换机的自
    前言:本系列文章旨在通过TCP/IP协议簇自下而上的梳理大致的知识点,从计算机网络体系结构出发到应用层,每一个协议层通过一篇文章进行总结,本系列正在持续更新中...  计网期末复习指南(一):计算机网络体系结构计网期末复习指南(二):物理层计网期末复习指南(三):数据链路层目录一.数......
  • 通过钩子函数+Traceid实现Flask链路追踪
    背景在flaskweb中我们通常需要一个traceid作为调用参数传递给全链路各个调用函数需要针对一次请求创建一个唯一的traceid:这里用uuid去简化代替我们需要保证traceid不被污染,在每个请求期间存在,在请求结束销毁且线程独立:这里通过flask中的g对象来存储线程内的数据由于我们使用......
  • 使用 Sleuth 和 Zipkin 实现分布式链路追踪
    SpringCloud微服务之间的调用关系,通常随着业务的不断扩张而变得越来越复杂。如果调用链路上任何一个服务出现问题或者网络超时,导致通过日志快速排查和定位问题非常困难。分布式链路追踪就可以轻松解决该场景所面临的问题,其中一种比较简单的方案是采用SpringCloudSleuthSprin......
  • 2024拼多多 最新理论+实战干货,从入门到精通全链路多角度学习-7节课
    基于最新规则理论结合实际的干货课程内容:012024年多多防比价新规则破局理论课与实操课.mp40224年多多强付费第二节课基础内功.mp40324年多多强付费第三节课直通车实操.mp40424年多多强付费第一节课市场定价格段,mp40524年多多自然流第一节课市场分析-small.mp40......
  • 安恒事件流量分析
    文章目录Wireshark工具常用查询方式0x02:WEB扫描特征流量Awvsnessus扫描器、webshell、特殊文件等流量分析1.某公司内网网络被黑客渗透,请分析流量,给出黑客使用的扫描器2.某公司内网网络被黑客渗透,请分析流量,得到黑客扫描到的登陆后台是(相对路径即可)3.某公司内网网络被......
  • 一站式链路追踪:阿里云的端到端解决方案
    作者:涯海炎炎夏日,当你打开外卖APP购买奶茶却发现下单失败;五一佳节,当你自驾游途中发现导航响应缓慢,频繁错过路口;深更半夜,当你辅导孩子功课,却发现GPT应用迟迟无法应答。不知你有没有想过,这些程序运行的背后到底是怎样的世界,每一次点击,每一次交互,又到底发生了什么?如果你是一名......
  • 流量卡代理怎么做?月入上万长期靠谱项目【流量背后的秘密】
    流量卡代理怎么做:流量卡代理就是推广手机卡来赚钱,推广别人办一张手机卡就能挣80-200块钱,平均都在100多一张,就是自己办卡也可以赚钱,因为是运营商的项目,只要运营商不倒,就能一直做,所以是长期项目。做流量卡代理无需成本投入,只需注册即可开始赚钱,适合所有人使用,你在某音、某手、某多......