Envoy

为什么Uber微服务架构使用多租户

此生再无相见时 提交于 2020-08-07 13:01:53
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! Uber服务的高性能主要依赖于在当前平台上快速以及稳定的开发新特性能力,和对应服务使用什么技术栈无关。Uber平台最根本的能力是基于微服务架构,这是一种常用的结构化风格,也就是由各种互操作的服务组成的应用。 微服务架构可以提供很好的伸缩性,同时也能够支持稳定的部署和模块化。在Uber,不同的工程师团队都是基于互操作的服务来工作,所以确保我们的技术栈既要能够安全的发布新的变动,也要能够基于模块化方式可靠的使用架构的已有部分,这点非常重要。总而言之,这些功能能够提高开发者的开发速度以及快速的发布周转(turnaround)次数,另外还可以给我们提供基于独立调度(schedules)构建的灵活性,同时依然可以满足服务级别协议(SLAs)。 在一个微服务架构中允许多系统共存是利用微服务稳定性以及模块化最有效的方式之一,这种方式一般被称为多租户(multi-tenancy)。租户可以是测试,金丝雀发布,影子系统(shadow systems),甚至服务层或者产品线,使用租户能够保证代码的隔离性并且能够基于流量租户做路由决策。对于传输中的数据(data-in-flight)(例如,消息队列中的请求或者消息)以及静态数据(data-at-rest)(例如,存储或者持久化缓存)

Istio-本地运行

