# CCI 实例高可用部署（多AZ容灾）
#### 应用场景
在生产环境中，**高可用性（High Availability）** 是核心诉求。
- **单实例风险**：若工作负载仅部署单实例（Replicas=1），当该实例所在的底层节点发生故障、升级或网络波动时，业务将直接中断。
- **单 AZ 风险**：即使部署了多实例，若所有实例都集中在同一个可用区（Availability Zone, AZ），当该 AZ 发生电力或网络故障时，服务依然会面临全量瘫痪的风险。
建议配置 **多实例（Replicas \> 1）** 结合 **多可用区（Multi-AZ）** 部署。利用 Kubernetes 的调度策略，将 Pod 分散调度到不同的物理区域，实现"同城容灾"。
#### 获取可用区信息
在配置调度策略前，您需要确认当前区域（Region）下 CCI 服务支持的可用区列表（AZ ID），该 ID 将作为 YAML 文件中 values 的参数。您可以通过控制台区域实时查看，也可以参考下表（注：支持的 Region 和 AZ 可能会随业务发展新增，以控制台实际显示为准）。
| Region                               | AZ              |
|:---|:---|
| 华南-广州/cn-south-1         | cn-south-1e     |
| 华南-广州/cn-south-1         | cn-south-1f      |
| 华南-广州/cn-south-1         | cn-south-1g      |
| 华北-北京四/cn-north-4          | cn-north-4a      |
| 华北-北京四/cn-north-4          | cn-north-4b     |
| 华北-北京四/cn-north-4          | cn-north-4g     |
| 华东-上海一/cn-east-3    | cn-east-3a       |
| 华东-上海一/cn-east-3    | cn-east-3b        |
| 华东-上海一/cn-east-3    | cn-east-3c        |
| 华东-上海一/cn-east-3    | cn-east-3d      |
| 华东-芜湖/cn-east-4                        | cn-east-4a      |
| 西南-贵阳一/cn-southwest-2               | cn-southwest-2d |
| 华北三/cn-north-12                      | cn-north-12a     |
| 华南-广州-友好用户环境/cn-south-4              | cn-south-4a    |
   
#### 配置多 AZ 高可用调度（推荐）
通过配置 **Pod 反亲和性（PodAntiAffinity）**，让调度器自动将 Pod 分散到不同 AZ。
**CCI配置示例：**
**Key** : failure-domain.beta.kubernetes.io/zone
```
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-ha-cci1
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: myapp
    spec:
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: app
                  operator: In
                  values:
                  - myapp
              topologyKey: failure-domain.beta.kubernetes.io/zone
```
#### 配置指定AZ调度
若需将 Pod 强制部署在特定 AZ（例如配合特定 AZ 的云硬盘使用），可使用**节点亲和性（NodeAffinity）**。
**CCI指定AZ示例：**
```
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pinned-cci1
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: failure-domain.beta.kubernetes.io/zone
            operator: In
            values:
            - cn-north-4a # 替换为实际 AZ 名称
  containers:
  - name: nginx
    image: nginx:latest
```
