使用 AHAS 进行高可用防护

对于部署在容器服务 Kubernetes 版中的 Java 应用,您可以使用应用高可用服务 AHAS 来对系统进行高可用防护,实现服务间限流、降级、应用系统保护等操作, 保障应用7x24小时高可用。

前提条件


背景信息


应用高可用服务 AHAS(Application High Availability Service)是一款阿里云应用高可用服务相关产品。只要为部署在容器服务 Kubernetes 版中的 Java 应用安装 AHAS 应用流控组件后,您无需修改任何代码,就能借助 AHAS 对 Java 应用进行全方位进行系统防护,方便针对行的对系统进行流量管控、服务降级等操作。详细信息请参见应用流控降级

操作步骤


步骤一:安装 AHAS 流控组件

首先需要安装 AHAS 应用流控组件 ack-ahas-sentinel-pilot。

  1. 登录容器服务 Kubernetes 版控制台

  2. 在左侧导航栏选择市场 > 应用目录,在右侧选中 ack-ahas-sentinel-pilot

  3. 应用目录 - ack-ahas-sentinel-pilot 页面上,在右侧的创建面板中选择前提条件中创建的集群和命名空间,并单击创建

步骤二:为 Java 应用开启 AHAS

以下步骤分别对应创建新应用和已有应用这两种情况。

如需在创建新应用的同时开启 AHAS 应用流控,请按以下步骤操作。

  1. 在容器服务管理控制台左侧导航栏选择应用 > 无状态

  2. 无状态(Deployment)页面右上角单击使用模板创建

  3. 使用模板创建页面上选择集群命名空间示例模板,并在模板(YAML 格式)中将以下 annotations 添加到 spec > template > metadata 层级下:

annotations:
  # 是否开启ahas 应用流控插件, on、true 表示开启, off、false表示关闭
  ahasPilotAutoEnable: "on"
  # ahas 应用名
  ahasAppName: "<your-deployment-name>"
  # ahas license, vpc 环境无需配置, 公网环境在 ahas控制台 >> 应用流控 >> 新应用接入 获取即可
  #ahasLicense: "<your-license>"                                  

完整 YAML 示例模板如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: agent-foo
  labels:
    name: agent-foo
spec:
  replicas: 1
  selector:
    matchLabels:
      name: agent-foo
  template:
    metadata:
      labels:
        name: agent-foo
      annotations:
        ahasPilotAutoEnable: "on"
        ahasAppName: "K8sFooTest"
        ahasNamespace: "default"
    spec:
      containers:
      - name: foo
        image: registry.cn-hangzhou.aliyuncs.com/sentinel-docker-repo/foo:0.1.1
        imagePullPolicy: Always                                

如需为现有应用开启 AHAS 应用流控,请按以下步骤操作。

  1. 在容器服务管理控制台左侧导航栏选择应用 > 无状态应用 > 有状态

  2. 无状态(Deployment)有状态(StatefulSet)页面上,选择集群命名空间,并在目标应用右侧操作列中选择更多 > 查看 Yaml

  3. 编辑 YAML 对话框中将以下 annotations 添加到 spec > template > metadata 层级下,并单击更新

    说明: 请将 <your-deployment-name> 替换为您的应用名称。

    annotations:
      ahasPilotAutoEnable: "on"
      ahasAppName: "<your-deployment-name>"
      #ahas namespace, 默认default
      #ahasNamespace: "default"
      #ahas license, 公网需要
      #ahasLicense: "<your-license>"                                  
    

后续步骤


完成上述步骤后,您就为部署在容器服务 Kubernetes 版中的应用开启了 AHAS 服务。在目标应用的操作列中单击 AHAS 控制台,将进入 AHAS 控制台

配置项


下列表单展示此chart的配置项与默认值,如需修改,请在参数列表中修改。

Parameter Description Default
image.imageTag pilot 镜像tag 0.1.1
image.imagePullPolicy 镜像拉取策略, 必须是 Always、IfNotPresent、Never 三者中的一个 Always
controller.logLevel pilot 日志级别, 1表示INFO, 2表示DEBBUG 1
controller.region_id 目标集群所在的 region,如 cn-hangzhou, cn-beijing, cn-shenzhen, cn-shanghai , 如果是公网, 则填写为 cn-public cn-hangzhou