Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

zh: support PD micro service #2478

Merged
merged 28 commits into from
Mar 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
8c5cf9e
update
HuSharp Feb 22, 2024
7b82501
address comment
HuSharp Feb 27, 2024
d983076
address comment
HuSharp Feb 27, 2024
d9babd6
add watch status
HuSharp Feb 28, 2024
06579eb
Merge remote-tracking branch 'upstream/master' into support_pd_ms
HuSharp Mar 6, 2024
14848fc
address comment
HuSharp Mar 6, 2024
07381da
rename pdms to component name
HuSharp Mar 6, 2024
eef5485
Apply suggestions from code review
HuSharp Mar 7, 2024
daa875e
address comment
HuSharp Mar 7, 2024
e9594ca
address comment
HuSharp Mar 7, 2024
0544c54
Update zh/configure-a-tidb-cluster.md
HuSharp Mar 8, 2024
2e0b1c1
merge tidb doc
HuSharp Mar 13, 2024
e7bedab
fix doc
HuSharp Mar 14, 2024
e40e88a
fix doc
HuSharp Mar 14, 2024
9e971c2
refine descriptions
qiancai Mar 15, 2024
20e150f
refine descriptions
qiancai Mar 18, 2024
456870b
address comment
HuSharp Mar 20, 2024
8f7353b
wording updates
qiancai Mar 21, 2024
c330026
Apply suggestions from code review
HuSharp Mar 21, 2024
d1c0c27
move pd-microservice.md to doc
HuSharp Mar 21, 2024
b37489f
correct the link to the PD microservices doc
qiancai Mar 21, 2024
c24103d
unify the terms
qiancai Mar 21, 2024
c313ef6
wording updates
qiancai Mar 21, 2024
4da0176
indicate experimental
qiancai Mar 22, 2024
692220d
Merge branch 'support_pd_ms' of https://github.com/HuSharp/docs-tidb-…
qiancai Mar 22, 2024
866ba23
Update configure-a-tidb-cluster.md
qiancai Mar 22, 2024
b9dfd57
Update zh/configure-a-tidb-cluster.md
qiancai Mar 22, 2024
f697ea0
Apply suggestions from code review
qiancai Mar 25, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions zh/configure-a-tidb-cluster.md
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,30 @@ TiDB Operator 支持为 PD、TiDB、TiKV、TiCDC 挂载多块 PV,可以用于

</div>

<div label="PD 微服务">

为 PD 微服务挂载 PV,以 `tso` 微服务为例:

