欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

TiDB学习笔记---离线部署ansible

程序员文章站 2022-07-13 10:02:45
...

1、在中控机上安装系统依赖包

以 root 用户登录中控机

如果中控机是 CentOS 7 系统,执行以下命令:

# yum -y install epel-release git curl sshpass
# yum -y install python-pip

2、在中控机上创建 tidb 用户,并生成 ssh key

以 root 用户登录中控机,执行以下命令

# 创建 tidb 用户
useradd -m -d /home/tidb tidb
# 设置 tidb 用户密码
passwd tidb

配置 tidb 用户 sudo 免密码,将 tidb ALL=(ALL) NOPASSWD: ALL 添加到文件末尾即可。

visudo
---------------
tidb ALL=(ALL) NOPASSWD: ALL
----------------
# 生成 ssh key: 执行 su 命令从 root 用户切换到 tidb 用户下。
su - tidb
# 创建 tidb 用户 ssh key, 提示 Enter passphrase 时直接回车即可。执行成功后,ssh 私钥文件为 /home/tidb/.ssh/id_rsa, ssh 公钥文件为 /home/tidb/.ssh/id_rsa.pub。
ssh-****** -t rsa

3、在中控机器上下载 TiDB-Ansible

以 tidb 用户登录中控机并进入 /home/tidb 目录。以下为 tidb-ansible 分支与 TiDB 版本对应关系,版本选择可以咨询官方。
下载release2.1版本,安装ansible版本为ansible 2.6.14
目前 release-2.0、release-2.1 及 master 版本兼容 Ansible 2.4 及 Ansible 2.5 版)是否需要换2.0

cd /home/tidb
$ git clone -b release-2.1 https://github.com/pingcap/tidb-ansible.git
# 安装
cd /home/tidb/tidb-ansible
sudo pip install -r ./requirements.txt
ansible --version

4、在中控机上配置部署机器 ssh 互信及 sudo 规则

以 tidb 用户登录中控机,将你的部署目标机器 IP 添加到 hosts.ini 文件 [servers] 区块下。

cd /home/tidb/tidb-ansible
vi hosts.ini
-----------------
[servers]
172.16.10.1
172.16.10.2
172.16.10.3
172.16.10.4
172.16.10.5
172.16.10.6

[all:vars]
username = tidb
ntp_server = pool.ntp.org

执行以下命令,按提示输入部署目标机器 root 用户密码。该步骤将在部署目标机器上创建 tidb 用户,并配置 sudo 规则,配置中控机与部署目标机器之间的 ssh 互信。

ansible-playbook -i hosts.ini create_users.yml -u root -k

5、在部署目标机器上安装 NTP 服务

如果你的部署目标机器时间、时区设置一致,已开启 NTP 服务且在正常同步时间,此步骤可忽略。(可先检测NTP服务是否正确https://pingcap.com/docs-cn/op-guide/ansible-deployment/#%E5%A6%82%E4%BD%95%E6%A3%80%E6%B5%8B-ntp-%E6%9C%8D%E5%8A%A1%E6%98%AF%E5%90%A6%E6%AD%A3%E5%B8%B8)
该步骤将在部署目标机器上使用系统自带软件源联网安装并启动 NTP 服务,服务使用安装包默认的 NTP server 列表,见配置文件 /etc/ntp.conf 中 server 参数,如果使用默认的 NTP server,你的机器需要连接外网(什么意思)。 为了让 NTP 尽快开始同步,启动 NTP 服务前,系统会 ntpdate hosts.ini 文件中的 ntp_server 一次,默认为 pool.ntp.org,也可替换为你的 NTP server。
以 tidb 用户登录中控机,执行以下命令

cd /home/tidb/tidb-ansible
ansible-playbook -i hosts.ini deploy_ntp.yml -u tidb -b

6、在部署目标机器上配置 CPUfreq 调节器模式

为了让 CPU 发挥最大性能,请将 CPUfreq 调节器模式设置为 performance 模式。
你可以通过 cpupower 命令查看系统支持的调节器模式:

# cpupower frequency-info --governors
analyzing CPU 0:
  available cpufreq governors: performance powersave

本例中系统支持设置 performance 和 powersave 模式。如果返回 “Not Available”,表示当前系统不支持配置 CPUfreq,跳过该步骤即可。

# cpupower frequency-info --governors
analyzing CPU 0:
  available cpufreq governors: Not Available

你可以通过 cpupower 命令查看系统当前的 CPUfreq 调节器模式:

# cpupower frequency-info --policy
analyzing CPU 0:
  current policy: frequency should be within 1.20 GHz and 3.20 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.

本例中当前配置是 powersave 模式,你可以通过以下命令设置为 performance 模式。

cpupower frequency-set --governor performance

你也可以通过以下命令在部署目标机器上批量设置:

$ ansible -i hosts.ini all -m shell -a "cpupower frequency-set --governor performance" -u tidb -b

7、在部署目标机器上添加数据盘 ext4 文件系统挂载参数

部署目标机器数据盘请格式化成 ext4 文件系统,挂载时请添加 nodelalloc 和 noatime 挂载参数。nodelalloc 是必选参数,否则 Ansible 安装时检测无法通过,noatime 是可选建议参数。

# 如果你的数据盘已经格式化成 ext4 并挂载,可先执行 umount 命令卸载,从编辑 /etc/fstab 文件步骤开始执行,添加挂载参数重新挂载即可。
umount /dev/nvme0n1

下面以 /dev/nvme0n1 数据盘为例:

# 查看数据盘
fdisk -l
----------
Disk /dev/nvme0n1: 1000 GB
----------
# 创建分区表
parted -s -a optimal /dev/nvme0n1 mklabel gpt -- mkpart primary ext4 1 -1
# 格式化文件系统
mkfs.ext4 /dev/nvme0n1
# 查看数据盘分区 UUID,本例中 nvme0n1 的 UUID 为 c51eb23b-195c-4061-92a9-3fad812cc12f。
lsblk -f
----------------可能出现
NAME    FSTYPE LABEL UUID                                 MOUNTPOINT
sda
├─sda1  ext4         237b634b-a565-477b-8371-6dff0c41f5ab /boot
├─sda2  swap         f414c5c0-f823-4bb1-8fdf-e531173a72ed
└─sda3  ext4         547909c1-398d-4696-94c6-03e43e317b60 /
sr0
nvme0n1 ext4         c51eb23b-195c-4061-92a9-3fad812cc12f
----------------------------
# 编辑 /etc/fstab 文件,添加 nodelalloc 挂载参数
vi /etc/fstab
---------------
UUID=c51eb23b-195c-4061-92a9-3fad812cc12f /data1 ext4 defaults,nodelalloc,noatime 0 2
-----------------
# 挂载数据盘
mkdir /data1
mount -a

执行以下命令,如果文件系统为 ext4,并且挂载参数中包含 nodelalloc 表示生效:

mount -t ext4
---------------
# mount -t ext4
/dev/nvme0n1 on /data1 type ext4 (rw,noatime,nodelalloc,data=ordered)
------------------------

8、分配机器资源,编辑 inventory.ini 文件

以 tidb 用户登录中控机,inventory.ini 文件路径为 /home/tidb/tidb-ansible/inventory.ini。
注: 请使用内网 IP 来部署集群,如果部署目标机器 SSH 端口非默认 22 端口,需添加 ansible_port 变量,如: TiDB1 ansible_host=172.16.10.1 ansible_port=5555