一: 环境要求
Linux 操作系统版本要求
| Linux 操作系统平台 |
版本 |
| Red Hat Enterprise Linux |
7.3 及以上 |
| CentOS |
7.3 及以上 |
| Oracle Enterprise Linux |
7.3 及以上 |
| Ubuntu LTS |
16.04 及以上 |
二: 部署大概流程:
1): 准备一台中控机(连接外网,此机功能 类似 类似发布每台的server端,同时所有的一些下载包在此主机下。)
2):因为tidb 需要mysql client 调用,所以,中控机可以 部署一个MySQL 服务任务。
3):因为tidb 自带Grafana 平台展示功能,因此可使用中控机替代,在 参数inventory.ini 下编辑,当然也可使用 另外一台服务器。
4):中控机需要安装 必须的依赖包: git curl pip 及sshpass python2-pip 及ansible 软件。
5) :所有节点需要安装ntp 服务。
6):所有节点需要配置ssh 等效性验证(这一步可以自己做,也可以通过tidb 命令部署)
7) :关闭firewalled, selinux 服务。
8): tidb, pd,tikv 各自可配置调优文件,在其对应的目录下。
三:TiDB 环境准备。
3.1 准备机器:
- 下载机一台(中控机)
-
- 该机器需开放外网访问,用于下载 TiDB Ansible、TiDB 及相关软件安装包。
- 推荐安装 CentOS 7.3 及以上版本 Linux 操作系统。
- 部署目标机器若干及部署中控机一台
-
- 系统要求及配置参考准备机器。
- 可以无法访问外网。
在中控机上安装系统依赖包
3. TiDB 集群软件各节点。
4. 此次测试机器清单:
################
[tidb@tikv3-500 conf]$ cat /etc/hosts
127.0.0.1 tikv1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
###### TiDB #######
10.0.77.5 tikv1-500.com
10.0.77.6 tikv2-500.com
10.0.77.10 tikv3-500.com
10.0.77.11 tidb1-500.com
10.0.25.5 tidb2-500.com
10.0.25.6 tidb-cluster.monitor (中控机 && Grafana && MySQL 调用客户端)
192.168.41.22 pd1-500.com
192.168.41.27 pd2-500.com
192.168.41.13 pd3-500.com
##################
3.2 服务器建议配置
TiDB 支持部署和运行在 Intel x86-64 架构的 64 位通用硬件服务器平台。对于开发,测试,及生产环境的服务器硬件配置有以下要求和建议:
开发及测试环境
| 组件 |
CPU |
内存 |
本地存储 |
网络 |
实例数量(最低要求) |
| TiDB |
8核+ |
16 GB+ |
无特殊要求 |
千兆网卡 |
1(可与 PD 同机器) |
| PD |
4核+ |
8 GB+ |
SAS, 200 GB+ |
千兆网卡 |
1(可与 TiDB 同机器) |
| TiKV |
8核+ |
32 GB+ |
SSD, 200 GB+ |
千兆网卡 |
3 |
注意:
- 验证测试环境中的 TiDB 和 PD 可以部署在同一台服务器上。
- 如进行性能相关的测试,避免采用低性能存储和网络硬件配置,防止对测试结果的正确性产生干扰。
- 如果仅验证功能,建议使用 Docker Compose 部署方案单机进行测试。
- TiDB 对于磁盘的使用以存放日志为主,因此在测试环境中对于磁盘类型和容量并无特殊要求。
生产环境
| 组件 |
CPU |
内存 |
硬盘类型 |
网络 |
实例数量 (最低要求) |
| TiDB |
16核+ |
32 GB+ |
SAS |
万兆网卡(2块最佳) |
2 |
| PD |
4核+ |
8 GB+ |
SSD |
万兆网卡(2块最佳) |
3 |
| TiKV |
16核+ |
32 GB+ |
SSD |
万兆网卡(2块最佳) |
3 |
| 监控 (中控) |
8核+ |
16 GB+ |
SAS |
千兆网卡 |
1 |
注意:
- 生产环境中的 TiDB 和 PD 可以部署和运行在同服务器上,如对性能和可靠性有更高的要求,应尽可能分开部署。
- 生产环境强烈推荐使用更高的配置。
- TiKV 硬盘大小配置建议 PCI-E SSD 不超过 2 TB,普通 SSD 不超过 1.5 TB
3.3 网络要求
TiDB 作为开源分布式 NewSQL 数据库,其正常运行需要网络环境提供如下的网络端口配置要求,管理员可根据实际环境中 TiDB 组件部署的方案,在网络侧和主机侧开放相关端口:
| 组件 |
默认端口 |
说明 |
| TiDB |
4000 |
应用及 DBA 工具访问通信端口 |
| TiDB |
10080 |
TiDB 状态信息上报通信端口 |
| TiKV |
20160 |
TiKV 通信端口 |
| PD |
2379 |
提供 TiDB 和 PD 通信端口 |
| PD |
2380 |
PD 集群节点间通信端口 |
| Pump |
8250 |
Pump 通信端口 |
| Drainer |
8249 |
Drainer 通信端口 |
| Prometheus |
9090 |
Prometheus 服务通信端口 |
| Pushgateway |
9091 |
TiDB,TiKV,PD 监控聚合和上报端口 |
| Node_exporter |
9100 |
TiDB 集群每个节点的系统信息上报通信端口 |
| Blackbox_exporter |
9115 |
Blackbox_exporter 通信端口,用于 TiDB 集群端口监控 |
| Grafana |
3000 |
Web 监控服务对外服务和客户端(浏览器)访问端口 |
| Grafana |
8686 |
grafana_collector 通信端口,用于将 Dashboard 导出为 PDF 格式 |
| Kafka_exporter |
9308 |
Kafka_exporter 通信端口,用于监控 binlog kafka 集群 |
3.4 TiDB Cluster 简介
TiDB Server
TiDB Server 负责接收 SQL 请求,处理 SQL 相关的逻辑,并通过 PD 找到存储计算所需数据的 TiKV 地址,与 TiKV 交互获取数据,最终返回结果。TiDB Server 是无状态的,其本身并不存储数据,只负责计算,可以无限水平扩展,可以通过负载均衡组件(如LVS、HAProxy 或 F5)对外提供统一的接入地址。
PD Server
Placement Driver (简称 PD) 是整个集群的管理模块,其主要工作有三个:一是存储集群的元信息(某个 Key 存储在哪个 TiKV 节点);二是对 TiKV 集群进行调度和负载均衡(如数据的迁移、Raft group leader 的迁移等);三是分配全局唯一且递增的事务 ID。
PD 通过 Raft 协议保证数据的安全性。Raft 的 leader server 负责处理所有操作,其余的 PD server 仅用于保证高可用。建议部署奇数个 PD 节点。
TiKV Server
TiKV Server 负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。存储数据的基本单位是 Region,每个 Region 负责存储一个 Key Range(从 StartKey 到 EndKey 的左闭右开区间)的数据,每个 TiKV 节点会负责多个 Region。TiKV 使用 Raft 协议做复制,保持数据的一致性和容灾。副本以 Region 为单位进行管理,不同节点上的多个 Region 构成一个 Raft Group,互为副本。数据在多个 TiKV 之间的负载均衡由 PD 调度,这里也是以 Region 为单位进行调度。
TiSpark
TiSpark 作为 TiDB 中解决用户复杂 OLAP 需求的主要组件,将 Spark SQL 直接运行在 TiDB 存储层上,同时融合 TiKV 分布式集群的优势,并融入大数据社区生态。至此,TiDB 可以通过一套系统,同时支持 OLTP 与 OLAP,免除用户数据同步的烦恼。
TiDB Operator
TiDB Operator 提供在主流云基础设施(Kubernetes)上部署管理 TiDB 集群的能力。它结合云原生社区的容器编排最佳实践与 TiDB 的专业运维知识,集成一键部署、多集群混部、自动运维、故障自愈等能力,极大地降低了用户使用和管理 TiDB 的门槛与成本。
3.5 开始部署
下载系统依赖离线安装包,上传至中控机。该离线包仅支持 CentOS 7 系统,包含 pip 及 sshpass。
-- 改地址为官方 链接地址。
或者直接 yum install :(在线方式)
# yum install epel-release git curl sshpass
# yum install python2-pip
# yum install ansible
# yum install git*
中控机下操作:
3.5.1 安装离线ansible 系统包:
# tar -xzvf ansible-system-rpms.el7.tar.gz
# cd ansible-system-rpms.el7
# chmod u+x install_ansible_system_rpms.sh
# ./install_ansible_system_rpms.sh
安装后可通过 pip -V 验证是否安装成功:
[root@tidb-cluster ~]# pip -V
pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7) ## 成功
ps : 如果系统已经安装了pip ,确保其版本 大于8.12及以上,否则离线安装ansible 有可能碰见兼容问题。
3.5.2 所有Cluster 节点创建 tidb 用户 (也可以是其他用户,但是需要统一)
--所有节点
# useradd -m -d /data/tidb tidb
# passwd tidb
# mkdir -pv /data/tidb/deploy && chown -R tidb:tidb /data
3.5.3 修改系统参数
--中控机 连接外网
cat >> /etc/resolv.conf << EOF
nameserver 192.168.0.188
EOF
--所有节点:
# cat >> /etc/pam.d/login << EOF
session required /lib64/security/pam_limits.so
EOF
--所有节点:
# cat >> /etc/security/limits.conf << EOF
# BEGIN ANSIBLE MANAGED BLOCK
tidb soft nofile 1000000
tidb hard nofile 1000000
tidb soft stack 10240
EOF
--所有节点:
关闭 Selinux 参数:
vim /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
设置后需要重启才能生效
--所有节点:
关闭防火墙:
# systemctl stop firewalld.service && systemctl disable firewalld.service
3.5.4 所有节点配置 NTP 服务:
# yum install ntp ntpdate -y
cat >> /etc/ntp.conf << EOF
##
## ntp server ##
server 192.168.0.188 iburst
EOF
# systemctl restart ntpd.service && systemctl status ntpd.service
3.5.5 手工配置 ssh 互信及 sudo 免密码:
cat >> /etc/sudoers << EOF
# visudo
tidb ALL=(ALL) NOPASSWD: ALL
EOF
执行以下命令,将&nb

本文详细介绍TiDB集群的部署流程,包括环境要求、系统配置、网络设置、Ansible安装及集群部署步骤。同时,提供了常见问题解决方案和运维操作指南。
最低0.47元/天 解锁文章
938

被折叠的 条评论
为什么被折叠?