> **注意:**
>
> PD 从 v8.0.0 版本开始支持[微服务模式](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(实验特性)。

```yaml
pd:
mode: "ms"
pdms:
- name: "tso"
config: |
[log.file]
filename = "/pdms/log/tso.log"
storageVolumes:
- name: log
storageSize: "10Gi"
mountPath: "/pdms/log"
```

</div>

</SimpleTab>

> **注意:**
Expand Down Expand Up @@ -251,6 +275,30 @@ spec:
>
> 如果 Kubernetes 集群节点个数少于 3 个,将会导致有一个 PD Pod 处于 Pending 状态,而 TiKV 和 TiDB Pod 也都不会被创建。Kubernetes 集群节点个数少于 3 个时,为了使 TiDB 集群能启动起来,可以将默认部署的 PD Pod 个数减小到 1 个。

#### 部署 PD 微服务

> **注意:**
>
> PD 从 v8.0.0 版本开始支持[微服务模式](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(实验特性)。

如果要在集群中开启 PD 微服务,需要在 `${cluster_name}/tidb-cluster.yaml` 文件中配置 `spec.pd.mode` 与 `spec.pdms`:

```yaml
spec:
pd:
mode: "ms"
pdms:
- name: "tso"
baseImage: pingcap/pd
replicas: 2
- name: "scheduling"
baseImage: pingcap/pd
replicas: 1
```

- `spec.pd.mode` 用于开启或关闭 PD 微服务。设置为 `"ms"` 时表示开启 PD 微服务,设置为 `""` 或删除该字段时,表示关闭 PD 微服务。
- `spec.pdms.config` 用于配置 PD 微服务,具体的配置参数与 `spec.pd.config` 相同。要获取 PD 微服务可配置的所有参数,请参考 [PD 配置文件描述](https://docs.pingcap.com/zh/tidb/stable/pd-configuration-file)。

#### 部署 TiProxy

部署方法与 PD 一致。此外,还需要修改 `spec.tiproxy` 来手动指定 TiProxy 组件的数量。
Expand Down Expand Up @@ -381,6 +429,42 @@ spec:
> - 为了兼容 `helm` 部署,如果你是通过 CR 文件部署 TiDB 集群,即使你不设置 Config 配置,也需要保证 `Config: {}` 的设置,从而避免 PD 组件无法正常启动。
> - PD 部分配置项在首次启动成功后会持久化到 etcd 中且后续将以 etcd 中的配置为准。因此 PD 在首次启动后,这些配置项将无法再通过配置参数来进行修改,而需要使用 SQL、pd-ctl 或 PD server API 来动态进行修改。目前,[在线修改 PD 配置](https://docs.pingcap.com/zh/tidb/stable/dynamic-config#在线修改-pd-配置)文档中所列的配置项中,除 `log.level` 外,其他配置项在 PD 首次启动之后均不再支持通过配置参数进行修改。

##### 配置 PD 微服务

> **注意:**
>
> PD 从 v8.0.0 版本开始支持[微服务模式](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(实验特性)。

你可以通过 TidbCluster CR 的 `spec.pd.mode` 与 `spec.pdms` 来配置 PD 微服务参数。目前 PD 支持 `tso` 和 `scheduling` 这两个微服务,配置示例如下:

```yaml
spec:
pd:
mode: "ms"
pdms:
- name: "tso"
baseImage: pingcap/pd
replicas: 2
config: |
[log.file]
filename = "/pdms/log/tso.log"
- name: "scheduling"
baseImage: pingcap/pd
replicas: 1
config: |
[log.file]
filename = "/pdms/log/scheduling.log"
```

其中,`spec.pdms` 用于配置 PD 微服务,具体的配置参数与 `spec.pd.config` 相同。要获取 PD 微服务可配置的所有参数,请参考 [PD 配置文件描述](https://docs.pingcap.com/zh/tidb/stable/pd-configuration-file)。

> **注意:**
>
> - 为了兼容 `helm` 部署,如果你的 TiDB 集群是通过 CR 文件部署的,即使你不设置 `config` 配置,也需要保证 `config: {}` 的设置,避免 PD 微服务组件无法正常启动。
qiancai marked this conversation as resolved.
Show resolved Hide resolved
> - 如果在部署 TiDB 集群时就启用了 PD 微服务模式,PD 微服务的部分配置项会持久化到 etcd 中且后续将以 etcd 中的配置为准。
> - 如果在现有 TiDB 集群中启用 PD 微服务模式,PD 微服务的部分配置会沿用 PD 的配置并持久化到 etcd 中,后续将以 etcd 中的配置为准。
> - 因此,PD 微服务在首次启动后,这些配置项将无法再通过配置参数来进行修改,而需要使用 [SQL](https://docs.pingcap.com/zh/tidb/stable/dynamic-config#在线修改-pd-配置)、[pd-ctl](https://docs.pingcap.com/tidb/stable/pd-control#config-show--set-option-value--placement-rules) 或 PD server API 来动态进行修改。目前,[在线修改 PD 配置](https://docs.pingcap.com/zh/tidb/stable/dynamic-config#在线修改-pd-配置)文档中所列的配置项中,除 `log.level` 外,其他配置项在 PD 微服务首次启动之后均不再支持通过配置参数进行修改。

#### 配置 TiProxy 配置参数

你可以通过 TidbCluster CR 的 `spec.tiproxy.config` 来配置 TiProxy 配置参数。
Expand Down
17 changes: 11 additions & 6 deletions zh/deploy-tidb-cluster-across-multiple-kubernetes.md
Original file line number Diff line number Diff line change
Expand Up @@ -509,12 +509,13 @@ EOF

2. 以步骤 1 为例,按顺序进行如下升级操作:

1. 如果集群中部署了 TiProxy,为所有部署了 TiProxy 的 Kubernetes 集群升级 TiProxy 版本。
2. 如果集群中部署了 TiFlash,为所有部署了 TiFlash 的 Kubernetes 集群升级 TiFlash 版本。
3. 升级所有 Kubernetes 集群的 TiKV 版本。
4. 如果集群中部署了 Pump,为所有部署了 Pump 的 Kubernetes 集群升级 Pump 版本。
5. 升级所有 Kubernetes 集群的 TiDB 版本。
6. 如果集群中部署了 TiCDC,为所有部署了 TiCDC 的 Kubernetes 集群升级 TiCDC 版本。
1. 如果集群中部署了 [PD 微服务](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(从 TiDB v8.0.0 版本开始支持),为所有部署了 PD 微服务的 Kubernetes 集群升级 PD 微服务版本。
2. 如果集群中部署了 TiProxy,为所有部署了 TiProxy 的 Kubernetes 集群升级 TiProxy 版本。
3. 如果集群中部署了 TiFlash,为所有部署了 TiFlash 的 Kubernetes 集群升级 TiFlash 版本。
4. 升级所有 Kubernetes 集群的 TiKV 版本。
5. 如果集群中部署了 Pump,为所有部署了 Pump 的 Kubernetes 集群升级 Pump 版本。
6. 升级所有 Kubernetes 集群的 TiDB 版本。
7. 如果集群中部署了 TiCDC,为所有部署了 TiCDC 的 Kubernetes 集群升级 TiCDC 版本。

## 退出和回收已加入的 TidbCluster

Expand All @@ -524,6 +525,10 @@ EOF

以上面文档创建的第二个 TidbCluster 为例,先将 PD、TiKV、TiDB 的副本数设置为 0,如果开启了 TiFlash、TiCDC、TiProxy、Pump 等其他组件,也请一并将其副本数设为 `0`:

> **注意:**
>
> PD 从 v8.0.0 版本开始支持微服务模式。如果配置了 PD 微服务,也需要将 PD 微服务 `pdms` 配置中对应组件的 `replicas` 值设置为 `0`。

{{< copyable "shell-regular" >}}

```bash
Expand Down
56 changes: 56 additions & 0 deletions zh/enable-tls-between-components.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,33 @@ aliases: ['/docs-cn/tidb-in-kubernetes/dev/enable-tls-between-components/']
...
```

> **注意:**
>
> PD 从 v8.0.0 版本开始支持[微服务模式](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(实验特性)。如需部署 PD 微服务,并不需要为 PD 微服务的各个组件生成证书,只需要在 `pd-server.json` 文件的 `hosts` 字段中添加微服务相关的 hosts 配置即可。以 `scheduling` 微服务为例,你需要进行以下配置:
>
> ``` json
> ...
> "CN": "TiDB",
> "hosts": [
> "127.0.0.1",
> "::1",
> "${cluster_name}-pd",
> ...
> "*.${cluster_name}-pd-peer.${namespace}.svc",
> // 以下是为 `scheduling` 微服务添加的 hosts 配置
> "${cluster_name}-scheduling",
> "${cluster_name}-scheduling.${cluster_name}",
> "${cluster_name}-scheduling.${cluster_name}.svc",
> "${cluster_name}-scheduling-peer",
> "${cluster_name}-scheduling-peer.${cluster_name}",
> "${cluster_name}-scheduling-peer.${cluster_name}.svc",
> "*.${cluster_name}-scheduling-peer",
> "*.${cluster_name}-scheduling-peer.${cluster_name}",
> "*.${cluster_name}-scheduling-peer.${cluster_name}.svc",
> ],
> ...
> ```

qiancai marked this conversation as resolved.
Show resolved Hide resolved
其中 `${cluster_name}` 为集群的名字,`${namespace}` 为 TiDB 集群部署的命名空间,用户也可以添加自定义 `hosts`。

最后生成 PD Server 端证书:
Expand Down Expand Up @@ -1428,6 +1455,35 @@ aliases: ['/docs-cn/tidb-in-kubernetes/dev/enable-tls-between-components/']

然后使用 `kubectl apply -f tidb-cluster.yaml` 来创建 TiDB 集群。

> **注意:**
>
> PD 从 v8.0.0 版本开始支持[微服务模式](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(实验特性),如需部署 PD 微服务,需要为各个微服务配置 `cert-allowed-cn`。以 Scheduling 服务为例,你需要进行以下配置:
>
> - 更新 `pd.mode` 为 `ms`
> - 为 `scheduling` 微服务配置 `security` 字段
>
> ```yaml
> pd:
> baseImage: pingcap/pd
> maxFailoverCount: 0
> replicas: 1
> requests:
> storage: "10Gi"
> config:
> security:
> cert-allowed-cn:
> - TiDB
> mode: "ms"
> pdms:
> - name: "scheduling"
> baseImage: pingcap/pd
> replicas: 1
> config:
> security:
> cert-allowed-cn:
> - TiDB
> ```

qiancai marked this conversation as resolved.
Show resolved Hide resolved
2. 创建 Drainer 组件并开启 TLS 以及 CN 验证。

- 第一种方式:创建 Drainer 的时候设置 `drainerName`:
Expand Down
26 changes: 26 additions & 0 deletions zh/get-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,32 @@ tidbcluster.pingcap.com/basic created

如果要将 TiDB 集群部署到 ARM64 机器上,可以参考[在 ARM64 机器上部署 TiDB 集群](deploy-cluster-on-arm64.md)。

> **注意:**
>
> PD 从 v8.0.0 版本开始支持[微服务模式](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(实验特性)。如需部署 PD 微服务,可以按照如下方式进行部署:
>
qiancai marked this conversation as resolved.
Show resolved Hide resolved
> ``` shell
> kubectl create namespace tidb-cluster && \
> kubectl -n tidb-cluster apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/basic/pd-micro-service-cluster.yaml
> ```
>
> 查看 Pod 状态:
>
> ``` shell
> watch kubectl get po -n tidb-cluster
> ```
>
> ```
> NAME READY STATUS RESTARTS AGE
> basic-discovery-6bb656bfd-xl5pb 1/1 Running 0 9m
> basic-pd-0 1/1 Running 0 9m
> basic-scheduling-0 1/1 Running 0 9m
> basic-tidb-0 2/2 Running 0 7m
> basic-tikv-0 1/1 Running 0 8m
> basic-tso-0 1/1 Running 0 9m
> basic-tso-1 1/1 Running 0 9m
> ```

### 部署独立的 TiDB Dashboard

{{< copyable "shell-regular" >}}
Expand Down
12 changes: 12 additions & 0 deletions zh/modify-tidb-configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,18 @@ PD 中[支持在线修改的配置项](https://docs.pingcap.com/zh/tidb/stable/d

对于部署在 Kubernetes 中的 TiDB 集群,如需修改 PD 配置参数,需要使用 [SQL](https://docs.pingcap.com/zh/tidb/stable/dynamic-config/#在线修改-pd-配置)、[pd-ctl](https://docs.pingcap.com/tidb/stable/pd-control#config-show--set-option-value--placement-rules) 或 PD server API 来动态进行修改。

### 修改 PD 微服务配置

> **注意:**
>
> PD 从 v8.0.0 版本开始支持[微服务模式](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(实验特性)。

在 PD 微服务各个组件首次启动成功后,PD 的部分配置项会持久化到 etcd 中,且后续将以 etcd 中的配置为准。因此,在 PD 微服务各个组件首次启动后,这些配置项将无法再通过 TidbCluster CR 来进行修改。

PD 微服务各个组件中[支持在线修改的配置项](https://docs.pingcap.com/zh/tidb/stable/dynamic-config#在线修改-pd-配置)里,除 `log.level` 外,其他配置项在 PD 微服务各个组件首次启动之后均不再支持通过 TidbCluster CR 进行修改。
qiancai marked this conversation as resolved.
Show resolved Hide resolved

对于部署在 Kubernetes 中的 TiDB 集群,如需修改 PD 微服务配置参数,你可以使用 [SQL](https://docs.pingcap.com/zh/tidb/stable/dynamic-config#在线修改-pd-配置)、[pd-ctl](https://docs.pingcap.com/tidb/stable/pd-control#config-show--set-option-value--placement-rules) 或 PD server API 来进行动态修改。

## 修改 TiProxy 组件配置

修改 TiProxy 组件的配置永远不会重启 Pod。如果你想要重启 Pod,需要手动杀死 Pod,或更改 Pod 镜像等配置,来手动触发重启。
44 changes: 42 additions & 2 deletions zh/scale-a-tidb-cluster.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ watch kubectl -n ${namespace} get pod -o wide

本小节介绍如何对 PD、TiKV、TiDB、TiProxy、TiFlash、TiCDC 进行垂直扩缩容。

- 如果要对 PD、TiKV、TiDB、TiProxy 进行垂直扩缩容,通过 kubectl 修改集群所对应的 `TidbCluster` 对象的 `spec.pd.resources`、`spec.tikv.resources`、`spec.tidb.resources` 至期望值。
- 如果要对 PD、TiKV、TiDB、TiProxy 进行垂直扩缩容,通过 kubectl 修改集群所对应的 `TidbCluster` 对象的 `spec.pd.resources`、`spec.tikv.resources`、`spec.tidb.resources`、`spec.tiproxy.replicas` 至期望值。

- 如果要对 TiFlash 进行垂直扩缩容,修改 `spec.tiflash.resources` 至期望值。

Expand All @@ -179,6 +179,46 @@ watch kubectl -n ${namespace} get pod -o wide
> - 如果在垂直扩容时修改了资源的 `requests` 字段,并且 PD、TiKV、TiFlash 使用了 `Local PV`,那升级后 Pod 还会调度回原节点,如果原节点资源不够,则会导致 Pod 一直处于 `Pending` 状态而影响服务。
> - TiDB 是一个可水平扩展的数据库,推荐通过增加节点个数发挥 TiDB 集群可水平扩展的优势,而不是类似传统数据库升级节点硬件配置来实现垂直扩容。

### 扩缩容 PD 微服务组件

> **注意:**
>
> PD 从 v8.0.0 版本开始支持[微服务模式](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(实验特性)。

PD 微服务通常用于解决 PD 出现性能瓶颈的问题,提高 PD 服务质量。可通过 [PD 微服务常见问题](https://docs.pingcap.com/zh/tidb/dev/pd-microservices#常见问题)判断是否需要进行 PD 微服务扩缩容操作。

- 目前,PD 微服务模式可将 PD 的时间戳分配和集群调度功能拆分为 `tso` 微服务和 `scheduling` 微服务单独部署。
- `tso` 微服务为主备架构,如遇到瓶颈建议采用垂直扩缩容。
- `scheduling` 微服务为调度组件,如遇到瓶颈建议采用水平扩缩容。

- 如果要对 PD 微服务各个组件进行垂直扩缩容,可以使用 `kubectl` 命令修改集群所对应的 `TidbCluster` 对象的 `spec.pdms.resources` 至期望值。

- 如果要对 PD 微服务各个组件进行水平扩缩容,可以使用 `kubectl` 命令修改集群所对应的 `TidbCluster` 对象的 `spec.pdms.replicas` 至期望值。

以下步骤以 `scheduling` 微服务为例说明如何进行水平扩缩容:

1. 按需修改 `TidbCluster` 对象的 `replicas` 值。例如,执行以下命令可将 `scheduling` 的 `replicas` 值设置为 `3`:

```shell
kubectl patch -n ${namespace} tc ${cluster_name} --type merge --patch '{"spec":{"pdms":{"name":"scheduling", "replicas":3}}}'
```

2. 查看 Kubernetes 集群中对应的 TiDB 集群配置是否已对应更新:

```shell
kubectl get tidbcluster ${cluster_name} -n ${namespace} -oyaml
```

上述命令输出的 `TidbCluster` 中,`spec.pdms` 的 `scheduling.replicas` 值预期应与你之前配置的值一致。

3. 观察 `TidbCluster` Pod 是否新增或者减少:

```shell
watch kubectl -n ${namespace} get pod -o wide
```

PD 微服务组件通常需要 10 到 30 秒左右的时间完成扩容或者缩容。

## 扩缩容故障诊断

无论是水平扩缩容、或者是垂直扩缩容,都可能遇到资源不够时造成 Pod 出现 Pending 的情况。可以参考 [Pod 处于 Pending 状态](deploy-failures.md#pod-处于-pending-状态)来进行处理。
无论是水平扩缩容、或者是垂直扩缩容,都可能遇到资源不够时造成 Pod 出现 Pending 的情况。可以参考 [Pod 处于 Pending 状态](deploy-failures.md#pod-处于-pending-状态)来进行处理。
4 changes: 4 additions & 0 deletions zh/suspend-tidb-cluster.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,10 @@ summary: 了解如何通过配置挂起 Kubernetes 上的 TiDB 集群。
* TiProxy
* PD

> **注意:**
>
> 如果集群中部署了 [PD 微服务](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(从 TiDB v8.0.0 版本开始支持),PD 微服务组件的 Pod 会在删除 PD 之后被删除。

## 恢复 TiDB 集群

在 TiDB 集群或组件被挂起后,如果你需要恢复 TiDB 集群,执行以下步骤:
Expand Down
4 changes: 4 additions & 0 deletions zh/upgrade-a-tidb-cluster.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ Kubernetes 提供了[滚动更新功能](https://kubernetes.io/docs/tutorials/ku

使用滚动更新时,TiDB Operator 会按 PD、TiProxy、TiFlash、TiKV、TiDB 的顺序,串行地删除旧版本的 Pod,并创建新版本的 Pod。当新版本的 Pod 正常运行后,再处理下一个 Pod。

> **注意:**
>
> 当集群中部署了 [PD 微服务](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(从 TiDB v8.0.0 版本开始支持)时,如果采用滚动更新来升级 TiDB 集群,TiDB Operator 会按照 PD 各个微服务组件、PD、TiKV、TiDB 的顺序,串行地删除旧版本的 Pod 并创建新版本的 Pod。当新版本的 Pod 正常运行后,再处理下一个 Pod。

滚动更新中,TiDB Operator 会自动处理 PD 和 TiKV 的 Leader 迁移。因此,在多节点的部署拓扑下(最小环境:PD \* 3、TiKV \* 3、TiDB \* 2),滚动更新 TiKV、PD 不会影响业务正常运行。对于有连接重试功能的客户端,滚动更新 TiDB 同样不会影响业务。

> **警告:**
Expand Down
Loading