在华为 Kylin V10 SP1操作系统,HUAWEI,Kunpeng 920 CPU(4Cores)单机上模拟部署生产环境TiDB集群...
作者:陈麒
原文来源: https://tidb.net/blog/0cacc3df
TiDB 集群部署
在单机上模拟部署生产环境集群
- 适用场景:希望用单台 Linux 服务器,体验 TiDB 最小的完整拓扑的集群,并模拟生产环境下的部署步骤。
1. 准备环境
准备一台部署主机,确保其软件满足需求:
- Linux 类机器:这里采用的是华为
Kylin V10 SP1
操作系统,HUAWEI,Kunpeng 920
CPU(4Cores)
<!---->
- Linux 操作系统开放外网访问,用于下载 TiDB 及相关软件安装包
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已占用 |
拓扑文件配置模板:(
topo.yaml
)global:user: "tidb"ssh_port: 22ssh_type: builtindeploy_dir: "/data/tidb/tidb-deploy"data_dir: "/data/tidb/tidb-data"os: linux # # Monitored variables are applied to all the machines. monitored:node_exporter_port: 9100blackbox_exporter_port: 9115deploy_dir: /data/tidb/tidb-deploy/monitor-9100data_dir: /data/tidb/tidb-data/monitor-9100log_dir: /data/tidb/tidb-deploy/monitor-9100/log server_configs:tidb:log.slow-threshold: 3000tikv:readpool.storage.use-unified-pool: falsereadpool.coprocessor.use-unified-pool: truepd:replication.enable-placement-rules: truereplication.location-labels: ["host"] pd_servers:- host: 192.168.0.131ssh_port: 22name: pd-192.168.0.131-2379client_port: 2379peer_port: 2380deploy_dir: /data/tidb/tidb-deploy/pd-2379data_dir: /data/tidb/tidb-data/pd-2379log_dir: /data/tidb/tidb-deploy/pd-2379/logarch: arm64os: linuxtidb_servers:- host: 192.168.0.131ssh_port: 22port: 4000status_port: 10080deploy_dir: /data/tidb/tidb-deploy/tidb-4000log_dir: /data/tidb/tidb-deploy/tidb-4000/logarch: arm64os: linux tikv_servers:- host: 192.168.0.131ssh_port: 22port: 20160status_port: 20180deploy_dir: /data/tidb/tidb-deploy/tikv-20160data_dir: /data/tidb/tidb-data/tikv-20160log_dir: /data/tidb/tidb-deploy/tikv-20160/logconfig:server.labels:host: logic-host-1arch: arm64os: linux - host: 192.168.0.131ssh_port: 22port: 20161status_port: 20181deploy_dir: /data/tidb/tidb-deploy/tikv-20161data_dir: /data/tidb/tidb-data/tikv-20161log_dir: /data/tidb/tidb-deploy/tikv-20161/logconfig:server.labels:host: logic-host-2arch: arm64os: linux - host: 192.168.0.131ssh_port: 22port: 20162status_port: 20182deploy_dir: /data/tidb/tidb-deploy/tikv-20162data_dir: /data/tidb/tidb-data/tikv-20162log_dir: /data/tidb/tidb-deploy/tikv-20162/logconfig:server.labels:host: logic-host-3arch: arm64os: linux monitoring_servers:- host: 192.168.0.131ssh_port: 22port: 9099deploy_dir: /data/tidb/tidb-deploy/prometheus-9099data_dir: /data/tidb/tidb-data/prometheus-9099log_dir: /data/tidb/tidb-deploy/prometheus-9099/logexternal_alertmanagers: []arch: arm64os: linux grafana_servers:- host: 192.168.0.131ssh_port: 22port: 3003deploy_dir: /data/tidb/tidb-deploy/grafana-3003arch: arm64os: linuxusername: adminpassword: adminanonymous_enable: falseroot_url: ""domain: ""
1.2 部署主机软件和环境要求配置
根据 TiDB 软硬件环境配置建议优化系统配置,可直接执行脚本进行初始化硬件环境:
$ cat initTiDB.sh
#!/bin/bash
close_swap() {echo "检测及关闭系统 swap"sudo echo "vm.swappiness = 0" >> /etc/sysctl.confswapoff -a && swapon -asysctl -pecho "系统 swap 已关闭"
}
close_firewall() {echo "关闭及检测目标部署机器的防火墙"sudo systemctl stop firewalld.servicesudo systemctl disable firewalld.servicesudo systemctl status firewalld.serviceecho "目标部署机器的防火墙已关闭"
}
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.servicesudo systemctl enable ntpd.serviceecho "检查ntp服务器的连通性"ntpq -p
}
csop() {echo "配置系统优化参数..."echo "查看当前操作系统的 tuned 策略"tuned-adm listecho "创建新的 tuned 策略"mkdir /etc/tuned/balanced-tidb-optimal/touch /etc/tuned/balanced-tidb-optimal/tuned.conf
echo "[main]" > /etc/tuned/balanced-tidb-optimal/tuned.confecho "include=balanced" >> /etc/tuned/balanced-tidb-optimal/tuned.confecho "[cpu]" >> /etc/tuned/balanced-tidb-optimal/tuned.confecho "governor=performance" >> /etc/tuned/balanced-tidb-optimal/tuned.confecho "[vm]" >> /etc/tuned/balanced-tidb-optimal/tuned.confecho "transparent_hugepages=never" >> /etc/tuned/balanced-tidb-optimal/tuned.confecho "[disk]" >> /etc/tuned/balanced-tidb-optimal/tuned.confecho "elevator=noop" >> /etc/tuned/balanced-tidb-optimal/tuned.confecho "新的 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 --policyecho "如果是虚拟机或者云主机,则不需要调整,命令输出通常为 Unable to determine current policy"echo "配置系统参数优化完成..."
}
modify_sysctl() {echo "修改 sysctl 参数..."echo "fs.file-max = 1000000">> /etc/sysctl.confecho "net.core.somaxconn = 32768">> /etc/sysctl.confecho "net.ipv4.tcp_tw_recycle = 0">> /etc/sysctl.confecho "net.ipv4.tcp_syncookies = 0">> /etc/sysctl.confecho "vm.overcommit_memory = 1">> /etc/sysctl.confecho "执行 sysctl -p 命令在不重启的情况下使配置生效"sysctl -pecho "修改 sysctl 参数完成..."
}
limits_conf() {echo "配置用户的 limits.conf 文件"echo "tidb soft nofile 1000000" >>/etc/security/limits.confecho "tidb hard nofile 1000000" >>/etc/security/limits.confecho "tidb soft stack 32768" >>/etc/security/limits.confecho "tidb hard stack 32768" >>/etc/security/limits.conf
echo "limits.conf 文件配置完成"
}
useradd_tidb() {echo "增加tidb用户"sudo useradd tidbsudo sh -c 'echo "tidb ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers'echo "password"sleep 6sudo 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
下载并安装 (在线):
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
声明全局环境变量:
source /home/tidb/.bash_profile
安装 TiUP 的 cluster 组件:
tiup cluster tiup update --self && tiup update cluster
注:由于模拟多机部署,需要通过
root
用户调大 sshd 服务的连接数限制:修改
/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
配置文件:su tidb touch topo.yaml
执行部署前检查 (check)集群存在的潜在风险:
tiup cluster check ./topo.yaml --user tidb
执行部署前自动修复 (check --apply)集群存在的潜在风险:
tiup cluster check ./topo.yaml --apply --user tidb
上边两个步骤出现的一些潜在风险,在测试集群中可以不处理!
值得一提的是:上面的检查会出现不支持麒麟系统的提示,可以不用管,官方人员说可以支持麒麟和鲲鹏系统,实验也是支持的。
执行集群部署命令:
tiup cluster deploy tidbsingle v5.0.0 ./topo.yaml --user tidb -p
按照引导来完成部署。
这种模式的集群部署第一次需要执行以下方式进行初始化启动:
tiup cluster start tidbsingle --init # 服务启动超时情况出现的话,先按照提示查看日志文件,根据 welcome 和 error 关键词定位异常;如果是单纯的超时可以多试几次
第一次初始化启动会提示数据库
root
用户的初始密码;之后每次集群启动就不需要指定--init
。# 集群启动 tiup cluster start tidbsingle
2.3 访问集群
MySQL 客户端(黑屏模式)连接,因为
TiDB
兼容MySQL
,这种模式当下流行且方便:mysql -h 192.168.0.131 -P 4000 -u root -p Enter password: 这里输入第一次初始化启动生成的密码!
这里引入 数据库
root
用户的修改:# 使用 mysql 库 use mysql; # select User,Host,authentication_string from mysql.user; # 修改密码为xxxxxxxxxx alter user 'root'@'%' identified by 'password'; # 刷新 flush privileges; # 退出连接 exit
数据库连接应用连接,按照
MySQL
模式进行连接配置:
<!---->
因为这里采用的是云服务器,所以IP不一样是正常情况!
访问 TiDB 的 Grafana 监控:
通过 http://{ip}:3003/login 访问集群 Grafana 监控页面,默认用户名和密码在拓扑文件中设置均为 admin(默认)。
<!---->
访问 TiDB 的 Dashboard:
通过 http://{IP}:2379/dashboard/#/signin 访问集群
TiDB Dashboard
监控页面,默认用户名为root
,密码为数据库密码。
2.4 管理集群
执行以下命令确认当前已经部署的集群列表:
tiup cluster list
执行以下命令查看集群的拓扑结构和状态:
tiup cluster display tidbsingle
执行以下命令停止集群:
tiup cluster stop tidbsingle
执行以下命令销毁集群(数据全丢,注意执行条件):
tiup cluster destroy tidbsingle
在华为 Kylin V10 SP1操作系统,HUAWEI,Kunpeng 920 CPU(4Cores)单机上模拟部署生产环境TiDB集群...相关推荐
- 在华为云 CCE 上部署 EMQX MQTT 服务器集群
云进入以「应用为中心」的云原生阶段,Operator 模式的出现,则为 Kubernetes 中的自动化任务创建配置与管理提供了一套行之有效的标准规范.通过将运维知识固化成高级语言 Go/Java 代 ...
- 银河麒麟桌面操作系统 V10 SP1下Qt应用程序开发环境配置
Kylin V10 SP1软件源中提供的Qt框架版本为5.12.8,qmake对应版本为3.1,Qt Creator对应版本为4.11.0. 一.下载软件包 1.1 安装Qt组件 执行命令来进行Qt组 ...
- Kylin V10系统U盘识别挂载问题
1. 问题描述及原因分析 在使用Kylin V10服务器操作系统时候,需要用U盘拷贝数据,但插入U盘后,能看到U盘的标识,无论如何双击,都无法挂载使用,如下所示: 经研究发现,系统采用Device M ...
- 让数据库无惧灾难,华为云GaussDB同城双集群高可用方案正式发布!
摘要:在华为全联接2021期间,华为云GaussDB(for openGauss)正式推出重大内核新特性--同城双集群高可用方案,提供金融级高可用服务,支持RPO=0 .RTO<60s的同城双集 ...
- 华为自研分布式时序数据库集群:初始GaussDB(for Influx)
前言 随着云计算规模越来越大,以及物联网应用逐渐普及,在物联网(AIoT)以及运维监控(AIOps)领域,存在海量的时序数据需要存储管理.以华为云监控服务(Cloud Eye Service,CES) ...
- 【云驻共创】华为云云原生之Kubernetes网络架构原理深度剖析(上)
文章目录 前言 一.Kubernetes诞生背景 1.云原生的概念 2.云原生架构 3.Kubernetes(k8s) 二.Kubernetes基本网络模型剖析 1.概念厘清 1.1 二层桥接 VS ...
- [新闻]华为高端集群路由器面世
[中国,无锡] 3月14日在江苏无锡举行的集群路由技术研讨会上,华为技术有限公司("华为")展示了Quidway® NetEngine 5000E(以下简称NE5000E)核心路由 ...
- 华为云 UCS GitOps:轻松交付多集群云原生应用
摘要:使用华为云 UCS GitOps 配置管理来交付您的多云应用. 本文分享自华为云社区<华为云 UCS GitOps:轻松交付多集群云原生应用>,作者:华为云云原生团队. 随着业务的全 ...
- 麒麟桌面操作系统V10 SP1 桌面操作系统软件商店无法打开
系统环境: 麒麟V10 SP1 桌面操作系统 问题描述 在更新软件商店的过程中,重启了系统,重新打开软件商店,提示正在启动软件商店后,再无任何反应 原因分析: 打开终端,通过命令行启动软件商店 kyl ...
最新文章
- 软件开发管理规范流程图
- 理解并取证:DHCP的工作原理、怎么检测IP地址冲突
- 【Mysql】win10上Mysq的l安装
- 关于bn层的进一步认识
- html写一个赌马游戏,趣味赛马(在线网页游戏)
- 怎么访问二级服务器未响应,windows+访问服务器未响应
- 38. 重定向与负载均衡
- .net反射调用值类型引用参数时的处理办法(转)
- 结合 TreeMap 源码分析红黑树在 java 中的实现
- python安装包的路径
- 指纹考勤机使用的基本操作方法
- 【iPod转换精灵V10.2 官方最新版】强大的视频转换功能
- 草料二维码 批量生成二维码
- JS 截取视频某一帧图片 实现视频截图
- WPF Behavior 行为
- 转:学会正念沟通,领导力再也不是玄学
- 计算机主板供电,主板供电/元器件
- 针对正方教务开发大学App(查成绩,课表,一键评教,图书馆,正方系统)
- 单点自平衡立方体相当于有几个自由度?自平衡自行车有几个自由度?独轮车有几个自由度?
- 你所不了解的DevOps
热门文章
- 个人小程序支持哪些小程序服务类目
- 2021年森林督查暨森林资源管理“一张图”更新工作方案
- C++常见面试题总结
- 百度云-人工智能-识别图片中的文字
- python第三方库集锦
- DNS服务器可能不可用 win11解决方法
- 联想服务器显示系统初始化,[转载]联想服务器系统设置(一)
- 字符流的相关概念和相关方法的使用、IO异常的处理以及Properties属性集
- 防劫持工具,介绍几款浏览器劫持修复工具
- 很遗憾未能成功连接服务器神武,神武十年《见证》逍遥游戏里的超级学霸 最希望被别人抄“作业”...