肥城网站建设哪家好域名查询 ip
肥城网站建设哪家好,域名查询 ip,网上购物网站建设,上海网站设计公司排行榜云原生专栏大纲 文章目录 Istio存在的问题Aeraki介绍Aeraki 的解决方案支持的协议支持的特性 安装AerakiAeraki教程采用 ServiceEntry 的 Demo 应用使用 Dubbo2Istio 对接 Dubbo 注册表 的 Demo 应用#xff08;Interface 级流量治理#xff09; Service Mesh 中有大量的七层…云原生专栏大纲 文章目录 Istio存在的问题Aeraki介绍Aeraki 的解决方案支持的协议支持的特性 安装AerakiAeraki教程采用 ServiceEntry 的 Demo 应用使用 Dubbo2Istio 对接 Dubbo 注册表 的 Demo 应用Interface 级流量治理 Service Mesh 中有大量的七层协议流量包括 RPC、Database、Cache、Messaging 等类型的七层协议但 Istio 只提供了 HTTP 和 gRPC 的七层管理能力对其他七层协议的支持非常有限。Aerkai 开源项目通过非侵入的方式为 Istio 提供了任意七层协议的支持能力并提供了面向用户的高级配置 CRD可以很方便地对这些协议的流量进行管理实现灰度发布等高级流量管理能力。目前 Aeraki 已经支持了 Thrift、Dubbo、Redis、Kafka、Zookeeper并即将支持更多的协议。Aeraki 的定位是做成一个非侵入式 Istio 功能增强工具集除了协议扩展之外还会关注解决在 Istio 使用过程中遇到的其他常见问题包括效率优化、配置简化、第三方服务发现接入、功能扩展等。 Istio存在的问题
Istio 和其他流行的服务网格实现对 HTTP 和 gRPC 协议之外的7层协议的支持非常有限。Envoy RDS (Route Discovery Service) 是专为 HTTP 设计的。而其他的协议如 Dubbo 和 Thrift 等只能使用监听器内联路由来进行流量管理当路由改变时需要重建监听器导致存量链接上的请求被中断而出现错误。在服务网格中引入一个专有协议需要花费很多精力。需要编写一个 Envoy 过滤器来处理网络层的流量以及一个专有控制面来管理这些 Envoy 代理。
这些问题使得用户难以在服务网格中管理微服务中其他广泛使用的7层协议的流量。例如在一个微服务应用中我们可能使用以下协议。
RPC: HTTP, gRPC, Thrift, Dubbo, 私有 RPC 协议 …消息队列: Kafka, RabbitMQ …缓存: Redis, Memcached …数据库: MySQL, PostgreSQL, MongoDB …
Aeraki介绍
https://github.com/aeraki-framework/aeraki Aeraki 是一个开源的 Istio 外部服务网格扩展专门设计用于支持异构服务和跨网格通信。它的目标是扩展 Istio使其能够更好地支持多种不同类型的服务包括 Dubbo、Spring Cloud、Thrift 等以及不同的通信协议如 gRPC、HTTP 和 TCP。以下是 Aeraki 的一些主要特点和功能
支持异构服务和协议Aeraki 扩展了 Istio使其能够与 Dubbo、Spring Cloud、Thrift 等异构服务框架进行集成实现这些服务之间的流量管理和通信。跨网格通信Aeraki 支持不同 Istio 网格之间的通信使得在多个 Istio 网格之间进行服务发现、流量控制和安全管理变得更加容易。自动化配置Aeraki 提供了自动化的配置功能可以根据服务的类型和协议自动配置 Istio 的流量路由、策略和安全功能简化了管理和维护工作。可观测性Aeraki 集成了 Istio 的监控和跟踪功能可以帮助用户实时监控和诊断异构服务之间的通信和性能问题。
总的来说Aeraki 扩展了 Istio 的功能使其能够更好地适应复杂的微服务环境支持不同类型和协议的服务并提供跨网格通信的能力。这为用户提供了更灵活、可扩展和安全的微服务治理解决方案。
Aeraki 的解决方案
https://github.com/aeraki-mesh/aeraki/blob/master/README.zh-CN.md为了解决这些问题Aeraki Mesh 提供了一种非侵入性的、高度可扩展的方式来管理任何服务网中的7层流量。 Aeraki Mesh 由以下几部分组成。
Aeraki: Aeraki 为运维提供了高层次的、用户友好的流量管理规则将规则转化为 envoy 代理配置并利用 Istio 的EnvoyFilter API 将配置推送给数据面的 sidecar 代理。 Aeraki 还在控制面中充当了 MetaProtocol Proxy 的 RDS路由发现服务服务器。不同于专注于 HTTP 的 Envoy RDSAeraki RDS 旨在为所有七层协议提供通用的动态路由能力。MetaProtocol Proxy: MetaProtocol Proxy 是一个七层代理框架为七层协议提供了常用的流量管理能力如负载均衡、熔断、路由、本地/全局限流、故障注入、指标收集、调用跟踪等等。我们可以基于 MetaProtocol Proxy 提供的通用能力创建自己专有协议的七层代理。要在服务网格中加入一个新的协议唯一需要做的就是实现 编解码器接口 通常只需数百行代码和几行 yaml 配置。如果有特殊的要求而内置的功能又不能满足MetaProtocol Proxy 还提供了一个扩展机制允许用户编写自己的七层过滤器将自定义的逻辑加入 MetaProtocol Proxy 中。
MetaProtocol Proxy 中已经支持了 Dubbo Thrift bRPC 和一系列私有协议。如果你正在使用一个闭源的专有协议也可以在服务网格中管理它只需为它编写一个 MetaProtocol 编解码器即可。大多数请求/响应式的无状态协议和流式调用都可以建立在 MetaProtocol Proxy 之上。但是由于有些协议的路由策略过于 “特殊”无法在 MetaProtocol 中规范化。例如Redis 代理使用 slot number 将客户端查询映射到特定的Redis服务器节点slot number 是由请求中的密钥计算出来的。只要在 Envoy Proxy 中有一个可用的 TCP filterAeraki 仍然可以管理这些协议。目前对于这一类的协议Aeraki 支持 Redis 和 Kafka。
支持的协议
Aeraki 已经支持下述协议
Dubbo (Envoy 原生过滤器Thrift (Envoy 原生过滤器)Kafka (Envoy 原生过滤器)Redis (Envoy 原生过滤器)MetaProtocol-DubboMetaProtocol-ThfirtMetaProtocol-bRPC百度开源 RPC 协议MetaProtocol-tRPC腾讯内部 RPC 协议MetaProtocol-qza腾讯音乐内部协议MetaProtocol-videoPacket腾讯融媒体内部协议MetaProtocol-其他协议灵雀云、腾讯游戏人生等的内部协议…MetaProtocol-私有协议需要在服务网格中接入你的私有协议没有问题几乎任何七层协议都可以基于 MetaProtocol 实现并在 Aeraki Mesh 中进行流量管理
支持的特性
流量管理 请求级负载均衡/地域感知负载均衡支持一致哈希算法/会话保持熔断灵活的路由匹配条件任何从7层数据包中提取的属性都可作为匹配条件通过 Aeraki MetaRDS 实现动态路由更新基于版本的路由流量分流本地流量限制全局流量限制消息修改流量镜像 可观测性 请求级指标 (请求级延迟、计数、错误等)分布式追踪 安全性 基于接口/方法的对等授权授权请求 请注意: 建立在 MetaProtocol 之上的协议实现支持 Aeraki Mesh 的上述所有功能Envoy 原生 filter 只支持部分上述功能这取决于原生 filter 的能力。 安装Aeraki
参考https://www.aeraki.net/docs/v1.x/install/
MetaProtocol 和 Istio 兼容性
确定要安装的版本小编Istio版本为1.11.2这种中间本部建议向下选择Aeraki版本或者升级istio参考https://istio.io/latest/zh/docs/setup/upgrade/helm/#canary-upgrade
修改 Istio 配置
请修改 istio ConfigMap 以添加以下内容。
启用 Istio DNS catpure启用 Aeraki 托管协议的指标
kubectl edit cm istio -n istio-system原始配置
defaultConfig:discoveryAddress: istiod-1-11-2.istio-system.svc:15012proxyMetadata: {}tracing:zipkin:address: jaeger-collector.istio-system.svc:9411
enablePrometheusMerge: true
rootNamespace: istio-system
trustDomain: cluster.local添加配置
apiVersion: v1
data:mesh: |-defaultConfig:proxyMetadata:ISTIO_META_DNS_CAPTURE: trueproxyStatsMatcher:inclusionPrefixes:- thrift- dubbo- kafka- meta_protocolinclusionRegexps:- .*dubbo.*- .*thrift.*- .*kafka.*- .*zookeeper.*- .*meta_protocol.* 安装 Aeraki
git clone https://github.com/aeraki-mesh/aeraki.git
cd aeraki
export AERAKI_TAG1.3.0
make install安装 AerakiCtl可选
git clone https://github.com/aeraki-mesh/aerakictl.git ~/aerakictl;
source ./aerakictl.shCommand
Aeraki Debugging
aerakictl_aeraki_log
Istiod Debugging
aerakictl_istiod_debug
aerakictl_istiod_config
aerakictl_istiod_registry
aerakictl_istiod_endpoint
aerakictl_istiod_instances
aerakictl_istiod_ads
aerakictl_istiod_logGateway Debugging
aerakictl_gateway_config
aerakictl_gateway_logSidecar Debugging
aerakictl_sidecar_log
aerakictl_sidecar_config
aerakictl_sidecar_route
aerakictl_sidecar_statsaerakictl_sidecar_enable_debug
aerakictl_sidecar_enable_traceaerakictl_sidecar_disable_debug
aerakictl_sidecar_admin
aerakictl_app_log查看Aeraki安装情况 Aeraki教程
https://www.aeraki.net/zh/docs/v1.x/tutorials/
安装示例应用
git clone https://github.com/aeraki-mesh/aeraki.git
cd aeraki-mesh/demo
# 会安装Aeraki Istio 和 demo 应用此处不这样安装
make demo
# 进入demo中相应目录进行安装查看demo示例有那些
cd aeraki-mesh/demo
[rootksmaster21 demo]# ll
总用量 76
drwxr-xr-x. 2 root root 4096 5月 11 2022 dubbo
drwxr-xr-x. 2 root root 4096 5月 11 2022 gateway
-rw-r--r--. 1 root root 28367 5月 11 2022 grafana-dashboard.json
-rwxr-xr-x. 1 root root 821 5月 11 2022 install-aeraki.sh
-rwxr-xr-x. 1 root root 1637 5月 11 2022 install-demo.sh
drwxr-xr-x. 2 root root 4096 5月 11 2022 kafka
drwxr-xr-x. 3 root root 4096 5月 11 2022 metaprotocol-dubbo
drwxr-xr-x. 2 root root 4096 5月 11 2022 metaprotocol-qza
drwxr-xr-x. 5 root root 4096 5月 11 2022 metaprotocol-thrift
drwxr-xr-x. 2 root root 4096 5月 11 2022 metaprotocol-trpc
drwxr-xr-x. 2 root root 4096 5月 11 2022 metaprotocol-videopacket
drwxr-xr-x. 2 root root 4096 5月 11 2022 thrift
-rwxr-xr-x. 1 root root 1312 5月 11 2022 uninstall-demo.sh采用 ServiceEntry 的 Demo 应用
https://zhuanlan.zhihu.com/p/361811537
安装dubbo示例Interface 级流量治理
cd dubbo
# 修改其中install.sh脚本自动注入改为如下内容
kubectl label namespace dubbo istio-injectionenabled --overwritetrue
kubectl label namespace dubbo istio.io/rev1-11-2 --overwritetrue
# 安装示例dubbo应用
./install.sh查看部署情况 访问测试
使用 Dubbo2Istio 对接 Dubbo 注册表 的 Demo 应用Interface 级流量治理
部署
git clone https://github.com/aeraki-mesh/dubbo2istio.git
cd dubbo2istiokubectl create ns meta-dubbo
kubectl label namespace meta-dubbo istio-injectionenabled --overwritetrue
kubectl label namespace meta-dubbo istio.io/rev1-11-2 --overwritetrue
kubectl apply -f demo/k8s/zk -n meta-dubbo
kubectl apply -f demo/traffic-rules/destinationrule.yaml -n meta-dubbo上面的脚本安装的是 ZooKeeper 注册表你也可以选择安装 nacos 或者 etcd 注册表。Dubbo Demo 应用程序源码可以从 https://github.com/aeraki-mesh/dubbo-envoyfilter-example 下载。
查看部署情况
kubectl get pod -n meta-dubbo
NAME READY STATUS RESTARTS AGE
dubbo-sample-consumer-5cf9f6f878-qxwwp 2/2 Running 0 97s
dubbo-sample-provider-v1-6b7cc9b6f8-j9dvl 2/2 Running 0 97s
dubbo-sample-provider-v2-7546478cbf-l2l74 2/2 Running 0 97s
dubbo2istio-5c4cf7f847-d7kf2 1/1 Running 0 97s
zookeeper-77c844c5b9-7p47v 1/1 Running 0 96s可以看到 dubbo namespace中有下面的 pod
dubbo-sample-consumer: Dubbo 客户端应用dubbo-sample-provider-v1 Dubbo 服务器端应用v1版本dubbo-sample-provider-v2 Dubbo 服务器端应用v2版本zookeeper: Dubbo ZooKeeper 服务注册表dubbo2istio: 服务同步组件负责将 Dubbo 服务同步到服务网格中
安装好 Dubbo Demo 程序后你可以参考 Aeraki Mesh 的 教程 体验 Aeraki Mesh 为 Dubbo 应用提供的七层流量治理能力。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/89630.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!