

Aeraki-赵化冰的博客 | Zhaohuabing Blog
source link: https://zhaohuabing.com/post/2021-09-27-aeraki/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Aeraki, Manage any layer 7 traffic in Istio service mesh!
Aeraki [Air-rah-ki] is the Greek word for ‘breeze’. While Istio connects microservices in a service mesh, Aeraki provides a framework to allow Istio to support more layer 7 protocols other than just HTTP and gRPC. We hope that this breeze can help Istio sail a little further.
Problems to solve
We are facing some challenges in service mesh:
- Istio and other service mesh implementations have very limited support for layer 7 protocols other than HTTP and gRPC.
- Envoy RDS(Route Discovery Service) is solely designed for HTTP and gRPC. Other protocols such as Dubbo and Thrift can only use listener in-line routes for traffic management, which breaks existing connections when routes change.
- It takes a lot of effort to introduce a proprietary protocol into a service mesh. You’ll need to write an Envoy filter to handle the traffic in the data plane, and a control plane to manage those Envoys.
Aeraki’s approach
To address these problems, Aeraki Framework providing a non-intrusive, extendable way to manage any layer 7 traffic in a service mesh.
Aeraki Framework consists of the following components:
- Aeraki: Aeraki provides high-level, user-friendly traffic management rules to operations, translates the rules to envoy filter configurations, and leverages Istio’s EnvoyFilter API to push the configurations to the sidecar proxies. Aeraki also serves as the RDS server for metaprotocol proxies in the data plane. Contrary to Envoy RDS, which focuses on HTTP, Aeraki RDS is aimed to provide general dynamic route capabilities for all layer-7 protocols.
- MetaProtocol Proxy: MetaProtocol Proxy provides common capabilities for Layer-7 protocols, such as load balancing, circuit breaker, load balancing, routing, rate limiting, fault injection, and auth. Layer-7 protocols can be built on top of MetaProtocol. To add a new protocol into the service mesh, the only thing you need to do is implementing the codec interface. If you have special requirements which can’t be meet by the built-in capabilities, MetaProtocol Proxy also has a filter chain mechanism, allowing users to write their own layer-7 filters to add custom logic into MetaProtocol Proxy.
Dubbo and Thrift have already been implemented based on MetaProtocol. More protocols are on the way.
Need to manage proprietary protocols in Istio service mesh? All you need to do is just implementing the codec interface. Aeraki Framework will take care all the others for you. It’s so easy!
Aeraki also has plugins for the protocols which are too special to be fit into the MetaProtocol framework, such as Redis and Kafka, so these protocols can be managed in Istio service mesh.
Reference
Supported protocols:
- Dubbo
Service Discovery
- Traffic Management
- Request Level Load Balancing
- Version Based Routing
- Traffic Splitting
- Method Based Routing
- Header Based Routing
- Crcuit Breaker
- Locality Load Balancing
- RDS(Route Discovery Service)
- Observability
- Dubbo Request Metrics
- Security
- Peer Authorization on Interface/Method
- Rquest Authorization
- Thrift
- Traffic Management
- Request Level Load Balancing
- Version Based Routing
- Traffic Splitting
- Header Based Routing
- Rate Limit
- Observability
- Thrift Request Metrics
- Traffic Management
- Kafka
- Metrics
- ZooKeeper
- Metrics
- Redis
- Redis Cluster
- Sharding
- Prefix Routing
- Traffic Mirroring
- MySql
- MongoDB
- Postgres
- RocketMQ
Live Demo: Service Metrics: Grafana
Live Demo: Service Metrics: Prometheus
Screenshot: Service Metrics:
Recored Demo: Dubbo and Thrift Traffic Management
Install
Pre-requirements:
- A running Kubernetes cluster, which can be either a cluster in the cloud, or a local cluster created with kind/minikube
- Kubectl installed, and the
~/.kube/conf
points to the cluster in the first step - Helm installed, which will be used to install some components in the demo
Download Aeraki from the Github
git clone https://github.com/aeraki-framework/aeraki.git
Install Istio, Aeraki and demo applications
aeraki/demo/install-demo.sh
Note: Aeraki needs to configure Istio with smart dns. If you already have an Istio installed and don’t know how to turn on smart dns, please uninstall it. install-demo.sh will install Istio for you.
Open the following URLs in your browser to play with Aeraki and view service metrics
- Kaili
http://{istio-ingressgateway_external_ip}:20001
- Grafana
http://{istio-ingressgateway_external_ip}:3000
- Prometheus
http://{istio-ingressgateway_external_ip}:9090
You can import Aeraika demo dashboard from file demo/aeraki-demo.json
into the Grafana.
Talks
Contact
- Mail: If you’re interested in contributing to this project, please reach out to [email protected]
- Wechat Group: Please contact Wechat ID: zhao_huabing to join the Aeraki Wechat group
- Slack: Join Aeraki slack channel
Recommend
-
49
-
35
-
22
分布式调用跟踪和Opentracing规范 什么是分布式调用跟踪? 相比传统的“巨石”应用,微服务的一个主要变化是将应用中的不同模块拆分为了独立的进程。在微服务架构下,原来进程...
-
13
rxliuli blog 博客迁_ 2020年12月29日 早上 355 字 ...
-
7
electron 开发系列博客 e_ 2020年12月30日 上午 283 字 ...
-
7
Nuclear-Blog v7.2 博客系统 最终版 开源下载 大概在 2010 年前后,那会儿非常流行搭博客,核总
-
6
Aeraki 助你在 Istio 服务网格中管理任何七层流量-赵化冰的博客流量管理是 Istio 服务网格的核心能力,然而 Istio 缺省只提供了 HTTP 和 gRPC 两种协议的七层管理能力。对于微服务中常用的其他协议,包括 RPC、Messaging、Cache、Database等,Istio 只支持在四...
-
5
Aeraki系列:如何设置本地限流规则 Aeraki 可以帮助你在服务网格中管理任何七层协议。目前 Aeraki 已经支持了 Dubbo、Thrit、Redis 等开源协议。 作者:赵化冰来源:
-
3
Aeraki 可以帮助你在服务网格中管理任何七层协议。目前 Aeraki 已经支持了 Dubbo、Thrit、Redis 等开源协议。你还可以使用 Aeraki 的 MetaProtocol 协议扩展框架来管理私有协议的七层流量。 本系列教程将介绍如何通过 Aeraki 来在服务网格中为 Dubbo、T...
-
4
Aeraki Mesh 正式成为CNCF沙箱项目,腾讯云携手合作伙伴加速服务网格成熟商用
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK