|
| 1 | +--- |
| 2 | +title: tiup cluster check |
| 3 | +aliases: ['/docs-cn/dev/tiup/tiup-component-cluster-check/'] |
| 4 | +--- |
| 5 | + |
| 6 | +# tiup cluster check |
| 7 | + |
| 8 | +对于严肃的生产环境,在正式上线之前需要进行一系列检查,来确保集群拥有最好的表现,为了简化人工检查的步骤,tiup-cluster 提供了 `check` 子命令,该命令用于检查指定集群的机器硬件和软件环境是否满足正常运行条件。 |
| 9 | + |
| 10 | +## 检查项列表 |
| 11 | + |
| 12 | +### 操作系统版本 |
| 13 | + |
| 14 | +检查部署机操作系统发行版和版本:目前仅支持部署在 CentOS 7 的操作系统上,之后随兼容性改进可能增加更多系统版本。 |
| 15 | + |
| 16 | +### CPU EPOLLEXCLUSIVE |
| 17 | + |
| 18 | +检查部署机 CPU 是否支持 EPOLLEXCLUSIVE。 |
| 19 | + |
| 20 | +### numactl |
| 21 | + |
| 22 | +检查部署机是否安装 numactl,若用户配置绑核,则必须安装 numactl。 |
| 23 | + |
| 24 | +### 系统时间 |
| 25 | + |
| 26 | +检查部署机系统时间是否同步:将部署机系统时间与中控机对比,偏差超出某一阈值后报错。 |
| 27 | + |
| 28 | +### 时间同步服务 |
| 29 | + |
| 30 | +检查部署机是否配置了时间同步服务:即 ntpd 是否在运行 |
| 31 | + |
| 32 | +### Swap 分区 |
| 33 | + |
| 34 | +检查部署机是否启用 Swap 分区:建议禁用 Swap 分区 |
| 35 | + |
| 36 | +### 内核参数 |
| 37 | + |
| 38 | +检查各项内核参数的值: |
| 39 | + |
| 40 | +- net.ipv4.tcp_tw_recycle: 0 |
| 41 | +- net.ipv4.tcp_syncookies: 0 |
| 42 | +- net.core.somaxconn: 32768 |
| 43 | +- vm.swappiness: 0 |
| 44 | +- vm.overcommit_memory: 0 or 1 |
| 45 | +- fs.file-max: 1000000 |
| 46 | + |
| 47 | +### THP(透明大页) |
| 48 | + |
| 49 | +检查部署机是否启用透明大页:建议禁用透明大页。 |
| 50 | + |
| 51 | +### 系统 Limits |
| 52 | + |
| 53 | +检查 /etc/security/limits.conf 中各项 limit 值: |
| 54 | + |
| 55 | +``` |
| 56 | +<deploy-user> soft nofile 1000000 |
| 57 | +<deploy-user> hard nofile 1000000 |
| 58 | +<deploy-user> soft stack 10240 |
| 59 | +``` |
| 60 | + |
| 61 | +其中 `<deploy-user>` 为部署、运行 TiDB 集群的用户,最后一列的数值为要求达到的最小值。 |
| 62 | + |
| 63 | +### SELinux |
| 64 | + |
| 65 | +检查 SELinux 是否启用:建议用户禁用 SELinux。 |
| 66 | + |
| 67 | +### 防火墙 |
| 68 | + |
| 69 | +检查 FirewallD 服务是否启用:建议用户禁用 FirewallD 或为 TiDB 集群各服务添加允许规则。 |
| 70 | + |
| 71 | +### irqbalance |
| 72 | + |
| 73 | +检查 irqbalance 服务是否启用:建议用户启用 irqbalance 服务。 |
| 74 | + |
| 75 | +### 磁盘挂载参数 |
| 76 | + |
| 77 | +检查 ext4 分区的挂载参数:确保挂载参数包含 nodelalloc,noatime 选项。 |
| 78 | + |
| 79 | +### 端口占用 |
| 80 | + |
| 81 | +检查部署机上是否已有进程占用了端口:检查拓扑中定义的端口(包括自动补全的默认端口)在部署机上是否已被占用。 |
| 82 | + |
| 83 | +> **注意:** |
| 84 | +> |
| 85 | +> 端口占用检查假设集群尚未启动,如果检查的是已经部署并启动的集群,那么端口占用检查一定会失败,因为端口确实被占用了。 |
| 86 | +
|
| 87 | +### CPU 核心数 |
| 88 | + |
| 89 | +检查部署机 CPU 信息:建议生产级群 CPU 逻辑核心数 >= 16 |
| 90 | + |
| 91 | +> **注意:** |
| 92 | +> |
| 93 | +> 默认不检查 CPU 核心数,需要通过选项 `--enable-cpu` 启用。 |
| 94 | +
|
| 95 | +### 内存大小 |
| 96 | + |
| 97 | +检查部署机的内存大小:建议生产集群总内存容量 >= 32Gb。 |
| 98 | + |
| 99 | +> **注意:** |
| 100 | +> |
| 101 | +> 默认不检查内存大小,需要通过选项 `--enable-mem` 启用。 |
| 102 | +
|
| 103 | +### fio 磁盘性能测试 |
| 104 | + |
| 105 | +使用 fio 测试 data_dir 所在磁盘的性能,包括三个测试项目: |
| 106 | + |
| 107 | +- fio_randread_write_latency |
| 108 | +- fio_randread_write |
| 109 | +- fio_randread |
| 110 | + |
| 111 | +> **注意:** |
| 112 | +> |
| 113 | +> 默认不进行 fio 磁盘性能测试,需要通过选项 `--enable-disk` 启用。 |
| 114 | +
|
| 115 | +## 语法 |
| 116 | + |
| 117 | +```sh |
| 118 | +tiup cluster check <topology.yml | cluster-name> [flags] |
| 119 | +``` |
| 120 | + |
| 121 | +若集群尚未部署,需要传递将用于部署集群的 [tompology.yml](/tiup/tiup-cluster-topology-reference.md) 文件,tiup-cluster 会根据该文件的内容连接到对应机器去检查。若集群已经部署,则可以使用集群的名字 `<cluster-name>` 作为检查对象。 |
| 122 | + |
| 123 | +> **注意:** |
| 124 | +> |
| 125 | +> 若传递的是集群名字,则需要配合 `--cluster` 选项使用。 |
| 126 | +
|
| 127 | +## 选项 |
| 128 | + |
| 129 | +### --apply(boolean,默认 false) |
| 130 | + |
| 131 | +尝试自动修复失败的检查项,目前仅会尝试修复以下项目: |
| 132 | + |
| 133 | +- SELinux |
| 134 | +- 防火墙 |
| 135 | +- irqbalance |
| 136 | +- 内核参数 |
| 137 | +- 系统 Limits |
| 138 | +- THP(透明大页) |
| 139 | + |
| 140 | +### --cluster(boolean,默认 false) |
| 141 | + |
| 142 | +tiup-cluster 支持对未部署的集群进行检查,也支持对已部署的集群进行检查,命令格式: |
| 143 | + |
| 144 | +```sh |
| 145 | +tiup cluster check <topology.yml | cluster-name> [flags] |
| 146 | +``` |
| 147 | + |
| 148 | +若选择的格式为 `tiup cluster check <cluster-name>` 则必须加上该选项:`tiup cluster check <cluster-name> --cluster`。 |
| 149 | + |
| 150 | +### --enable-cpu(boolean,默认 false) |
| 151 | + |
| 152 | +默认情况下 tiup-cluster 不检查 CPU 核心数,该选项用于启用 CPU 核心数检查。 |
| 153 | + |
| 154 | +### --enable-disk(boolean,默认 false) |
| 155 | + |
| 156 | +默认情况下 tiup-cluster 不进行 fio 磁盘性能测试,该选项用于启用 fio 磁盘性能测试。 |
| 157 | + |
| 158 | +### --enable-mem |
| 159 | + |
| 160 | +默认情况下 tiup-cluster 不检查内存大小,该选项用于启用内存大小检查。 |
| 161 | + |
| 162 | +### -u, --user(string,默认为当前执行命令的用户) |
| 163 | + |
| 164 | +指定连接目标机器的用户名,该用户在目标机器上需要有免密 sudo root 的权限。 |
| 165 | + |
| 166 | +> **注意:** |
| 167 | +> |
| 168 | +> 仅当 `--cluster` 选项为 false 时该选项有效,否则该值固定为部署集群时拓扑文件中指定的用户名。 |
| 169 | +
|
| 170 | +### -i, --identity_file(string,默认 ~/.ssh/id_rsa) |
| 171 | + |
| 172 | +指定连接目标机器的密钥文件。 |
| 173 | + |
| 174 | +> **注意:** |
| 175 | +> |
| 176 | +> 仅当 `--cluster` 选项为 false 时该选项有效,否则该值固定为 `${TIUP_HOME}/storage/cluster/clusters/<cluster-name>/ssh/id_rsa` |
| 177 | +
|
| 178 | +### -p, --password(boolean,默认 false) |
| 179 | + |
| 180 | +在连接目标机器时使用密码登陆: |
| 181 | +- 对于指定了 `--cluster` 的集群,密码为部署集群时拓扑文件中指定的用户的密码 |
| 182 | +- 对于未指定 `--cluster` 的集群,密码为 `-u/--user` 参数指定的用户的密码 |
| 183 | + |
| 184 | +### --help(boolean,默认 false) |
| 185 | + |
| 186 | +输出帮助信息。 |
| 187 | + |
| 188 | +## 输出 |
| 189 | + |
| 190 | +输出含有以下字段的表格: |
| 191 | + |
| 192 | +- Node:目标节点 |
| 193 | +- Check:检查项 |
| 194 | +- Result:检查结果(Pass/Warn/Fail) |
| 195 | +- Message:结果描述 |
0 commit comments