云原生 - Istio可观察性之分布式跟踪(三)
作者:justmine
头条号:大数据与云原生
微信公众号:大数据与云原生
创作不易,在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处。
为了方便阅读,微信公众号已按分类排版,后续的文章将在移动端首发,想学习云原生相关知识,请关注我。
一、回顾
[请持续关注...]
如前所述,业务微服务化后,每个单独的微服务可能会有很多副本,多个版本,这么多微服务之间的相互调用、管理和治理非常复杂,Istio统一封装了这块内容在代理层,最终形成一个分布式的微服务代理集群(服务网格)。管理员通过统一的控制平面来配置整个集群的应用流量、安全规则等,代理会自动从控制中心获取动态配置,根据用户的期望来改变行为。
话外音:借着微服务和容器化的东风,传统的代理摇身一变,成了如今炙手可热的服务网格。
Istio就是上面service mesh架构的一种实现,通过代理(默认是envoy)全面接管服务间通信,完全支持主流的通信协议HTTP/1.1,HTTP/2,gRPC ,TCP等;同时进一步细分控制中心,包括Pilot、Mixer、Citadel等。
话外音:后面系列会详细介绍控制中心的各个组件,请持续关注。
整体功能描述如下:
连接(Connect)
控制中心从集群中获取所有微服务的信息,并分发给代理,这样代理就能根据用户的期望来完成服务之间的通信(自动地服务发现、负载均衡、流量控制等)。
保护(Secure)
所有的流量都是通过代理,当代理接收到未加密流量时,可以自动做一次封装,把它升级成安全的加密流量。
控制(Control)
用户可以配置各种规则(比如 RBAC 授权、白名单、rate limit 、quota等),当代理发现服务之间的访问不符合这些规则,就直接拒绝掉。
观察(Observe)
所有的流量都经过代理,因此代理对整个集群的访问情况知道得一清二楚,它把这些数据上报到控制中心,那么管理员就能观察到整个集群的流量情况。
二、前言
作为服务网格的一个完整解决方案,为了向运维人员提供丰富而深入的控制,同时又不给服务开发人员带来负担,Istio被设计为高度模块化和可扩展的平台,涉及到众多的组件,它们分工协作,共同组成了完整的控制平面。为了更好地学习如何运用Istio的连接、安全、控制、可观察性全面地治理分布式微服务应用,先从战略上鸟瞰Istio,进一步从战术上学习Istio将更加容易,故作者决定从可观察性开始Istio的布道,先体验,再实践,最后落地,一步步爱上Istio,爱上云原生,充分利用云资源的优势,解放应用开发工程师的双手,使他们仅仅关注业务实现,让专业的人做专业的事,为企业创造更大的价值。
三、Istio的可观察性
1. 日志
当流量流入服务网格中的微服务时,Istio可以为每个请求生成完整的记录,包括源和目标的元数据等。使运维人员能够将服务行为的审查控制到单个微服务的级别。
2. 监控
Istio基于监控的4 个黄金信号(延迟、流量、错误、饱和)来生成一系列的服务指标,同时还提供了一组默认的服务网格监控大盘。
话外音:Istio还为服务网格控制平面提供了更为详细的监控指标。
3. 分布式跟踪
Istio根据采样率为每个请求生成完整的分布式追踪轨迹,以便运维人员可以理解服务网格内微服务的依赖关系和调用流程。
四、Why - 为什么需要分布式跟踪?
当业务微服务化后,一次业务请求,可能会涉及到多个微服务,分布式跟踪可以对跨多个分布式服务网格的1个请求进行追踪分析,并通过可视化的方式深入地了解请求的延迟,序列化和并发,充分地了解服务流量实况,从而快速地排查和定位问题。
五、What - Istio的分布式跟踪?
概述
Istio利用Envoy 的分布式追踪功能提供了开箱即用的追踪集成。确切地说,Istio 提供了安装各种各种追踪后端服务的选项,并且通过配置代理来自动发送追踪span到追踪后端服务。
话外音:Istio目前支持的追踪后端服务包括Zipkin、Jaeger、LightStep。
话外音:Istio分布式追踪的整体功能,请参考文末链接。
采样率
默认情况下,使用demo配置文件安装时,Istio会捕获所有请求的追踪信息,即每次访问 /productpage
接口时,都可以在dashboard中看到一条相应的追踪信息。此采样频率适用于测试或低流量网格。对于高流量网格(如:生产环境),请通过下面的两种方法之一来降低追踪采样频率:
在安装时,使用可选项
values.pilot.traceSampling
来设置采样百分比。在运行时,通过编辑
istio-pilot
deployment并通过以下步骤来改变环境变量:root@just:~# kubectl -n istio-system get deploy istio-pilot -o yaml
apiVersion: extensions/v1beta1
kind: Deployment
[...]
name: istio-pilot
namespace: istio-system
[...]
env:
- name: PILOT_TRACE_SAMPLING
value: "1"
[...]
Istio默认的追踪采样率为1%,即100个请求生成一次追踪报告,有效值的范围从 0.0 到100.0,精度为 0.01。
六、How - Istio如何配置分布式跟踪?
本篇以zipkin为例,体验Istio的分布式追踪功能。
准备工作
请先部署Istio系统和在线书店例子,详情请参考:云原生 - 体验Istio的完美入门之旅(一)。
部署
istioctl manifest apply --set values.tracing.enabled=true \
--set values.tracing.provider=zipkin
模拟请求
要查看追踪数据,必须向服务发送请求。请求的数量取决于Istio的追踪采样率,默认为1%,即在第一个追踪报告可见之前,需要发送至少100个请求。
使用如下命令向productpage
服务发送200个请求:
for i in `seq 1 200`; do curl -s -o /dev/null http://$GATEWAY_URL/productpage; done
查看追踪报告
概览
从上可以看出,产生了两份追踪报告,完全符合追踪采集率。
请求完整链路
Span详情
关于追踪报告的分析,这里就不赘述了。
七、总结
本篇先回顾了微服务架构的痛点,以及服务网格的本质,然后大致概述了Istio的整体功能,最后从why、what、how的角度体验了Istio的分布式跟踪特性。除了分布式跟踪,Istio的可观察性还包括:日志、监控,敬请期待,未完待续。
八、最后
如果有什么疑问和见解,欢迎评论区交流。
如果觉得本篇有帮助的话,欢迎推荐和转发。
如果觉得本篇非常不错的话,可以请作者吃个鸡腿,创作的源泉将如滔滔江水连绵不断,嘿嘿。
九、参考
https://istio.io/docs/tasks/observability/distributed-tracing/overview
https://istio.io/docs/tasks/observability/distributed-tracing/zipkin
https://www.envoyproxy.io/docs/envoy/v1.12.0/intro/arch_overview/observability/tracing
云原生 - Istio可观察性之分布式跟踪(三)的更多相关文章
- 云原生 - Istio可观察性之监控(四)
作者:justmine 头条号:大数据与云原生 微信公众号:大数据与云原生 创作不易,在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处. 为了方便阅读,微信公众号已按分类排版,后续的文 ...
- DTCC 2020 | 阿里云李飞飞:云原生分布式数据库与数据仓库系统点亮数据上云之路
简介: 数据库将面临怎样的变革?云原生数据库与数据仓库有哪些独特优势?在日前的 DTCC 2020大会上,阿里巴巴集团副总裁.阿里云数据库产品事业部总裁.ACM杰出科学家李飞飞就<云原生分布式数 ...
- 云栖干货回顾 | 云原生数据库POLARDB专场“硬核”解析
POLARDB是阿里巴巴自主研发的云原生关系型数据库,目前兼容三种数据库引擎:MySQL.PostgreSQL.Oracle.POLARDB的计算能力最高可扩展至1000核以上,存储容量可达100TB ...
- 规模化落地云原生,阿里云即将重磅亮相 KubeCon China
2019 年 6 月 24 日至 26 日, 由 Cloud Native Computing Foundation (CNCF) 主办的云原生技术大会 KubeCon + CloudNativeCo ...
- 产品对话 | 愿云原生不再只有Kubernete
从2013年,云原生(Cloud Native)的概念由 Pivotal 的 MattStine 首次提出,到现在,其技术细节不断得到社区的完善.云原生逐渐演变出包括 DevOps.持续交付.微服务. ...
- AI云原生浅谈:好未来AI中台实践
AI时代的到来,给企业的底层IT资源的丰富与敏捷提出了更大的挑战,利用阿里云稳定.弹性的GPU云服务器,领先的GPU容器化共享和隔离技术,以及K8S集群管理平台,好未来通过云原生架构实现了对资源的灵活 ...
- 云原生 - 体验Istio的完美入门之旅(一)
作者:justmine 头条号:大数据达摩院 微信公众号:大数据处理系统 创作不易,在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处. 为了方便大家阅读,可以关注头条号或微信公众号,后 ...
- 云原生 - Why is istio(二)
出处:https://cizixs.com/2018/08/26/what-is-istio 创作不易,在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处. 前言 随着微服务架构的流行, ...
- 云原生ASP.NET Core程序的可监测性和可观察性
分布式应用程序很复杂,给开发人员调试和修复生产问题带来了一系列挑战.尽管微服务架构可帮助维持一支规模较小,可以自主工作并专注于独立业务团队,但由于其分布式性质,它带来了新的挑战.例如,在业务交易过程中 ...
随机推荐
- Excel单元格的日常操作
通过右键选择插入来移动单元格 灵活的运用"整行" 与 "整列" 选中区域之后 通过点击区域边框进行移动 按住shift之后框会变成线 更容易拖动 按住ctrl拖 ...
- DEVOPS技术实践_16:使用Centos容器作为salve的报错offline的问题
上一篇创建了一个centos的容器,而且已经安装了openssh [root@node6 ~]# docker ps -a f2320c5d3c54 centos minutes ago Exited ...
- 洛谷$P4126\ [AHOI2009]$最小割 图论
正解:网络流+$tarjan$ 解题报告: 传送门$QwQ$ $umm$最小割的判定问题$QwQ$,因为并不会做是看的题解才会的,所以也没什么推导过程直接放结论趴$QwQ$ 首先跑个最大流,然后有. ...
- 使用宝塔搭建nextcloud的过程(搭建、优化、问题)
宝塔部署教程 参考网址: 使用NextCloud来搭建我们的私有网盘.并结合Redis优化性能(宝塔) https://www.moerats.com/archives/175/ 宝塔面板下nextc ...
- C# WPF 嵌入网页版WebGL油田三维可视化监控
0x00 楔子 最近做的一个项目,是一个油田三维可视化监控的场景编辑和监控的系统,和三维组态有些类似,不过主要用于油田上. 效果如下图所示: 首先当然是上模型,设计人员跟进. 有了相关的模型,使用我们 ...
- linux入门系列8--shell编程
本文将结合前面介绍的Linux命令.管道符等知识,通过VI编辑器编写Shell脚本,实现能自动化工作的脚本文件. 在讲解Linux常用命令"linux入门系列5--新手必会的linux命令& ...
- React Hooks 一步到位
useState 用来声明状态变量. import React, { useState } from 'react'; // ... const [ count , setCount ] = useS ...
- mysql高级复习
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构.可以得到索引的本质:索引是数据结构,可以简单理解为“排好序的快速查找数据结构”. 数据本身之外,数据库还维护着一 ...
- Python思维导图(一)—— 基础
前言 思维导图并不能涵盖所有知识点,只是梳理某个知识点下我们需要重点关注的分支:根据自己的情况可以进行拓展学习 计算机基础 博主认为需要重点掌握的有 编译型语言和解释型语言的区别?分别有什么编程语言? ...
- 关于爬虫的日常复习(7)—— DOM操作及selenium库