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

1、在下载机上安装系统依赖包并传到中控机上

(1)下载机上安装ansible
# 下载机上安装 Ansible,确认是 Ansible 2.5.0 版本,否则会有兼容问题
# 安装系统依赖包
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 查看版本
# 安装 Ansible
tar -xzvf ansible-2.5.0-pip.tar.gz
cd ansible-2.5.0-pip/
chmod u+x install_ansible.sh
./install_ansible.sh
# ansible --version查看版本
(2)下载机上下载 tidb-ansible
git clone -b release-2.0 https://github.com/pingcap/tidb-ansible.git
# 执行 local_prepare.yml playbook,联网下载 TiDB binary 到下载机
cd tidb-ansible
ansible-playbook local_prepare.yml
(3)将执行完以上命令之后的 tidb-ansible 文件夹拷贝到中控机 /home/tidb 目录下,文件属主权限需是 tidb 用户。
(4)中控机上安装ansible,方法同(1)中下载机上安装ansible的步骤。

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

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

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

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

sudo 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-keygen -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

你可能感兴趣的:(平台搭建)