a 夏天 提交于 2020-08-06 21:15:26
概述 基于上一篇 Istio1.6-二进制编译和本地运行 但集中在 pilot-discovery 和 envoy(pilot-agent 大部分功能仅作为 envoy 的 watchdog,略过) NOTE: 以下的描述,相对路径都基于目录 /go/src/istio.io/istio/out/linux_amd64/ pilot-discovery 提供http/grpc两种接口,其中grpc是双向通道 运行 可用命令: ./pilot-discovery discovery --kubeconfig /root/.kube/config --caCertFile ./docker_build/docker.pilot/cacert.pem 其中, /root/.kube/config 是本地 K8S 的配置文件 ./docker_build/docker.pilot/cacert.pem 是Istio编译后自带有的证书文件 同时,它还隐式的要求配置文件:./etc/istio/config/mesh,可用的一份如下(未必最简化): { "disablePolicyChecks": true, "disableMixerHttpReports": true, "proxyListenPort": 15001, "connectTimeout": "10s",

Istio1.6-二进制编译和本地运行

最后都变了- 提交于 2020-08-06 15:24:05
二进制版编译和运行 默认编译生成的镜像,调试不是很方便,不好用于研究Istio内部机制。因此尝试本地二进制编译和运行调试。 编译: 可以在各自main()函数所在目录执行编译(见下文中), 也可以用makefile生成的统一目录下内容( /${GOPATH}/src/istio.io/istio/out/linux_amd64/) pilot pilot-discovery cd /${GOPATH}/src/istio.io/istio/pilot/cmd/pilot-discovery/ go build -o pilot-discovery ./pilot-discovery -h ./pilot-discovery discovery pilot-agent cd /${GOPATH}/src/istio.io/istio/pilot/cmd/pilot-agent/ go build -o pilot-agent ./pilot-agent -h ./pilot-agent request GET stats // (从该pilot-agent管理的envoy)获取统计数据 按照 ./pilot-agent proxy 的错误提示,逐步获取本地执行依赖 // 1. 证书文件 mkdir -p /${GOPATH}/src/istio.io/istio/out/linux

6大服务网格工具比较

你说的曾经没有我的故事 提交于 2020-08-05 15:35:53
服务网格(Service mesh) 已经不是一个新鲜概念,但它实现了连接运行在Kubernetes作为容器化平台之上的微服务,这使得服务网格的想法更加流行。如果没有服务网格,每个微服务都需要配置以接收(或发送)连接到其他需要与之通信的微服务,但服务网格完全改变了这一状况。 与此前需要手动配置以及投入大量的时间精力来维护微服务之间的连接所不同的是,开发人员现在可以创建一个网格,使得微服务彼此通信可靠、可控以及安全。Kubernetes和服务网格是相互作用的,主要是因为使用服务网格可以在不增加工作量的情况下,实现更复杂的容器化架构。 因此,有很多方式可以在Kubernetes顶层建立一个服务网格。在本文中,我们将比较一些你可以用于建立服务网格的工具,你可以分别了解到它们的优劣势进而选出最适合自己的服务网格工具。 与AWS环境完美适配:AWS App Mesh 官网: https://aws.amazon.com/app-mesh/ 由于现在许多基于Kubernetes的应用程序和微服务都运行在Amazon Web Services环境中,所以很难不谈到AWS App Mesh。顾名思义,AWS App Mesh是亚马逊自己的服务网格,用于为Amazon services创建服务网格层。 作为亚马逊的产品,AWS App Mesh利用结合了Envoy的专有技术作为其服务代理。AWS

Istio 流量劫持过程

☆樱花仙子☆ 提交于 2020-08-05 10:48:38
开篇 Istio 流量劫持的文章其实目前可以在servicemesher社区找到一篇非常详细的文章,可查阅: Istio 中的 Sidecar 注入及透明流量劫持过程详解 。特别是博主整理的那张“流量劫持示意图”,已经可以很清晰的看出来劫持流程。这里我借着那张图片解释一版该图片的文字版本。在开始文字版前如果对 iptables 命令如果不是非常了解的话建议先重点看下下面的两篇文章,深入浅出的解释了该命令的概念及用法: iptables概念 - 以通俗易懂的方式描述iptables的相关概念 iptables指南 - iptables命令用法指南 这里引用iptables的一张报文流向图(版权归原博主所有) 当客户端访问服务器的web服务时,客户端发送报文到网卡,而tcp/ip协议栈是属于内核的一部分,所以,客户端的信息会通过内核的TCP协议传输到用户空间中的web服务中,而此时,客户端报文的目标终点为web服务所监听的套接字(IP:Port)上,当web服务需要响应客户端请求时,web服务发出的响应报文的目标终点则为客户端,这个时候,web服务所监听的IP与端口反而变成了原点。 -- 引用自 zsythink 上面这部分描述相当重要,它是理解sidecar在进行流量劫持的基础之一。 下面我们分析下昨天 istio-init 启动时执行的 istio-iptables 命令

Hacker News 简讯 2020-07-31

 ̄綄美尐妖づ 提交于 2020-08-05 03:22:38
最后更新时间: 2020-07-31 23:01 Hackers post fake stories on real news sites 'to discredit Nato' - (bbc.co.uk) 黑客在北约网站上发布假新闻 得分:55 | 评论:34 Australia to make Facebook, Google pay for news in world first - (reuters.com) 澳大利亚将使Facebook、Google付费新闻成为世界第一 得分:310 | 评论:302 Monitoring demystified: A guide for logging, tracing, metrics - (techbeacon.com) 监控去神秘化:日志记录、跟踪、度量指南 得分:250 | 评论:45 Google Will Eat Itself (2005) - (gwei.org) 谷歌将自食其果(2005) 得分:59 | 评论:32 Why forgiving someone else is about you - (npr.org) 为什么原谅别人是为了你 得分:66 | 评论:98 Facebook says Apple’s iOS 14 changes could hurt its ad targeting - (cnbc.com

第四十五章 九析带你轻松完爆 Istio

寵の児 提交于 2020-07-29 07:46:59
系列文章: 总目录索引: 九析带你轻松完爆 istio 服务网格系列教程 目录 1 前言 2 邀约 3 概述 1 前言 如果你对博客有任何疑问,请告诉我。 2 邀约 你可以从 b 站搜索 “九析”,获取免费的、更生动的视频资料: 3 Envoy 架构概述 下图展示了 Envoy 架构: 后面将根据这十个方面一一进行说明。 来源: oschina 链接: https://my.oschina.net/u/4390740/blog/4322278

Istio 组件详解

这一生的挚爱 提交于 2020-07-29 06:35:15
1. istio 组件构成 以下是istio 1.1 官方架构图: 虽然Istio 支持多个平台, 但将其与 Kubernetes 结合使用,其优势会更大, Istio 对Kubernetes 平台支持也是最完善的, 本文将基于Istio + Kubernetes 进行展开. 如果安装了grafana, prometheus, kiali, jaeger等组件的情况下, 一个完整的控制面组件包括以下pod: % kubectl -n istio-system get pod NAME READY STATUS grafana-5f54556df5-s4xr4 1/1 Running istio-citadel-775c6cfd6b-8h5gt 1/1 Running istio-galley-675d75c954-kjcsg 1/1 Running istio-ingressgateway-6f7b477cdd-d8zpv 1/1 Running istio-pilot-7dfdb48fd8-92xgt 2/2 Running istio-policy-544967d75b-p6qkk 2/2 Running istio-sidecar-injector-5f7894f54f-w7f9v 1/1 Running istio-telemetry-777876dc5d-msclx 2

Service Mesh 网红 ,istio-v1.6: 变化和代码结构

本秂侑毒 提交于 2020-07-29 05:22:12
变化 变化项 类型 1.6(.3) 1.5或之前 意义 移除 组件 Citadel、Sidecar Injector、Galley 1.5为完成的收尾 强化 功能项 删减的功能,合并入 Istiod 替换 安装 增加: istioctl install; 替换 manifest apply 移除 配置 废弃的 Helm charts、istio-pilot 的配置 增加 功能项 虚拟机支持(WorkloadEntry) 独立于K8S的准备? 移除 组件 Envoy proxy Mixer Mixer的功能已经被移入Envoy proxy,目前为 废弃&未移除状态,1.7后会彻底移除 增加 功能项 Envoy,将 Wasm/WebAssembly 功能移除 代码目录说明 基于 v1.6.3 (2020.06.22) bin/:二进制生成脚本等 common/: 少量编译处理 一些依赖处理 common-protos/:大量proto文件,用于内部各组件(包括第三方组件)高效RPC docker/:ca证书 & Dockerfile.base,顾名思义 galley/:没有变化,独立组件,负责配置管理,包括 验证配置信息格式和内容正确性 屏蔽配置的底层处理细节 将配置提供给其他组件用 install/:安装? consul/:安装和consul的支持 gcp/:安装对Google

Istio 网关之南北向流量管理(内含服务网格专家亲自解答)

不打扰是莪最后的温柔 提交于 2020-07-28 17:31:58
作者 | 王夕宁 阿里巴巴高级技术专家 参与阿里巴巴云原生公众号文末留言互动,有机会获得赠书福利! 本文摘自于由阿里云高级技术专家王夕宁撰写的《Istio 服务网格技术解析与实践》一书,文章介绍将集群外部的客户端连接到集群内运行的服务,以及如何从集群内的服务访问集群外部的任何服务,即通常所说的南北向流量管理。其中介绍了 Istio 在南北向流量方面的路由控制能力,引出 Istio 网关的概念及其工作原理。 本文文末汇集并整理了近期 Istio 的相关问题并特邀王夕宁老师进行解答,希望能够对大家有所帮助~ Istio 网关 网络社区中有一个术语 Ingress,是指入口请求到集群内服务的流量管理。Ingress 指的是源自本地网络之外的流量,指向本地集群网络中的端点。此流量首先路由到公开的入口点,以便通过执行一些本地网络的规则和策略来确认哪些流量被允许进入。如果流量未通过这些入口点,则无法与集群内的任何服务连接。如果入口点允许流量进入,则将其代理到本地网络中的合适节点。Istio 对入口流量的管理是由 Istio 网关进行的。 Istio 网关的工作原理 传统上,Kubernetes 使用 Ingress 控制器来处理从外部进入集群的流量。使用 Istio 时,情况不再如此。Istio 网关用新的 Gateway 资源和 VirtualServices 资源来控制入口流量