diff --git a/schedule-replicas-by-topology-labels.md b/schedule-replicas-by-topology-labels.md index cfdf039a1877..ba87f9ba5e3a 100644 --- a/schedule-replicas-by-topology-labels.md +++ b/schedule-replicas-by-topology-labels.md @@ -86,9 +86,69 @@ pd-ctl config set isolation-level zone > > `isolation-level` 默认情况下为空,即不进行强制隔离级别限制,若要对其进行设置,必须先配置 PD 的 `location-labels` 参数,同时保证 `isolation-level` 的值一定为 `location-labels` 中的一个。 -### 使用 TiDB Ansible 进行配置 +### 使用 TiUP 进行配置(推荐) -如果使用 TiDB Ansible 部署集群,可以直接在 inventory.ini 文件中统一进行 location 相关配置。tidb-ansible 会负责在 deploy 时生成对应的 TiKV 和 PD 配置文件。 +如果使用 TiUP 部署集群,可以在[初始化配置文件](/production-deployment-using-tiup.md#第-3-步编辑初始化配置文件)中统一进行 location 相关配置。TiUP 会负责在部署时生成对应的 TiKV 和 PD 配置文件。 + +下面的例子定义了 `zone/host` 两层拓扑结构。集群的 TiKV 分布在三个 zone,每个 zone 内有两台主机,其中 z1 每台主机部署两个 TiKV 实例,z2 和 z3 每台主机部署 1 个实例。以下例子中 `tikv-n` 代表第 n 个 TiKV 节点的 IP 地址。 + +``` +server_configs: + pd: + replication.location-labels: ["zone", "host"] + +tikv_servers: +# z1 + - host: tikv-1 + config: + server.labels: + zone: z1 + host: h1 + - host: tikv-2 + config: + server.labels: + zone: z1 + host: h1 + - host: tikv-3 + config: + server.labels: + zone: z1 + host: h2 + - host: tikv-4 + config: + server.labels: + zone: z1 + host: h2 +# z2 + - host: tikv-5 + config: + server.labels: + zone: z2 + host: h1 + - host: tikv-6 + config: + server.labels: + zone: z2 + host: h2 +# z3 + - host: tikv-7 + config: + server.labels: + zone: z3 + host: h1 + - host: tikv-8 + config: + server.labels: + zone: z3 + host: h2 +``` + +详情参阅 [TiUP 跨数据中心部署拓扑](/geo-distributed-deployment-topology.md)。 + +
+ 使用 TiDB Ansible 进行配置 + +如果使用 TiDB Ansible 部署集群,可以直接在 `inventory.ini` 文件中统一进行 location 相关配置。`tidb-ansible` 会负责在部署时生成对应的 TiKV 和 PD 配置文件。 下面的例子定义了 `zone/host` 两层拓扑结构。集群的 TiKV 分布在三个 zone,每个 zone 内有两台主机,其中 z1 每台主机部署两个 TiKV 实例,z2 和 z3 每台主机部署 1 个实例。 @@ -110,6 +170,8 @@ tikv-8 labels="zone=z3,host=h2" location_labels = ["zone", "host"] ``` +
+ ## 基于拓扑 label 的 PD 调度策略 PD 在副本调度时,会按照 label 层级,保证同一份数据的不同副本尽可能分散。