对于部署在容器服务 Kubernetes 版中的 Java 应用,您可以使用应用高可用服务 AHAS 来对系统进行高可用防护,实现服务间限流、降级、应用系统保护等操作, 保障应用7x24小时高可用。
应用高可用服务 AHAS(Application High Availability Service)是一款阿里云应用高可用服务相关产品。只要为部署在容器服务 Kubernetes 版中的 Java 应用安装 AHAS 应用流控组件后,您无需修改任何代码,就能借助 AHAS 对 Java 应用进行全方位进行系统防护,方便针对行的对系统进行流量管控、服务降级等操作。详细信息请参见应用流控降级。
首先需要安装 AHAS 应用流控组件 ack-ahas-sentinel-pilot。
在左侧导航栏选择市场 > 应用目录,在右侧选中 ack-ahas-sentinel-pilot。
在应用目录 - ack-ahas-sentinel-pilot 页面上,在右侧的创建面板中选择前提条件中创建的集群和命名空间,并单击创建。
以下步骤分别对应创建新应用和已有应用这两种情况。
如需在创建新应用的同时开启 AHAS 应用流控,请按以下步骤操作。
在容器服务管理控制台左侧导航栏选择应用 > 无状态。
在无状态(Deployment)页面右上角单击使用模板创建。
在使用模板创建页面上选择集群、命名空间和示例模板,并在模板(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 应用流控,请按以下步骤操作。
在容器服务管理控制台左侧导航栏选择应用 > 无状态或应用 > 有状态。
在无状态(Deployment)或有状态(StatefulSet)页面上,选择集群和命名空间,并在目标应用右侧操作列中选择更多 > 查看 Yaml。
在编辑 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 |