微服务网格架构(服务网格的作用),本文通过数据整理汇集了微服务网格架构(服务网格的作用)相关信息,下面一起看看。

服务网格和微服务对比分析 服务网格与微服务比较背景管理 Dubbo 服务安装完成后,接着我们就可以给它配置上游注册中心地址为 ZooKeeper ,若环境没有可用的 ZooKeeper 服务器,可以通过阿里云 mse ZooKeeper 快

背景管理 Dubbo 服务

安装完成后,接着我们就可以给它配置上游注册中心地址为 ZooKeeper ,若环境没有可用的 ZooKeeper 服务器,可以通过阿里云 mse ZooKeeper 快速创建一个,如下:

给 MCPBridge 组件配置它需要关联的注册中心很简单,只需要创建一个 MCPBridge CR 即可,具体配置格式如下:

文件:zk-mcpbridge.yaml

apiVersion: istio.aliyun.cloud.com/v1kind: McpBridgemetadata: name: default namespace: istio-systemspec: registries: - domain: mse-7e74ff00-zk.mse.aliyuncs.com ### zookeeper 地址 name: zookeeper port: 2181 type: zookeeper

kubectl apply -f zk-mcpbridge.yaml 生效后,MCPBridge 组件就会自动同步 ZooKeeper 下dubbo 节点下的服务信息到 istiod 了。

若想体验 MCPBridge 支持 Dubbo + ZK 的具体示例,可以下载测试示例: dubbo-zk-demo.tar.gz

文件包下面包含了上面 McpBridge 这个 yaml 配置以及测试用的 dubbo demo 服务例子。

root@service-mesh-test011122063081:~/test/mcpbridge/dubbo-zk-demo# tree ..├── dubbo-services.yaml ## dubbo + zk注册中心测试服务例子├── zk-mcpbridge.yaml ## mcpbridge zk 配置,需要对应修改zk地址└── zk-registry-service-alias.yaml ## zk地址的服务别名,需要对应修改zk地址

接下来我们简要说明下如何来使用这个 Demo 例子。

当把 dubbo-zk-demo.tar.gz下载并解压完成后,我们首先需要将 yaml 下 zk 地址 "http://mse-7e74ff00-zk.mse.aliyuncs.com" 修改为实际对应的 zk 服务地址(该地址需要确保 MCPBridge 组件可以访问),地址修改完成后,在 dubbo-zk-demo 文件目录下执行如下命令:

kubectl create ns dubbo kubectl label ns dubbo istio-injection=enabledkubectl apply -f .

然后再通过命令 kubectl get pods -n dubbo 查看确认对应 dubbo 服务 consumer 、provider 是否启动成功,

root@service-mesh-test011122063081:~/test/mcpbridge# kubectl get pods -n dubboNAME READY STATUS RESTARTS AGEdubbo-consumer-zk-5cd8f6c6bf-bscd2 2/2 Running 0 83mdubbo-provider-zk-v1-54cd888957-k7bg4 2/2 Running 0 83mdubbo-provider-zk-v2-cf58ccc79-sg94l 2/2 Running 0 83m

启动成功后,我们回到 Zookeeper 下,可以看到已经有服务注册信息报上来了:(dubbo 节点下)

接着,我们将 consumer 服务映射到 ASM 网关下进行测试访问,通过 ASM 控制台我们可以快速地创建一个 ASM 网关,若是采用 CICD 或者 GitOps 等方案,也可以直接通过创建 IstioGateway Yaml 的方式来创建。

网关实体创建成功后(gateway deployment、svc 等),我们还需要配置逻辑网关,只需要两步即可;

创建一个网关规则(istio 下的 gateway CRD), 声明一个逻辑网关,以及这个逻辑网关(test-gateway) 绑定的具体域名和声明端口以及协议类型配置网关路由,将 /sayHello 请求转发给 dubbo-consumer-zk.dubbo.svc.cluster.local 目标服务

网关规则和网关路由可以参考如下 Yaml, 我们只需将这个 Yaml 保存为本地文件,然后在 asm 集群下 kubectl apply 即可。

---apiVersion: networking.istio.io/v1alpha3kind: Gatewaymetadata: name: test-gatewayspec: selector: istio: ingressgateway servers: - port: number: 80 name: http protocol: HTTP hosts: - "*"---apiVersion: networking.istio.io/v1alpha3kind: VirtualServicemetadata: name: consumerhttpspec: hosts: - "*" gateways: - test-gateway http: - match: - uri:prefix: /sayHello route: - destination:host: dubbo-consumer-zk.dubbo.svc.cluster.local ##对应consumer服务的k8s service nameport: number: 17080

网关规则和路由配置生效后,我们可以通过浏览器或者终端命令方式:

curl http://$INGRESS_GATEWAY_IP/sayHello/world 来访问前面部署的 Dubbo demo 服务,执行如下命令,可以看到执行后输出的相关结果:前后请求两次负载均衡到了 Provider 的 v1 、v2 版本。

#export INGRESS_GATEWAY_IP=YOUR_GATEWAY_IP #curl http://$INGRESS_GATEWAY_IP/sayHello/world V2 Gray1: hello world - 172.22.32.143:20880 #curl http://$INGRESS_GATEWAY_IP/sayHello/world V1 Gray1: hello world - 172.22.32.39:20880

更多流量管理、灰度发布、可观测例子可以参考 Istio 以及 ASM 下 Dubbo 服务治理的相关文档来配置。

总结

针对传统微服务框架 SpringCloud 和 Dubbo, 阿里云服务网格 ASM 针对客户常用的场景需求以及遇到的问题,基于 Istio 进行扩展支持,可以无缝兼容管理 SpringCloud 、Dubbo 服务,并提供 Istio 原生的服务治理能力。

阿里云服务网格 ASM 作为托管服务网格的先行者,已经收获了大量的用户落地,这些用户更加坚定了我们做这个产品的信心。服务网格不再是成堆的 buzzword,而是真真实实应用到生产环境,处理服务治理领域一个又一个的技术问题。回归本质,服务网格还是要解决真真切切的业务问题。

作者:宇曾

原文链接:http://click.aliyun.com/m/1000347736/

本文为阿里云原创内容,未经允许不得转载。

更多微服务网格架构(服务网格的作用)相关信息请关注本站。