打造无缝灾备新境界:运用服务网格ASM,将集群外服务无缝融入集群内服务,铸就高可用性坚盾!

简介: 【8月更文挑战第2天】随着微服务架构的应用,服务的高可用性变得至关重要。服务网格如阿里巴巴的ASM提供流量管理、服务发现等功能,支撑高可靠服务系统。本文介绍如何利用ASM实现集群外服务作为集群内服务的灾备方案,确保服务连续性。先决条件包括已部署ASM的Kubernetes集群环境及内外部的关键服务副本。通过定义服务条目、配置虚拟服务和目的地规则,可实现自动或手动故障转移。借助ASM的流量管理能力,确保服务高可用性和业务连续性。

随着微服务架构的普及,服务的稳定性和高可用性成为了企业关注的重点。服务网格(Service Mesh)如Istio或阿里巴巴的ASM(Alibaba Service Mesh)作为微服务架构的基石,提供了强大的流量管理、服务发现、安全通信等功能,为构建高可靠性的服务系统提供了强大支持。本文将详细介绍如何利用ASM实现集群外服务作为集群内服务灾备的方案,确保在灾难发生时能够无缝切换,保障服务的连续性。

前提条件
假设你已经有一个基于Kubernetes的集群环境,并且已经部署了ASM。同时,你有一个关键服务部署在集群内,我们称之为ServiceA,以及一个位于集群外的相同服务副本,我们称之为ServiceA-Backup。

步骤一:定义服务与服务条目
首先,在ASM中定义集群内服务ServiceA的服务条目(ServiceEntry),以便ASM能够识别并管理它。同时,为集群外的ServiceA-Backup也创建一个服务条目。

yaml

ServiceA 服务条目(假设已自动发现或已定义)

ServiceA-Backup 服务条目

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: servicea-backup
spec:
hosts:

  • servicea-backup.external.example.com
    location: MESH_EXTERNAL
    ports:
  • number: 80
    name: http
    protocol: HTTP
    resolution: DNS
    步骤二:配置虚拟服务与目的地规则
    接下来,创建虚拟服务(VirtualService)和目的地规则(DestinationRule),以便根据需求将流量路由到主服务或备份服务。

yaml

虚拟服务,默认路由到ServiceA

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: servicea
spec:
hosts:

  • servicea.example.com
    http:
  • route:
    • destination:
      host: servicea.example.com
      subset: v1

目的地规则,定义ServiceA的subsets

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: servicea
spec:
host: servicea.example.com
subsets:

  • name: v1
    labels:
    version: v1

灾难时使用的虚拟服务覆盖,路由到ServiceA-Backup

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: servicea-failover
spec:
hosts:

  • servicea.example.com
    http:
  • route:
    • destination:
      host: servicea-backup.external.example.com
      步骤三:实现自动或手动故障转移
      自动故障转移:可以通过ASM的故障注入、超时重试等策略结合外部监控系统(如Prometheus)来实现。当检测到ServiceA的健康状况异常时,自动更新VirtualService,将流量重定向到ServiceA-Backup。
      手动故障转移:在紧急情况下,管理员可以直接通过ASM的控制面板或kubectl命令更新VirtualService配置,实现快速的手动故障转移。
      示例代码操作
      使用kubectl应用上述配置:

bash
kubectl apply -f servicea-backup-serviceentry.yaml
kubectl apply -f servicea-virtualservice.yaml
kubectl apply -f servicea-destinationrule.yaml

在需要时,应用灾难恢复配置

kubectl apply -f servicea-failover-virtualservice.yaml
结语
通过上述步骤,我们成功地将集群外的服务ServiceA-Backup配置为集群内服务ServiceA的灾备方案。利用ASM强大的流量管理能力,我们可以灵活地根据业务需求和服务状态调整流量路由,确保服务的高可用性和业务连续性。

相关文章
|
2月前
|
运维 Kubernetes 安全
利用服务网格实现全链路mTLS(一):在入口网关上提供mTLS服务
阿里云服务网格(Service Mesh,简称ASM)提供了一个全托管式的服务网格平台,兼容Istio开源服务网格,用于简化服务治理,包括流量管理和拆分、安全认证及网格可观测性,有效减轻开发运维负担。ASM支持通过mTLS提供服务,要求客户端提供证书以增强安全性。本文介绍如何在ASM入口网关上配置mTLS服务并通过授权策略实现特定用户的访问限制。首先需部署ASM实例和ACK集群,并开启sidecar自动注入。接着,在集群中部署入口网关和httpbin应用,并生成mTLS通信所需的根证书、服务器证书及客户端证书。最后,配置网关上的mTLS监听并设置授权策略,以限制特定客户端对特定路径的访问。
125 2
|
2月前
|
Kubernetes 安全 数据安全/隐私保护
利用服务网格实现全链路mTLS(二):通过出口网关访问外部mTLS服务
阿里云服务网格(Service Mesh,简称ASM)提供了一个全托管式的服务网格平台,兼容Istio开源服务网格,简化服务治理,包括流量管理、服务间通信安全及网格可观测性。ASM出口网关统一管理网格内的出口流量,实现全链路加密通信与精细访问控制。本文介绍如何配置ASM出口网关以管理出口流量并发起mTLS通信,涉及配置ServiceEntry、创建出口网关、设置虚拟服务及目标规则等步骤,最终实现安全可控的mTLS服务访问。
139 3
|
2月前
|
Perl
如何利用服务网格ASM使用集群外服务做集群内服务的灾备
本文档指导您如何配置阿里云服务网格(ASM)以实现在多集群环境下,服务间的优先访问及故障转移策略。
111 2
|
3月前
|
Cloud Native 测试技术 开发者
阿里云服务网格ASM多集群实践(二):高效按需的应用多环境部署与全链路灰度发布
介绍服务网格ASM提出的一种多集群部署下的多环境部署与全链路灰度发布解决方案。
|
5月前
|
存储 机器学习/深度学习 负载均衡
模型服务网格:云原生下的模型服务管理
模型服务网格:云原生下的模型服务管理
78492 7
模型服务网格:云原生下的模型服务管理
|
5月前
|
负载均衡 安全 网络协议
如何通过计算巢在ACK集群上使用Istio服务网格
本文主要介绍怎么通过计算巢部署Isito服务网格,并介绍了使用示例。
|
12月前
|
监控 安全 大数据
阿里服务的ASM、MSE和ARMS都有其各自的应用场景
阿里服务的ASM、MSE和ARMS都有其各自的应用场景
383 39
|
11月前
|
负载均衡 安全 Cloud Native
[大厂实践] 零配置服务网格与按需集群发现
[大厂实践] 零配置服务网格与按需集群发现
86 0
|
安全 数据安全/隐私保护 开发者
实现安全的服务通信:探索如何使用服务网格来确保服务间的安全通信
实现安全的服务通信:探索如何使用服务网格来确保服务间的安全通信
113 0
|
5月前
|
Oracle 关系型数据库
oracle asm 磁盘显示offline
oracle asm 磁盘显示offline
284 2