作者: Chenqi 原文来源:https://tidb.net/blog/0cacc3df
TiDB 集群部署
在单机上模拟部署生产环境集群
1. 准备环境
准备一台部署主机,确保其软件满足需求:
1.1 最小规模的 TiDB 集群拓扑规划
| 实例 | 个数 | IP | 配置 || ——- | – | —————————————– | ———————————————————— || PD | 1 | 192.168.0.131 | 默认端口 || TiKV | 3 | 192.168.0.131 192.168.0.131 192.168.0.131 | 避免端口和目录冲突 || TiDB | 1 | 192.168.0.131 | 默认端口 || TiFlash | 1 | 192.168.0.131 | 默认端口 (这里不配置 TiFlash 实例) || Monitor | 1 | 192.168.0.131 | Grafana:3003 (默认 3000)、 Prometheus:9099(默认 9090),默认端口 Ambari 已占用 |
1.2 部署主机软件和环境要求配置
根据 TiDB 软硬件环境配置建议优化系统配置,可直接执行脚本进行初始化硬件环境:
$ cat initTiDB.sh
#!/bin/bash
close_swap() {
echo "检测及关闭系统 swap"
sudo echo "vm.swappiness = 0" >> /etc/sysctl.conf
swapoff -a && swapon -a
sysctl -p
echo "系统 swap 已关闭"
}
close_firewall() {
echo "关闭及检测目标部署机器的防火墙"
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
sudo systemctl status firewalld.service
echo "目标部署机器的防火墙已关闭"
}
ntp_service() {
#read -p "Please input a ntp_server_ip:" ntp_server_ip
#sudo systemctl stop ntpd.service
#sudo ntpdate ${ntp_server_ip}
sudo systemctl restart ntpd.service
sudo systemctl enable ntpd.service
echo "检查ntp服务器的连通性"
ntpq -p
}
csop() {
echo "配置系统优化参数..."
echo "查看当前操作系统的 tuned 策略"
tuned-adm list
echo "创建新的 tuned 策略"
mkdir /etc/tuned/balanced-tidb-optimal/
touch /etc/tuned/balanced-tidb-optimal/tuned.conf
echo "[main]" > /etc/tuned/balanced-tidb-optimal/tuned.conf
echo "include=balanced" >> /etc/tuned/balanced-tidb-optimal/tuned.conf
echo "[cpu]" >> /etc/tuned/balanced-tidb-optimal/tuned.conf
echo "governor=performance" >> /etc/tuned/balanced-tidb-optimal/tuned.conf
echo "[vm]" >> /etc/tuned/balanced-tidb-optimal/tuned.conf
echo "transparent_hugepages=never" >> /etc/tuned/balanced-tidb-optimal/tuned.conf
echo "[disk]" >> /etc/tuned/balanced-tidb-optimal/tuned.conf
echo "elevator=noop" >> /etc/tuned/balanced-tidb-optimal/tuned.conf
echo "新的 tuned 策略创建完成. 查看请执行 cat /etc/tuned/balanced-tidb-optimal/tuned.conf"
echo "应用新的 tuned 策略"
tuned-adm profile balanced-tidb-optimal
echo "验证透明大页的状态: 是否为never"
cat /sys/kernel/mm/transparent_hugepage/enabled
echo "验证数据目录所在磁盘的 I/O 调度器:是否为noop "
cat /sys/block/sd[bc]/queue/scheduler
echo "查看 cpufreq 模块选用的节能策略: performance模式"
cpupower frequency-info --policy
echo "如果是虚拟机或者云主机,则不需要调整,命令输出通常为 Unable to determine current policy"
echo "配置系统参数优化完成..."
}
modify_sysctl() {
echo "修改 sysctl 参数..."
echo "fs.file-max = 1000000">> /etc/sysctl.conf
echo "net.core.somaxconn = 32768">> /etc/sysctl.conf
echo "net.ipv4.tcp_tw_recycle = 0">> /etc/sysctl.conf
echo "net.ipv4.tcp_syncookies = 0">> /etc/sysctl.conf
echo "vm.overcommit_memory = 1">> /etc/sysctl.conf
echo "执行 sysctl -p 命令在不重启的情况下使配置生效"
sysctl -p
echo "修改 sysctl 参数完成..."
}
limits_conf() {
echo "配置用户的 limits.conf 文件"
echo "tidb soft nofile 1000000" >>/etc/security/limits.conf
echo "tidb hard nofile 1000000" >>/etc/security/limits.conf
echo "tidb soft stack 32768" >>/etc/security/limits.conf
echo "tidb hard stack 32768" >>/etc/security/limits.conf
echo "limits.conf 文件配置完成"
}
useradd_tidb() {
echo "增加tidb用户"
sudo useradd tidb
sudo sh -c 'echo "tidb ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers'
echo "password"
sleep 6
sudo passwd tidb
}
echo "TiDB 环境与系统配置检查开始..."
echo "1.close_swap Start"
close_swap
echo "close_swap End"
echo " "
echo "2.close_firewall Start"
close_firewall
echo "close_firewall End"
echo " "
echo "3.ntp_service Start"
ntp_service
echo "ntp_service End"
echo " "
echo "4.csop Start"
csop
echo "csop End"
echo " "
echo "5.modify_sysctl Start"
modify_sysctl
echo "modify_sysctl End"
echo " "
echo "6.limits_conf Start"
limits_conf
echo "limits_conf End"
echo " "
echo "7.useradd_tidb Start"
useradd_tidb
echo "useradd_tidb End"
echo " "
echo "TiDB 环境与系统配置检查完成......"
复制代码
2. 实施部署
2.1 部署管理工具 TiUP
修改 /etc/ssh/sshd_config
将 MaxSessions
调至 20。
cat /etc/ssh/sshd_config | grep MaxSessions
sudo vim /etc/ssh/sshd_config
# 查找 MaxSessions 并修改数量 ,默认是10 ,我个人修改为 30 了
:/MaxSessions # vim ESC模式下查找关键词
复制代码
2.2 创建并启动集群
提前规划:
集群名称:tidbsingle
TiDB 版本:v5.0.0
,可以通过 tiup list tidb
命令来查看当前支持部署的 TiDB 版本
TiDB 部署空间:该规模集群初始化时会占用21.1G
左右磁盘空间,需要有基础保障。
按照拓扑文件配置模板创建topo.yaml
配置文件:
执行部署前检查 (check)集群存在的潜在风险:
执行部署前自动修复 (check –apply)集群存在的潜在风险:
上边两个步骤出现的一些潜在风险,在测试集群中可以不处理!
值得一提的是:上面的检查会出现不支持麒麟系统的提示,可以不用管,官方人员说可以支持麒麟和鲲鹏系统,实验也是支持的。
执行集群部署命令:
按照引导来完成部署。
第一次初始化启动会提示数据库root
用户的初始密码;之后每次集群启动就不需要指定 --init
。
# 集群启动
tiup cluster start tidbsingle
复制代码
2.3 访问集群
2.4 管理集群
执行以下命令确认当前已经部署的集群列表:
执行以下命令查看集群的拓扑结构和状态:
执行以下命令停止集群:
执行以下命令销毁集群(数据全丢,注意执行条件):
评论