From d9ddd9425a76defb1f9bd93c522cecd27f832001 Mon Sep 17 00:00:00 2001 From: Louis Date: Wed, 13 Jun 2018 14:01:07 +0800 Subject: [PATCH 01/11] ansible-deployment: adjust operation sequence --- op-guide/ansible-deployment.md | 225 +++++++++++++++++---------------- 1 file changed, 119 insertions(+), 106 deletions(-) diff --git a/op-guide/ansible-deployment.md b/op-guide/ansible-deployment.md index 58ec097bb4d1..2067714eafd0 100644 --- a/op-guide/ansible-deployment.md +++ b/op-guide/ansible-deployment.md @@ -12,11 +12,13 @@ Ansible 是一款自动化运维工具,[TiDB-Ansible](https://github.com/pingc 本部署工具可以通过配置文件设置集群拓扑,一键完成以下各项运维工作: - 初始化操作系统参数 -- 部署组件 -- 滚动升级,滚动升级时支持模块存活检测 -- 数据清理 -- 环境清理 -- 配置监控模块 +- 部署 TiDB 组件 +- 部署监控组件 +- 升级组件版本 +- 变更组件配置 +- 集群扩容缩容 +- 清除集群数据 +- 销毁集群 ## 准备机器 @@ -24,9 +26,8 @@ Ansible 是一款自动化运维工具,[TiDB-Ansible](https://github.com/pingc - 建议 4 台及以上,TiKV 至少 3 实例,且与 TiDB、PD 模块不位于同一主机,详见[部署建议](recommendation.md)。 - 推荐安装 CentOS 7.3 及以上版本 Linux 操作系统,x86_64 架构(amd64),数据盘请使用 ext4 文件系统,挂载 ext4 文件系统时请添加 nodelalloc 挂载参数,可参考[数据盘 ext4 文件系统挂载参数](#数据盘-ext4-文件系统挂载参数)。 - - 机器之间内网互通,防火墙如 iptables 等请在部署时关闭。 + - 机器之间内网互通。 - 机器的时间、时区设置一致,开启 NTP 服务且在正常同步时间,可参考[如何检测 NTP 服务是否正常](#如何检测-ntp-服务是否正常)。 - - 创建 `tidb` 普通用户作为程序运行用户,tidb 用户可以免密码 sudo 到 root 用户,可参考[如何配置 ssh 互信及 sudo 免密码](#如何配置-ssh-互信及-sudo-免密码)。 > **注:使用 Ansible 方式部署时,TiKV 及 PD 节点数据目录所在磁盘请使用 SSD 磁盘,否则无法通过检测。** 如果仅验证功能,建议使用 [Docker Compose 部署方案](docker-compose.md)单机进行测试。 @@ -35,16 +36,84 @@ Ansible 是一款自动化运维工具,[TiDB-Ansible](https://github.com/pingc - 中控机可以是部署目标机器中的某一台。 - 推荐安装 CentOS 7.3 及以上版本 Linux 操作系统(默认包含 Python 2.7)。 - 该机器需开放外网访问,用于下载 TiDB 及相关软件安装包。 - - 配置 ssh authorized_key 互信,在中控机上可以使用 `tidb` 用户免密码 ssh 登录到部署目标机器,可参考[如何配置 ssh 互信及 sudo 免密码](#如何配置-ssh-互信及-sudo-免密码)。 + +## 在中控机上安装系统依赖包 + +以 `root` 用户登录中控机 + +如果中控机是 CentOS 7 系统,执行以下命令: + +``` +# yum -y install epel-release git curl sshpass +# yum -y install python-pip +``` + +如果是中控机是 Ubuntu 系统,执行以下命令: + +``` +# apt-get install git curl sshpass python-pip +``` + +## 在中控机上创建 tidb 用户,并生成 ssh key + +以 `root` 用户登录中控机, 执行以下命令 + +创建 `tidb` 用户 + +``` +# useradd tidb +``` + +设置 `tidb` 用户密码 + +``` +# passwd tidb +``` + +配置 `tidb` 用户 sudo 规则,将 `tidb ALL=(ALL) NOPASSWD: ALL` 添加到文件末尾即可。 + +``` +# visudo +tidb ALL=(ALL) NOPASSWD: ALL +``` + +`su` 命令从 `root` 用户切换到 `tidb` 用户,创建 `tidb` 用户 ssh key, 提示 `Enter passphrase` 时直接回车即可,执行成功后,ssh 私钥文件为 `/home/tidb/.ssh/id_rsa`, ssh 公钥文件为 `/home/tidb/.ssh/id_rsa.pub`。 + +``` +# su - tidb +$ ssh-keygen -t rsa +Generating public/private rsa key pair. +Enter file in which to save the key (/home/tidb/.ssh/id_rsa): +Created directory '/home/tidb/.ssh'. +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /home/tidb/.ssh/id_rsa. +Your public key has been saved in /home/tidb/.ssh/id_rsa.pub. +The key fingerprint is: +SHA256:eIBykszR1KyECA/h0d7PRKz4fhAeli7IrVphhte7/So tidb@172.16.10.49 +The key's randomart image is: ++---[RSA 2048]----+ +|=+o+.o. | +|o=o+o.oo | +| .O.=.= | +| . B.B + | +|o B * B S | +| * + * + | +| o + . | +| o E+ . | +|o ..+o. | ++----[SHA256]-----+ +``` ## 在中控机器上下载 TiDB-Ansible -以 `tidb` 用户登录中控机并进入 `/home/tidb` 目录,使用以下命令从 Github [TiDB-Ansible 项目](https://github.com/pingcap/tidb-ansible) 上下载 TiDB-Ansible 相应版本,默认的文件夹名称为 `tidb-ansible`,以下为各版本下载示例,版本选择可以咨询官方。 +以 `tidb` 用户登录中控机并进入 `/home/tidb` 目录。 + +使用以下命令从 Github [TiDB-Ansible 项目](https://github.com/pingcap/tidb-ansible) 上下载 TiDB-Ansible 相应版本,默认的文件夹名称为 `tidb-ansible`,以下为各版本下载示例,版本选择可以咨询官方。 下载 2.0 GA 版本: ``` -$ sudo yum -y install git $ git clone -b release-2.0 https://github.com/pingcap/tidb-ansible.git ``` @@ -53,28 +122,60 @@ $ git clone -b release-2.0 https://github.com/pingcap/tidb-ansible.git 下载 master 版本: ``` -$ sudo yum -y install git $ git clone https://github.com/pingcap/tidb-ansible.git ``` ## 在中控机器上安装 Ansible 及其依赖 -请按以下方式在 CentOS 7 系统的中控机上通过 pip 安装 Ansible 及其相关依赖的指定版本,安装完成后,可通过 `ansible --version` 查看 Ansible 版本。目前 release-1.0 版本依赖 Ansible 2.4,release-2.0 及 master 版本兼容 Ansible 2.4 及 Ansible 2.5 版本,Ansible 及相关依赖版本记录在 `tidb-ansible/requirements.txt` 文件中,请按以下方式安装,否则会有兼容问题。 +以 `tidb` 用户登录中控机, 按以下方式在中控机上通过 pip 安装 Ansible 及其相关依赖的指定版本,安装完成后,可通过 `ansible --version` 查看 Ansible 版本。目前 release-2.0 及 master 版本兼容 Ansible 2.4 及 Ansible 2.5 版本,Ansible 及相关依赖版本记录在 `tidb-ansible/requirements.txt` 文件中,请务必按以下方式安装,否则会有兼容问题。 ```bash - $ sudo yum -y install epel-release - $ sudo yum -y install python-pip curl - $ cd tidb-ansible + $ cd /home/tidb/tidb-ansible $ sudo pip install -r ./requirements.txt $ ansible --version ansible 2.5.0 ``` -> 其他系统可参考 [如何安装 Ansible](#如何安装-ansible)。 +## 在中控机上配置部署机器 ssh 互信及 sudo 规则 + +以 `tidb` 用户登录中控机, 将你的部署目标机器 IP 添加到 `hosts.ini` 文件 `[servers]` 区块下。 + +``` +$ cd /home/tidb/tidb-ansible +$ vi hosts.ini +[servers] +192.168.0.2 +192.168.0.3 +192.168.0.4 +192.168.0.5 +192.168.0.6 +192.168.0.7 +192.168.0.8 +192.168.0.10 + +[all:vars] +username = tidb +ntp_server = pool.ntp.org +``` + +执行以下命令,按提示输入部署目标机器 `root` 用户密码。该步骤将在部署目标机器上创建 `tidb` 用户,并配置 sudo 规则,配置中控机与部署目标机器之间的 ssh 互信。 + +``` +$ ansible-playbook -i hosts.ini create_users.yml -k +``` + +## 在部署目标机器上安装 NTP 服务 + +以 `tidb` 用户登录中控机,执行以下命令,按提示输入部署目标机器 root 密码。该步骤将在部署目标机器上安装 NTP 服务,服务使用安装包默认的 NTP server 列表,见配置文件 `/etc/ntp.conf` 中 server 参数。在启动 NTP 服务前,系统会 ntpdate `hosts.ini` 文件 中 `ntp_server`,默认为 `pool.ntp.org`,也可替换为你的 NTP server。 + +``` +$ cd /home/tidb/tidb-ansible +$ ansible-playbook -i hosts.ini deploy_ntp.yml -k +``` ## 分配机器资源,编辑 inventory.ini 文件 -inventory.ini 文件路径为 `tidb-ansible/inventory.ini`。 +以 `tidb` 用户登录中控机, `inventory.ini` 文件路径为 `/home/tidb/tidb-ansible/inventory.ini`。 > **注:** 请使用内网 IP 来部署集群。 @@ -172,8 +273,6 @@ TiKV3-2 ansible_host=172.16.10.6 deploy_dir=/data2/deploy tikv_port=20172 labels 172.16.10.5 172.16.10.6 -...... - [pd_servers:vars] location_labels = ["host"] ``` @@ -451,6 +550,7 @@ synchronised to NTP server (85.199.214.101) at stratum 2 time correct to within 91 ms polling server every 1024 s ``` + > **注:** Ubuntu 系统请安装 ntpstat 软件包。 以下情况表示 NTP 服务未正常同步: @@ -474,29 +574,6 @@ $ sudo ntpdate pool.ntp.org $ sudo systemctl start ntpd.service ``` -#### 如何使用 Ansible 部署 NTP 服务 - -参照[在中控机器上下载 TiDB-Ansible](#在中控机器上下载-tidb-ansible)下载 TiDB-Ansible,将你的部署目标机器 IP 添加到 `[servers]` 区块下,`ntp_server` 变量的值 `pool.ntp.org` 可替换为其他 NTP server,在启动 NTP 服务前,系统会 ntpdate 该 NTP server,Ansible 安装的 NTP 服务使用安装包默认 server 列表,见配置文件 `cat /etc/ntp.conf` 中 server 参数。 - -``` -$ vi hosts.ini -[servers] -172.16.10.49 -172.16.10.50 -172.16.10.61 -172.16.10.62 - -[all:vars] -username = tidb -ntp_server = pool.ntp.org -``` - -执行以下命令,按提示输入部署目标机器 root 密码。 - -``` -$ ansible-playbook -i hosts.ini deploy_ntp.yml -k -``` - #### 如何手工安装 NTP 服务 在 CentOS 7 系统上执行以下命令: @@ -521,16 +598,6 @@ ansible-playbook deploy.yml -D ansible-playbook start.yml ``` -### 如何安装 Ansible - -如果是 CentOS 系统,直接按文章开头的方式安装即可,如果是 Ubuntu 系统,可按以下方式安装: - -```bash -$ sudo apt-get install python-pip curl -$ cd tidb-ansible -$ sudo pip install -r ./requirements.txt -``` - ### 数据盘 ext4 文件系统挂载参数 数据盘请格式化成 ext4 文件系统,挂载时请添加 nodelalloc 和 noatime 挂载参数。 @@ -557,60 +624,6 @@ nodelalloc 是必选参数,否则 Ansible 安装时检测无法通过,noatim /dev/nvme0n1 on /data1 type ext4 (rw,noatime,nodelalloc,data=ordered) ``` -### 如何配置 ssh 互信及 sudo 免密码 - -#### 在中控机上创建 tidb 用户,并生成 ssh key。 -``` -# useradd tidb -# passwd tidb -# su - tidb -$ -$ ssh-keygen -t rsa -Generating public/private rsa key pair. -Enter file in which to save the key (/home/tidb/.ssh/id_rsa): -Created directory '/home/tidb/.ssh'. -Enter passphrase (empty for no passphrase): -Enter same passphrase again: -Your identification has been saved in /home/tidb/.ssh/id_rsa. -Your public key has been saved in /home/tidb/.ssh/id_rsa.pub. -The key fingerprint is: -SHA256:eIBykszR1KyECA/h0d7PRKz4fhAeli7IrVphhte7/So tidb@172.16.10.49 -The key's randomart image is: -+---[RSA 2048]----+ -|=+o+.o. | -|o=o+o.oo | -| .O.=.= | -| . B.B + | -|o B * B S | -| * + * + | -| o + . | -| o E+ . | -|o ..+o. | -+----[SHA256]-----+ -``` - -#### 如何使用 Ansible 自动配置 ssh 互信及 sudo 免密码 - -参照[在中控机器上下载 TiDB-Ansible](#在中控机器上下载-tidb-ansible)下载 TiDB-Ansible,将你的部署目标机器 IP 添加到 `[servers]` 区块下。 - -``` -$ vi hosts.ini -[servers] -172.16.10.49 -172.16.10.50 -172.16.10.61 -172.16.10.62 - -[all:vars] -username = tidb -``` - -执行以下命令,按提示输入部署目标机器 root 密码。 - -``` -$ ansible-playbook -i hosts.ini create_users.yml -k -``` - #### 如何手工配置 ssh 互信及 sudo 免密码 以 `root` 用户依次登录到部署目标机器创建 `tidb` 用户并设置登录密码。 From 52b57144e8d95093d943ee350001de35f0496f9f Mon Sep 17 00:00:00 2001 From: Louis Date: Wed, 13 Jun 2018 17:26:55 +0800 Subject: [PATCH 02/11] ansible-deployment: add filesystem checking step --- op-guide/ansible-deployment.md | 129 ++++++++++++++++++++------------- 1 file changed, 78 insertions(+), 51 deletions(-) diff --git a/op-guide/ansible-deployment.md b/op-guide/ansible-deployment.md index 2067714eafd0..15d67e56421a 100644 --- a/op-guide/ansible-deployment.md +++ b/op-guide/ansible-deployment.md @@ -7,13 +7,12 @@ category: deployment ## 概述 -Ansible 是一款自动化运维工具,[TiDB-Ansible](https://github.com/pingcap/tidb-ansible) 是 PingCAP 基于 Ansible playbook 功能编写的集群部署工具。使用 TiDB-Ansible 可以快速部署一个完整的 TiDB 集群(包括 PD、TiDB、TiKV 和集群监控模块)。 +Ansible 是一款自动化运维工具,[TiDB-Ansible](https://github.com/pingcap/tidb-ansible) 是 PingCAP 基于 Ansible playbook 功能编写的集群部署工具。使用 TiDB-Ansible 可以快速部署一个完整的 TiDB 集群。 本部署工具可以通过配置文件设置集群拓扑,一键完成以下各项运维工作: - 初始化操作系统参数 -- 部署 TiDB 组件 -- 部署监控组件 +- 部署 TiDB 集群(包括 PD、TiDB、TiKV 等组件和监控组件) - 升级组件版本 - 变更组件配置 - 集群扩容缩容 @@ -25,9 +24,8 @@ Ansible 是一款自动化运维工具,[TiDB-Ansible](https://github.com/pingc 1. 部署目标机器若干 - 建议 4 台及以上,TiKV 至少 3 实例,且与 TiDB、PD 模块不位于同一主机,详见[部署建议](recommendation.md)。 - - 推荐安装 CentOS 7.3 及以上版本 Linux 操作系统,x86_64 架构(amd64),数据盘请使用 ext4 文件系统,挂载 ext4 文件系统时请添加 nodelalloc 挂载参数,可参考[数据盘 ext4 文件系统挂载参数](#数据盘-ext4-文件系统挂载参数)。 + - 推荐安装 CentOS 7.3 及以上版本 Linux 操作系统,x86_64 架构(amd64)。 - 机器之间内网互通。 - - 机器的时间、时区设置一致,开启 NTP 服务且在正常同步时间,可参考[如何检测 NTP 服务是否正常](#如何检测-ntp-服务是否正常)。 > **注:使用 Ansible 方式部署时,TiKV 及 PD 节点数据目录所在磁盘请使用 SSD 磁盘,否则无法通过检测。** 如果仅验证功能,建议使用 [Docker Compose 部署方案](docker-compose.md)单机进行测试。 @@ -51,7 +49,7 @@ Ansible 是一款自动化运维工具,[TiDB-Ansible](https://github.com/pingc 如果是中控机是 Ubuntu 系统,执行以下命令: ``` -# apt-get install git curl sshpass python-pip +# apt-get -y install git curl sshpass python-pip ``` ## 在中控机上创建 tidb 用户,并生成 ssh key @@ -70,14 +68,14 @@ Ansible 是一款自动化运维工具,[TiDB-Ansible](https://github.com/pingc # passwd tidb ``` -配置 `tidb` 用户 sudo 规则,将 `tidb ALL=(ALL) NOPASSWD: ALL` 添加到文件末尾即可。 +配置 `tidb` 用户 sudo 免密码,将 `tidb ALL=(ALL) NOPASSWD: ALL` 添加到文件末尾即可。 ``` # visudo tidb ALL=(ALL) NOPASSWD: ALL ``` -`su` 命令从 `root` 用户切换到 `tidb` 用户,创建 `tidb` 用户 ssh key, 提示 `Enter passphrase` 时直接回车即可,执行成功后,ssh 私钥文件为 `/home/tidb/.ssh/id_rsa`, ssh 公钥文件为 `/home/tidb/.ssh/id_rsa.pub`。 +生成 ssh key: 执行 `su` 命令从 `root` 用户切换到 `tidb` 用户下,创建 `tidb` 用户 ssh key, 提示 `Enter passphrase` 时直接回车即可。执行成功后,ssh 私钥文件为 `/home/tidb/.ssh/id_rsa`, ssh 公钥文件为 `/home/tidb/.ssh/id_rsa.pub`。 ``` # su - tidb @@ -127,7 +125,7 @@ $ git clone https://github.com/pingcap/tidb-ansible.git ## 在中控机器上安装 Ansible 及其依赖 -以 `tidb` 用户登录中控机, 按以下方式在中控机上通过 pip 安装 Ansible 及其相关依赖的指定版本,安装完成后,可通过 `ansible --version` 查看 Ansible 版本。目前 release-2.0 及 master 版本兼容 Ansible 2.4 及 Ansible 2.5 版本,Ansible 及相关依赖版本记录在 `tidb-ansible/requirements.txt` 文件中,请务必按以下方式安装,否则会有兼容问题。 +以 `tidb` 用户登录中控机, 请务必按以下方式通过 pip 安装 Ansible 及其相关依赖的指定版本,否则会有兼容问题。安装完成后,可通过 `ansible --version` 查看 Ansible 版本。目前 release-2.0 及 master 版本兼容 Ansible 2.4 及 Ansible 2.5 版本,Ansible 及相关依赖版本记录在 `tidb-ansible/requirements.txt` 文件中。 ```bash $ cd /home/tidb/tidb-ansible @@ -173,6 +171,71 @@ $ cd /home/tidb/tidb-ansible $ ansible-playbook -i hosts.ini deploy_ntp.yml -k ``` +## 在部署目标机器上添加数据盘 ext4 文件系统挂载参数 + +部署目标机器数据盘请格式化成 ext4 文件系统,挂载时请添加 nodelalloc 和 noatime 挂载参数。`nodelalloc` 是必选参数,否则 Ansible 安装时检测无法通过,noatime 是可选建议参数。 + +下面以 /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 +/dev/nvme0n1 on /data1 type ext4 (rw,noatime,nodelalloc,data=ordered) +``` + +> 如果你的数据盘已经格式化成 ext4 并挂载, 可按以下步骤卸载,从编辑 `/etc/fstab` 文件步骤开始执行即可。 + + ``` + # umount /dev/nvme0n1 + ``` + ## 分配机器资源,编辑 inventory.ini 文件 以 `tidb` 用户登录中控机, `inventory.ini` 文件路径为 `/home/tidb/tidb-ansible/inventory.ini`。 @@ -385,7 +448,7 @@ TiKV1-1 ansible_host=172.16.10.4 deploy_dir=/data1/deploy >**注意**:Grafana Dashboard 上的 Report 按钮可用来生成 PDF 文件,此功能依赖 `fontconfig` 包。如需使用该功能,登录 grafana_servers 机器,用以下命令安装: > > ``` - > $ sudo yum install fontconfig + > $ sudo yum install fontconfig open-sans-fonts > ``` 5. 启动 TiDB 集群 @@ -559,6 +622,7 @@ synchronised to NTP server (85.199.214.101) at stratum 2 $ ntpstat unsynchronised ``` + 以下情况表示 NTP 服务未正常运行: ``` @@ -598,33 +662,7 @@ ansible-playbook deploy.yml -D ansible-playbook start.yml ``` -### 数据盘 ext4 文件系统挂载参数 - -数据盘请格式化成 ext4 文件系统,挂载时请添加 nodelalloc 和 noatime 挂载参数。 -nodelalloc 是必选参数,否则 Ansible 安装时检测无法通过,noatime 是可选建议参数。下面以 /dev/nvme0n1 数据盘为例: - -编辑 `/etc/fstab` 文件,添加 `nodelalloc` 挂载参数: - -``` -# vi /etc/fstab -/dev/nvme0n1 /data1 ext4 defaults,nodelalloc,noatime 0 2 -``` - -使用以下命令 umount 挂载目录并重新挂载: - -``` -# umount /data1 -# mount -a -``` - -通过以下命令确认是否生效: - -``` -# mount -t ext4 -/dev/nvme0n1 on /data1 type ext4 (rw,noatime,nodelalloc,data=ordered) -``` - -#### 如何手工配置 ssh 互信及 sudo 免密码 +### 如何手工配置 ssh 互信及 sudo 免密码 以 `root` 用户依次登录到部署目标机器创建 `tidb` 用户并设置登录密码。 @@ -646,7 +684,6 @@ tidb ALL=(ALL) NOPASSWD: ALL [tidb@172.16.10.49 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.10.61 ``` -#### 验证 ssh 互信及 sudo 免密码 以 `tidb` 用户登录到中控机,ssh 登录目标机器 IP,不需要输入密码并登录成功,表示 ssh 互信配置成功。 ``` @@ -662,14 +699,11 @@ tidb ALL=(ALL) NOPASSWD: ALL ``` ### You need to install jmespath prior to running json_query filter 报错 -请参照 [在中控机器上安装 Ansible 及其依赖](#在中控机器上安装-ansible-及其依赖) 在中控机上通过 pip 安装 Ansible 及相关依赖的指定版本,默认已安装 `jmespath`。 +请参照 [在中控机器上安装 Ansible 及其依赖](#在中控机器上安装-ansible-及其依赖) 在中控机上通过 pip 安装 Ansible 及相关依赖的指定版本,默认会安装 `jmespath`。 -CentOS 7 系统可通过以下命令单独安装 `jmespath`: +可通过以下命令验证 `jmespath` 是否安装成功: ``` -$ sudo yum -y install epel-release -$ sudo yum -y install python-pip -$ sudo pip install jmespath $ pip show jmespath Name: jmespath Version: 0.9.0 @@ -685,14 +719,7 @@ Type "help", "copyright", "credits" or "license" for more information. >>> import jmespath ``` -Ubuntu 系统可使用以下命令单独安装 `jmespath`: - -``` -$ sudo apt-get install python-pip -$ sudo pip install jmespath -``` - -#### 启动 Pump/Drainer 报 `zk: node does not exist` 错误 +### 启动 Pump/Drainer 报 `zk: node does not exist` 错误 请检查 `inventory.ini` 里的 `zookeeper_addrs` 参数配置与 Kafka 集群内的配置是否相同、是否填写了命名空间。关于命名空间的配置说明如下: From 3689de92130656a4429541719f44284b21433ecd Mon Sep 17 00:00:00 2001 From: Louis Date: Thu, 14 Jun 2018 16:25:43 +0800 Subject: [PATCH 03/11] add ansible-deployment-rolling-update.md --- op-guide/ansible-deployment-rolling-update.md | 109 +++++++++++++++ op-guide/ansible-deployment.md | 129 ++++-------------- op-guide/offline-ansible-deployment.md | 79 ++++++----- op-guide/recommendation.md | 23 ++-- 4 files changed, 197 insertions(+), 143 deletions(-) create mode 100644 op-guide/ansible-deployment-rolling-update.md diff --git a/op-guide/ansible-deployment-rolling-update.md b/op-guide/ansible-deployment-rolling-update.md new file mode 100644 index 000000000000..46af40913c79 --- /dev/null +++ b/op-guide/ansible-deployment-rolling-update.md @@ -0,0 +1,109 @@ +--- +title: 使用 TiDB Ansible 升级 TiDB 集群 +category: deployment +--- + +# 使用 TiDB Ansible 升级 TiDB 集群 + +## 滚动升级 TiDB 集群 + +滚动升级 TiDB 集群时,会串行关闭服务,更新服务 binary 和配置文件,再启动服务。在前端配置负载均衡的情况下,滚动升级期间不影响业务运行(最小环境 :`pd * 3 、tidb * 2、tikv * 3`)。 + +> **注**: +> +> - 如果 TiDB 集群开启了 binlog,部署了 pump 和 drainer 服务,升级 TiDB 服务时会升级 pump,请先停止 drainer 服务再执行滚动升级操作。 + +## 升级组件版本 + +> **注**: +> +> - 从 TiDB 1.0 升级到 TiDB 2.0,请参考[TiDB 2.0 升级操作指南](tidb-v2-upgrade-guide.md)。 + +### 自动下载 binary + +1. 修改 `/home/tidb/tidb-ansible/inventory.ini` 中的 `tidb_version` 参数值,指定需要升级的版本号,本例从 `v2.0.2` 升级到 `v2.0.3` + + ``` + tidb_version = v2.0.3 + ``` + +2. 删除原有的 downloads 目录 `/home/tidb/tidb-ansible/downloads/` + + ``` + $ cd /home/tidb/tidb-ansible + $ rm -rf downloads + ``` + +3. 使用 playbook 下载 TiDB `v2.0.3` 版本 binary,自动替换 binary 到 `/home/tidb/tidb-ansible/resource/bin/` + + ``` + $ ansible-playbook local_prepare.yml + ``` + +### 手动下载 binary + +1. 除 “下载 binary” 中描述的方法之外,也可以手动下载 binary,解压后手动替换 binary 到 `/home/tidb/tidb-ansible/resource/bin/`,请注意替换链接中的版本号 + + ``` + wget http://download.pingcap.org/tidb-v2.0.3-linux-amd64-unportable.tar.gz + ``` + +### 使用 Ansible 滚动升级 + +- 滚动升级 TiKV 节点( 只升级 TiKV 服务 ) + + ``` + $ ansible-playbook rolling_update.yml --tags=tikv + ``` + +- 滚动升级 PD 节点( 只升级单独 PD 服务 ) + + ``` + $ ansible-playbook rolling_update.yml --tags=pd + ``` + +- 滚动升级 TiDB 节点( 只升级单独 TiDB 服务, 如果 TiDB 集群开启了 binlog,升级 TiDB 服务时会升级 pump) + + ``` + $ ansible-playbook rolling_update.yml --tags=tidb + ``` + +- 滚动升级所有服务(依次升级 PD, TiKV, TiDB 服务,如果 TiDB 集群开启了 binlog,升级 TiDB 服务时会升级 pump) + + ``` + $ ansible-playbook rolling_update.yml + ``` + +- 滚动升级监控组件 + + ``` + $ ansible-playbook rolling_update_monitor.yml + ``` + +## 变更组件配置 + +1. 更新组件配置模板 + +TiDB 集群组件配置模板存储在 `/home/tidb/tidb-ansible/conf` 文件夹下。 + +| 组件 | 配置文件模板名 | +| :----------------------- | :----------: | +| TiDB | tidb.yml | +| TiKV | tikv.yml | +| PD | pd.yml | + +默认配置项是注释状态,使用默认值。如果需要修改,需取消注释的 `#`,修改对应参数值。配置模板使用 yaml 格式,注意参数名及参数值之间使用 `:` 分隔,缩进为两个空格。 + +如修改 TiKV 配置中 `high-concurrency`、`normal-concurrency` 和 `low-concurrency` 三个参数为 16: + +``` +readpool: + coprocessor: + # Notice: if CPU_NUM > 8, default thread pool size for coprocessors + # will be set to CPU_NUM * 0.8. + high-concurrency: 16 + normal-concurrency: 16 + low-concurrency: 16 +``` + +2. 修改服务配置后,需使用 Ansible 滚动升级,参考[使用 Ansible 滚动升级](#使用-Ansible-滚动升级)。 diff --git a/op-guide/ansible-deployment.md b/op-guide/ansible-deployment.md index 15d67e56421a..27952ad094d9 100644 --- a/op-guide/ansible-deployment.md +++ b/op-guide/ansible-deployment.md @@ -9,7 +9,7 @@ category: deployment Ansible 是一款自动化运维工具,[TiDB-Ansible](https://github.com/pingcap/tidb-ansible) 是 PingCAP 基于 Ansible playbook 功能编写的集群部署工具。使用 TiDB-Ansible 可以快速部署一个完整的 TiDB 集群。 -本部署工具可以通过配置文件设置集群拓扑,一键完成以下各项运维工作: +本部署工具可以通过配置文件设置集群拓扑,完成以下各项运维工作: - 初始化操作系统参数 - 部署 TiDB 集群(包括 PD、TiDB、TiKV 等组件和监控组件) @@ -17,6 +17,8 @@ Ansible 是一款自动化运维工具,[TiDB-Ansible](https://github.com/pingc - 变更组件配置 - 集群扩容缩容 - 清除集群数据 +- 启动集群 +- 关闭集群 - 销毁集群 ## 准备机器 @@ -164,6 +166,8 @@ $ ansible-playbook -i hosts.ini create_users.yml -k ## 在部署目标机器上安装 NTP 服务 +> 如果你的部署目标机器时间、时区设置一致,已开启 NTP 服务且在正常同步时间,此步骤可忽略。可参考[如何检测 NTP 服务是否正常](#如何检测-ntp-服务是否正常)。 + 以 `tidb` 用户登录中控机,执行以下命令,按提示输入部署目标机器 root 密码。该步骤将在部署目标机器上安装 NTP 服务,服务使用安装包默认的 NTP server 列表,见配置文件 `/etc/ntp.conf` 中 server 参数。在启动 NTP 服务前,系统会 ntpdate `hosts.ini` 文件 中 `ntp_server`,默认为 `pool.ntp.org`,也可替换为你的 NTP server。 ``` @@ -175,6 +179,12 @@ $ ansible-playbook -i hosts.ini deploy_ntp.yml -k 部署目标机器数据盘请格式化成 ext4 文件系统,挂载时请添加 nodelalloc 和 noatime 挂载参数。`nodelalloc` 是必选参数,否则 Ansible 安装时检测无法通过,noatime 是可选建议参数。 +> 如果你的数据盘已经格式化成 ext4 并挂载, 可先执行 `umount` 命令卸载,从编辑 `/etc/fstab` 文件步骤开始执行, 添加挂载参数重新挂载即可。 + + ``` + # umount /dev/nvme0n1 + ``` + 下面以 /dev/nvme0n1 数据盘为例: 查看数据盘 @@ -230,12 +240,6 @@ UUID=c51eb23b-195c-4061-92a9-3fad812cc12f /data1 ext4 defaults,nodelalloc,noatim /dev/nvme0n1 on /data1 type ext4 (rw,noatime,nodelalloc,data=ordered) ``` -> 如果你的数据盘已经格式化成 ext4 并挂载, 可按以下步骤卸载,从编辑 `/etc/fstab` 文件步骤开始执行即可。 - - ``` - # umount /dev/nvme0n1 - ``` - ## 分配机器资源,编辑 inventory.ini 文件 以 `tidb` 用户登录中控机, `inventory.ini` 文件路径为 `/home/tidb/tidb-ansible/inventory.ini`。 @@ -404,6 +408,9 @@ TiKV1-1 ansible_host=172.16.10.4 deploy_dir=/data1/deploy | alertmanager_target | 可选:如果你已单独部署 alertmanager,可配置该变量,格式:alertmanager_host:alertmanager_port | | grafana_admin_user | Grafana 管理员帐号用户名,默认为 admin | | grafana_admin_password | Grafana 管理员帐号密码,默认为 admin,用于 Ansible 导入 Dashboard 和创建 API Key,如后期通过 grafana web 修改了密码,请更新此变量 | +| collect_log_recent_hours | 采集日志时,采集最近几个小时的日志,默认为 2 小时 | +| enable_bandwidth_limit | 在中控机上从部署目标机器拉取诊断数据时,是否限速,默认为 True,与 collect_bandwidth_limit 变量结合使用 | +| collect_bandwidth_limit | 在中控机上从部署目标机器拉取诊断数据时限速多少,单位: Kbit/s,默认 10000,即 10Mb/s,如果是单机多 TiKV 实例部署方式,需除以单机实例个数 | ## 部署任务 @@ -445,7 +452,7 @@ TiKV1-1 ansible_host=172.16.10.4 deploy_dir=/data1/deploy ansible-playbook deploy.yml ``` - >**注意**:Grafana Dashboard 上的 Report 按钮可用来生成 PDF 文件,此功能依赖 `fontconfig` 包。如需使用该功能,登录 grafana_servers 机器,用以下命令安装: + >**注意**:Grafana Dashboard 上的 Report 按钮可用来生成 PDF 文件,此功能依赖 `fontconfig` 包和英文字体。如需使用该功能,登录 grafana_servers 机器,用以下命令安装: > > ``` > $ sudo yum install fontconfig open-sans-fonts @@ -471,105 +478,26 @@ TiKV1-1 ansible_host=172.16.10.4 deploy_dir=/data1/deploy 地址:`http://172.16.10.1:3000` 默认帐号密码是:`admin`/`admin` -## 滚动升级 - -> - 滚动升级 TiDB 服务,滚动升级期间不影响业务运行(最小环境 :`pd*3 、tidb*2、tikv*3`) -> - **如果集群环境中有 pump / drainer 服务,请先停止 drainer 后滚动升级 (升级 TiDB 时会升级 pump)**。 - -### 自动下载 binary - -1. 修改 `inventory.ini` 中的 `tidb_version` 参数值,指定需要升级的版本号,本例指定升级的版本号为 `v1.0.2` - - ``` - tidb_version = v1.0.2 - ``` - -2. 删除原有的 downloads 目录 `tidb-ansible/downloads/` - - ``` - rm -rf downloads - ``` - -3. 使用 playbook 下载 TiDB 1.0 版本 binary,自动替换 binary 到 `tidb-ansible/resource/bin/` - - ``` - ansible-playbook local_prepare.yml - ``` - -### 手动下载 binary - -1. 除 “下载 binary” 中描述的方法之外,也可以手动下载 binary,解压后手动替换 binary 到 `tidb-ansible/resource/bin/`,请注意替换链接中的版本号 - - ``` - wget http://download.pingcap.org/tidb-v1.0.0-linux-amd64-unportable.tar.gz - ``` - -### 使用 Ansible 滚动升级 - -- 滚动升级 TiKV 节点( 只升级 TiKV 服务 ) - - ``` - ansible-playbook rolling_update.yml --tags=tikv - ``` - -- 滚动升级 PD 节点( 只升级单独 PD 服务 ) - - ``` - ansible-playbook rolling_update.yml --tags=pd - ``` - -- 滚动升级 TiDB 节点( 只升级单独 TiDB 服务 ) - - ``` - ansible-playbook rolling_update.yml --tags=tidb - ``` - -- 滚动升级所有服务 - - ``` - ansible-playbook rolling_update.yml - ``` - -## 常见运维操作汇总 - -|任务|Playbook| -|----|--------| -|启动集群|`ansible-playbook start.yml`| -|停止集群|`ansible-playbook stop.yml`| -|销毁集群|`ansible-playbook unsafe_cleanup.yml` (若部署目录为挂载点,会报错,可忽略)| -|清除数据(测试用)|`ansible-playbook unsafe_cleanup_data.yml`| -|滚动升级|`ansible-playbook rolling_update.yml`| -|滚动升级 TiKV|`ansible-playbook rolling_update.yml --tags=tikv`| -|滚动升级除 pd 外模块|`ansible-playbook rolling_update.yml --skip-tags=pd`| -|滚动升级监控组件|`ansible-playbook rolling_update_monitor.yml`| - ## 常见部署问题 -### 如何下载安装指定版本 TiDB -如需安装 TiDB 1.0.4 版本,需要先下载 TiDB-Ansible release-1.0 分支,确认 inventory.ini 文件中 `tidb_version = v1.0.4`,安装步骤同上。 - -从 github 下载 TiDB-Ansible release-1.0 分支: - -``` -git clone -b release-1.0 https://github.com/pingcap/tidb-ansible.git -``` - ### 如何自定义端口 修改 `inventory.ini` 文件,在相应服务 IP 后添加以下主机变量即可: | 组件 | 端口变量 | 默认端口 | 说明 | | :-- | :-- | :-- | :-- | -| TiDB | tidb_port | 4000 | 应用及 DBA 工具访问通信端口 | +| TiDB | tidb_port | 4000 | 应用及 DBA 工具访问通信端口 | | TiDB | tidb_status_port | 10080 | TiDB 状态信息上报通信端口 | | TiKV | tikv_port | 20160 | TiKV 通信端口 | | PD | pd_client_port | 2379 | 提供 TiDB 和 PD 通信端口 | | PD | pd_peer_port | 2380 | PD 集群节点间通信端口 | -| pump | pump_port | 8250 | pump 通信端口 | -| prometheus | prometheus_port | 9090 | Prometheus 服务通信端口 | -| pushgateway | pushgateway_port | 9091 | TiDB, TiKV, PD 监控聚合和上报端口 | -| node_exporter | node_exporter_port | 9100 | TiDB 集群每个节点的系统信息上报通信端口 | -| grafana | grafana_port | 3000 | Web 监控服务对外服务和客户端(浏览器)访问端口 | -| grafana | grafana_collector_port | 8686 | grafana_collector 通信端口,用于将 Dashboard 导出为 PDF 格式 | +| Pump | pump_port | 8250 | Pump 通信端口 | +| Prometheus | prometheus_port | 9090 | Prometheus 服务通信端口 | +| Pushgateway | pushgateway_port | 9091 | TiDB, TiKV, PD 监控聚合和上报端口 | +| Node_exporter | node_exporter_port | 9100 | TiDB 集群每个节点的系统信息上报通信端口 | +| Blackbox_exporter | blackbox_exporter_port | 9115 | Blackbox_exporter 通信端口,用于 TiDB 集群端口监控 | +| Grafana | grafana_port | 3000 | Web 监控服务对外服务和客户端(浏览器)访问端口 | +| Grafana | grafana_collector_port | 8686 | grafana_collector 通信端口,用于将 Dashboard 导出为 PDF 格式 | +| Kafka_exporter | kafka_exporter_port | 9308 | Kafka_exporter 通信端口,用于监控 binlog Kafka 集群 | ### 如何自定义部署目录 @@ -614,7 +542,7 @@ synchronised to NTP server (85.199.214.101) at stratum 2 polling server every 1024 s ``` -> **注:** Ubuntu 系统请安装 ntpstat 软件包。 +> **注:** Ubuntu 系统需安装 ntpstat 软件包。 以下情况表示 NTP 服务未正常同步: @@ -630,7 +558,7 @@ $ ntpstat Unable to talk to NTP daemon. Is it running? ``` -使用以下命令可使 NTP 服务尽快开始同步,pool.ntp.org 可替换为其他 NTP server: +使用以下命令可使 NTP 服务尽快开始同步,pool.ntp.org 可替换为你的 NTP server: ``` $ sudo systemctl stop ntpd.service @@ -638,13 +566,12 @@ $ sudo ntpdate pool.ntp.org $ sudo systemctl start ntpd.service ``` -#### 如何手工安装 NTP 服务 - -在 CentOS 7 系统上执行以下命令: +在 CentOS 7 系统上执行以下命令,可手工安装 NTP 服务: ``` $ sudo yum install ntp ntpdate $ sudo systemctl start ntpd.service +$ sudo systemctl enable ntpd.service ``` ### 如何调整进程监管方式从 supervise 到 systemd diff --git a/op-guide/offline-ansible-deployment.md b/op-guide/offline-ansible-deployment.md index 2084e48da2b7..5e6ce76bb77c 100644 --- a/op-guide/offline-ansible-deployment.md +++ b/op-guide/offline-ansible-deployment.md @@ -17,58 +17,59 @@ category: deployment - 系统要求及配置参考[准备机器](ansible-deployment.md#准备机器)。 - 可以无法访问外网。 -## 在中控机器上离线安装 Ansible 及其依赖 +## 在中控机上安装系统依赖包 -以下是 CentOS 7 系统 Ansible 离线安装方式: +> 下载 [ pip 离线安装包 ](https://download.pingcap.org/pip-rpms.el7.tar.gz), 上传至中控机, 该离线包仅支持 CentOS 7 系统。 -1. 离线安装 pip : - > 下载 [ pip 离线安装包 ](https://download.pingcap.org/pip-rpms.el7.tar.gz), 上传至中控机。 +```bash +# tar -xzvf pip-rpms.el7.tar.gz +# cd pip-rpms.el7 +# chmod u+x install_pip.sh +# ./install_pip.sh +``` - ```bash - # tar -xzvf pip-rpms.el7.tar.gz - # cd pip-rpms.el7 - # chmod u+x install_pip.sh - # ./install_pip.sh - ``` +安装完成后,可通过 `pip -V` 验证 pip 是否安装成功: - 安装完成后,可通过 `pip -V` 验证 pip 是否安装成功: +```bash +# pip -V + pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7) +``` - ```bash - # pip -V - pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7) - ``` +> 如果你的系统已安装 pip, 请确认版本 >= 8.1.2, 否则离线安装 ansible 及其依赖时,会有兼容问题。 - > 如果你的系统已安装 pip, 请确认版本 >= 8.1.2, 否则离线安装 ansible 及其依赖时,会有兼容问题。 +## 在中控机上创建 tidb 用户,并生成 ssh key -2. 离线安装 Ansible 及其依赖: +参考[在中控机上创建 tidb 用户,并生成 ssh key](ansible-deployment.md#在中控机上创建-tidb-用户并生成-ssh-key)即可。 - 目前 release-1.0 版本依赖 Ansible 2.4,release-2.0 及 master 版本兼容 Ansible 2.4 及 Ansible 2.5 版本,Ansible 及相关依赖版本记录在 `tidb-ansible/requirements.txt` 文件中,请下载对应版本离线安装包上传至中控机。 +## 在中控机器上离线安装 Ansible 及其依赖 - > 下载 [Ansible 2.4 离线安装包](https://download.pingcap.org/ansible-2.4.2-pip.tar.gz) +以下是 CentOS 7 系统 Ansible 离线安装方式: - > 下载 [Ansible 2.5 离线安装包](https://download.pingcap.org/ansible-2.5.0-pip.tar.gz) +目前 release-2.0 及 master 版本兼容 Ansible 2.4 及 Ansible 2.5 版本,Ansible 及相关依赖版本记录在 `tidb-ansible/requirements.txt` 文件中,请下载 Ansible 2.5 离线安装包上传至中控机。 - 下面以安装 Ansible 2.5 为例,Ansible 2.4 安装方式与之一致: +> 下载 [Ansible 2.5 离线安装包](https://download.pingcap.org/ansible-2.5.0-pip.tar.gz) - ``` - # tar -xzvf ansible-2.5.0-pip.tar.gz - # cd ansible-2.5.0-pip/ - # chmod install_ansible.sh - # ./install_ansible.sh - ``` +下面以安装 Ansible 2.5 为例: - 安装完成后,可通过 `ansible --version` 查看版本: +``` +# tar -xzvf ansible-2.5.0-pip.tar.gz +# cd ansible-2.5.0-pip/ +# chmod install_ansible.sh +# ./install_ansible.sh +``` - ```bash - # ansible --version - ansible 2.5.0 - ``` +安装完成后,可通过 `ansible --version` 查看版本: + +```bash +# ansible --version + ansible 2.5.0 +``` ## 在下载机上下载 TiDB-Ansible 及 TiDB 安装包 1. 在下载机上安装 Ansible - 请按以下方式在 CentOS 7 系统的下载机上在线安装 Ansible。安装完成后,可通过 `ansible --version` 查看版本,请务必确认是 **Ansible 2.4** 及以上版本,否则会有兼容问题。 + 请按以下方式在 CentOS 7 系统的下载机上在线安装 Ansible。安装完成后,可通过 `ansible --version` 查看版本,请务必确认是 **Ansible 2.5.0** 版本,否则会有兼容问题。 ```bash # yum install epel-release @@ -102,6 +103,18 @@ category: deployment 4. 将执行完以上命令之后的 `tidb-ansible` 文件夹拷贝到中控机 `/home/tidb` 目录下,文件属主权限需是 `tidb` 用户。 +## 在中控机上配置部署机器 ssh 互信及 sudo 规则 + +参考[在中控机上配置部署机器 ssh 互信及 sudo 规则](ansible-deployment.md#在中控机上配置部署机器-ssh-互信及-sudo-规则)即可。 + +## 在部署目标机器上安装 NTP 服务 + +如果你的部署目标机器时间、时区设置一致,已开启 NTP 服务且在正常同步时间,此步骤可忽略,可参考[如何检测 NTP 服务是否正常](#如何检测-ntp-服务是否正常)。 + +## 在部署目标机器上添加数据盘 ext4 文件系统挂载参数 + +参考[在部署目标机器上添加数据盘 ext4 文件系统挂载参数](ansible-deployment.md#https://github.com/LinuxGit/docs-cn/blob/Louis/refine-deployment-docs/op-guide/ansible-deployment.md#在部署目标机器上添加数据盘-ext4-文件系统挂载参数)即可。 + ## 分配机器资源,编辑 inventory.ini 文件 参考[分配机器资源,编辑 inventory.ini 文件](ansible-deployment.md#分配机器资源编辑-inventoryini-文件)即可。 diff --git a/op-guide/recommendation.md b/op-guide/recommendation.md index 69a78fea3902..51af137c3c76 100644 --- a/op-guide/recommendation.md +++ b/op-guide/recommendation.md @@ -21,7 +21,7 @@ TiDB 作为一款开源分布式 NewSQL 数据库,可以很好的部署和运 > **注**: > > - TiDB 只支持 Red Hat 兼容内核 (RHCK) 的 Oracle Enterprise Linux,不支持 Oracle Enterprise Linux 提供的 Unbreakable Enterprise Kernel。 -> - TiDB 对 Linux 操作系统的以上支持包括部署和运行在物理服务器以及 VMware、KVM、XEN 主流虚拟化环境。 +> - 以上 Linux 操作系统可运行在物理服务器以及 VMware、KVM、XEN 主流虚拟化环境上。 ## 服务器要求 @@ -60,19 +60,24 @@ TiDB 支持部署和运行在 Intel x86-64 架构的 64 位通用硬件服务器 ## 网络要求 -TiDB 作为开源分布式 NewSQL 数据库,其正常运行需要网络环境提供如下的网络端口配置要求,管理员可根据实际环境中 TiDB 组件部署的方案,在网络侧和主机侧启用相关端口: +TiDB 作为开源分布式 NewSQL 数据库,其正常运行需要网络环境提供如下的网络端口配置要求,管理员可根据实际环境中 TiDB 组件部署的方案,在网络侧和主机侧开放相关端口: | 组件 | 默认端口 | 说明 | | :-- | :-- | :-- | -| TiDB | 4000 | 应用及 DBA 工具访问通信端口| -| TiDB | 10080 | TiDB 状态信息上报通信端口| -| TiKV | 20160 | TiKV 通信端口 | +| TiDB | 4000 | 应用及 DBA 工具访问通信端口 | +| TiDB | 10080 | TiDB 状态信息上报通信端口 | +| TiKV | 20160 | TiKV 通信端口 | | PD | 2379 | 提供 TiDB 和 PD 通信端口 | -| PD | 2380 | PD 集群节点间通信端口| -| Prometheus | 9090|Prometheus 服务通信端口 | -| Pushgateway | 9091| TiDB, TiKV, PD 监控聚合和上报端口 | -| Node_exporter | 9100| TiDB 集群每个节点的系统信息上报通信端口 | +| 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 集群 | ## 客户端 Web 浏览器要求 From 29d0140d00278ddd9e98b477324e23b038d85746 Mon Sep 17 00:00:00 2001 From: Louis Date: Fri, 15 Jun 2018 00:14:48 +0800 Subject: [PATCH 04/11] op-guide: add ansible-operation.md and ansible-deployment-scale.md --- QUICKSTART.md | 413 ------------------ README.md | 10 +- op-guide/ansible-deployment-rolling-update.md | 10 +- op-guide/ansible-deployment-scale.md | 407 +++++++++++++++++ op-guide/ansible-deployment.md | 14 +- op-guide/ansible-operation.md | 38 ++ op-guide/op-guide.md | 12 +- 7 files changed, 466 insertions(+), 438 deletions(-) create mode 100644 op-guide/ansible-deployment-scale.md create mode 100644 op-guide/ansible-operation.md diff --git a/QUICKSTART.md b/QUICKSTART.md index 3a39dc8a63ad..abf2615decb8 100644 --- a/QUICKSTART.md +++ b/QUICKSTART.md @@ -293,416 +293,3 @@ DROP USER 'tiuser'@'localhost'; 小于 50ms - leader/region : 每个 TiKV 的 leader/region 数量 - -## TiDB 集群扩容缩容方案 - -TiDB 集群可以在不影响线上服务的情况下进行扩容和缩容。以下缩容示例中,被移除的节点没有混合部署其他服务;如果混合部署了其他服务,不能按如下操作。 - -假设拓扑结构如下所示: - -| Name | Host IP | Services | -| ---- | ------- | -------- | -| node1 | 172.16.10.1 | PD1 | -| node2 | 172.16.10.2 | PD2 | -| node3 | 172.16.10.3 | PD3, Monitor | -| node4 | 172.16.10.4 | TiDB1 | -| node5 | 172.16.10.5 | TiDB2 | -| node6 | 172.16.10.6 | TiKV1 | -| node7 | 172.16.10.7 | TiKV2 | -| node8 | 172.16.10.8 | TiKV3 | -| node9 | 172.16.10.9 | TiKV4 | - -### 扩容 TiDB/TiKV 节点 - -例如,如果要添加两个 TiDB 节点 (node101、node102),IP 地址为 172.16.10.101、172.16.10.102,可以进行如下操作: - -1. 编辑 `inventory.ini` 文件,添加节点信息: - - ```ini - [tidb_servers] - 172.16.10.4 - 172.16.10.5 - 172.16.10.101 - 172.16.10.102 - - [pd_servers] - 172.16.10.1 - 172.16.10.2 - 172.16.10.3 - - [tikv_servers] - 172.16.10.6 - 172.16.10.7 - 172.16.10.8 - 172.16.10.9 - - [monitored_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 - 172.16.10.7 - 172.16.10.8 - 172.16.10.9 - 172.16.10.101 - 172.16.10.102 - - [monitoring_servers] - 172.16.10.3 - - [grafana_servers] - 172.16.10.3 - ``` - - 现在拓扑结构如下所示: - - | Name | Host IP | Services | - | ---- | ------- | -------- | - | node1 | 172.16.10.1 | PD1 | - | node2 | 172.16.10.2 | PD2 | - | node3 | 172.16.10.3 | PD3, Monitor | - | node4 | 172.16.10.4 | TiDB1 | - | node5 | 172.16.10.5 | TiDB2 | - | **node101** | **172.16.10.101**|**TiDB3** | - | **node102** | **172.16.10.102**|**TiDB4** | - | node6 | 172.16.10.6 | TiKV1 | - | node7 | 172.16.10.7 | TiKV2 | - | node8 | 172.16.10.8 | TiKV3 | - | node9 | 172.16.10.9 | TiKV4 | - -2. 初始化新增节点: - - ansible-playbook bootstrap.yml -l 172.16.10.101,172.16.10.102 - -3. 部署新增节点: - - ansible-playbook deploy.yml -l 172.16.10.101,172.16.10.102 - -4. 启动新节点服务: - - ansible-playbook start.yml -l 172.16.10.101,172.16.10.102 - -5. 更新 Prometheus 配置并重启: - - ansible-playbook rolling_update_monitor.yml --tags=prometheus - -6. 打开浏览器访问监控平台:`http://172.16.10.3:3000`,监控整个集群和新增节点的状态。 - -可使用同样的步骤添加 TiKV 节点。但如果要添加 PD 节点,则需手动更新一些配置文件。 - -### 扩容 PD 节点 - -例如,如果要添加一个 PD 节点 (node103),IP 地址为 172.16.10.103,可以进行如下操作: - -1. 编辑 `inventory.ini` 文件,添加节点信息: - - ```ini - [tidb_servers] - 172.16.10.4 - 172.16.10.5 - - [pd_servers] - 172.16.10.1 - 172.16.10.2 - 172.16.10.3 - 172.16.10.103 - - [tikv_servers] - 172.16.10.6 - 172.16.10.7 - 172.16.10.8 - 172.16.10.9 - - [monitored_servers] - 172.16.10.4 - 172.16.10.5 - 172.16.10.1 - 172.16.10.2 - 172.16.10.3 - 172.16.10.103 - 172.16.10.6 - 172.16.10.7 - 172.16.10.8 - 172.16.10.9 - - [monitoring_servers] - 172.16.10.3 - - [grafana_servers] - 172.16.10.3 - ``` - - 现在拓扑结构如下所示: - - | Name | Host IP | Services | - | ---- | ------- | -------- | - | node1 | 172.16.10.1 | PD1 | - | node2 | 172.16.10.2 | PD2 | - | node3 | 172.16.10.3 | PD3, Monitor | - | **node103** | **172.16.10.103** | **PD4** | - | node4 | 172.16.10.4 | TiDB1 | - | node5 | 172.16.10.5 | TiDB2 | - | node6 | 172.16.10.6 | TiKV1 | - | node7 | 172.16.10.7 | TiKV2 | - | node8 | 172.16.10.8 | TiKV3 | - | node9 | 172.16.10.9 | TiKV4 | - -2. 初始化新增节点: - - ansible-playbook bootstrap.yml -l 172.16.10.103 - -3. 部署新增节点: - - ansible-playbook deploy.yml -l 172.16.10.103 - -4. 登录新增的 PD 节点,编辑启动脚本:`{deploy_dir}/scripts/run_pd.sh` - - 1. 移除 `--initial-cluster="xxxx" \` 配置 - - 2. 添加 `--join="http://172.16.10.1:2379" \`。IP 地址 (172.16.10.1) 可以是集群内现有 PD IP 地址中的任意一个 - - 3. 在新增 PD 节点中手动启动 PD 服务: - `{deploy_dir}/scripts/start_pd.sh` - - 4. 使用 `pd-ctl` 检查新节点是否添加成功: - `./pd-ctl -u "http://172.16.10.1:2379"` - - > 注: `pd-ctl` 命令用于查询 PD 节点的数量。 - -5. 滚动升级整个集群: - - ansible-playbook rolling_update.yml - -6. 更新 Prometheus 配置并重启: - - ansible-playbook rolling_update_monitor.yml --tags=prometheus - -7. 打开浏览器访问监控平台:`http://172.16.10.3:3000`,监控整个集群和新增节点的状态。 - -### 缩容 TiDB 节点 - -例如,如果要移除一个 TiDB 节点 (node5),IP 地址为 172.16.10.5,可以进行如下操作: - -1. 停止 node5 节点上的服务: - - ansible-playbook stop.yml -l 172.16.10.5 - -2. 编辑 `inventory.ini` 文件,移除节点信息: - - ```ini - [tidb_servers] - 172.16.10.4 - #172.16.10.5 # 注释被移除节点 - - [pd_servers] - 172.16.10.1 - 172.16.10.2 - 172.16.10.3 - - [tikv_servers] - 172.16.10.6 - 172.16.10.7 - 172.16.10.8 - 172.16.10.9 - - [monitored_servers] - 172.16.10.4 - #172.16.10.5 # 注释被移除节点 - 172.16.10.1 - 172.16.10.2 - 172.16.10.3 - 172.16.10.6 - 172.16.10.7 - 172.16.10.8 - 172.16.10.9 - - [monitoring_servers] - 172.16.10.3 - - [grafana_servers] - 172.16.10.3 - ``` - - 现在拓扑结构如下所示: - - | Name | Host IP | Services | - | ---- | ------- | -------- | - | node1 | 172.16.10.1 | PD1 | - | node2 | 172.16.10.2 | PD2 | - | node3 | 172.16.10.3 | PD3, Monitor | - | node4 | 172.16.10.4 | TiDB1 | - | **node5** | **172.16.10.5** | **TiDB2 已删除** | - | node6 | 172.16.10.6 | TiKV1 | - | node7 | 172.16.10.7 | TiKV2 | - | node8 | 172.16.10.8 | TiKV3 | - | node9 | 172.16.10.9 | TiKV4 | - -3. 更新 Prometheus 配置并重启: - - ansible-playbook rolling_update_monitor.yml --tags=prometheus - -4. 打开浏览器访问监控平台:`http://172.16.10.3:3000`,监控整个集群的状态。 - -### 缩容 TiKV 节点 - -例如,如果要移除一个 TiKV 节点 (node9),IP 地址为 172.16.10.9,可以进行如下操作: - -1. 使用 `pd-ctl` 从集群中移除节点: - - 1. 查看 node9 节点的 store id: - `./pd-ctl -u "http://172.16.10.1:2379" -d store` - - 2. 从集群中移除 node9,假如 store id 为 10: - `./pd-ctl -u "http://172.16.10.1:2379" -d store delete 10` - -2. 使用 Grafana 或者 `pd-ctl` 检查节点是否下线成功(下线需要一定时间,下线节点的状态变为 Tombstone 就说明下线成功了): - - ./pd-ctl -u "http://172.16.10.1:2379" -d store 10 - -3. 下线成功后,停止 node9 上的服务: - - ansible-playbook stop.yml -l 172.16.10.9 - -4. 编辑 `inventory.ini` 文件,移除节点信息: - - ```ini - [tidb_servers] - 172.16.10.4 - 172.16.10.5 - - [pd_servers] - 172.16.10.1 - 172.16.10.2 - 172.16.10.3 - - [tikv_servers] - 172.16.10.6 - 172.16.10.7 - 172.16.10.8 - #172.16.10.9 # 注释被移除节点 - - [monitored_servers] - 172.16.10.4 - 172.16.10.5 - 172.16.10.1 - 172.16.10.2 - 172.16.10.3 - 172.16.10.6 - 172.16.10.7 - 172.16.10.8 - #172.16.10.9 # 注释被移除节点 - - [monitoring_servers] - 172.16.10.3 - - [grafana_servers] - 172.16.10.3 - ``` - - 现在拓扑结构如下所示: - - | Name | Host IP | Services | - | ---- | ------- | -------- | - | node1 | 172.16.10.1 | PD1 | - | node2 | 172.16.10.2 | PD2 | - | node3 | 172.16.10.3 | PD3, Monitor | - | node4 | 172.16.10.4 | TiDB1 | - | node5 | 172.16.10.5 | TiDB2 | - | node6 | 172.16.10.6 | TiKV1 | - | node7 | 172.16.10.7 | TiKV2 | - | node8 | 172.16.10.8 | TiKV3 | - | **node9** | **172.16.10.9** | **TiKV4 已删除** | - -5. 更新 Prometheus 配置并重启: - - ansible-playbook rolling_update_monitor.yml --tags=prometheus - -6. 打开浏览器访问监控平台:`http://172.16.10.3:3000`,监控整个集群的状态。 - -### 缩容 PD 节点 - -例如,如果要移除一个 PD 节点 (node2),IP 地址为 172.16.10.2,可以进行如下操作: - -1. 使用 `pd-ctl` 从集群中移除节点: - - 1. 查看 node2 节点的 name: - `./pd-ctl -u "http://172.16.10.1:2379" -d member` - - 2. 从集群中移除 node2,假如 name 为 pd2: - `./pd-ctl -u "http://172.16.10.1:2379" -d member delete name pd2` - -2. 使用 Grafana 或者 `pd-ctl` 检查节点是否下线成功(PD 下线会很快,结果中没有 node2 节点信息即为下线成功): - - ./pd-ctl -u "http://172.16.10.1:2379" -d member - -3. 下线成功后,停止 node2 上的服务: - - ansible-playbook stop.yml -l 172.16.10.2 - -4. 编辑 `inventory.ini` 文件,移除节点信息: - - ```ini - [tidb_servers] - 172.16.10.4 - 172.16.10.5 - - [pd_servers] - 172.16.10.1 - #172.16.10.2 # 注释被移除节点 - 172.16.10.3 - - [tikv_servers] - 172.16.10.6 - 172.16.10.7 - 172.16.10.8 - 172.16.10.9 - - [monitored_servers] - 172.16.10.4 - 172.16.10.5 - 172.16.10.1 - #172.16.10.2 # 注释被移除节点 - 172.16.10.3 - 172.16.10.6 - 172.16.10.7 - 172.16.10.8 - 172.16.10.9 - - [monitoring_servers] - 172.16.10.3 - - [grafana_servers] - 172.16.10.3 - ``` - - 现在拓扑结构如下所示: - - | Name | Host IP | Services | - | ---- | ------- | -------- | - | node1 | 172.16.10.1 | PD1 | - | **node2** | **172.16.10.2** | **PD2 已删除** | - | node3 | 172.16.10.3 | PD3, Monitor | - | node4 | 172.16.10.4 | TiDB1 | - | node5 | 172.16.10.5 | TiDB2 | - | node6 | 172.16.10.6 | TiKV1 | - | node7 | 172.16.10.7 | TiKV2 | - | node8 | 172.16.10.8 | TiKV3 | - | node9 | 172.16.10.9 | TiKV4 | - -5. 更新 Prometheus 配置并重启: - - ansible-playbook rolling_update_monitor.yml --tags=prometheus - -6. 打开浏览器访问监控平台:`http://172.16.10.3:3000`,监控整个集群的状态。 - -## 集群销毁 - -停用集群: - - ansible-playbook stop.yml - -销毁集群: - - ansible-playbook unsafe_cleanup.yml diff --git a/README.md b/README.md index d5cebe697f7f..b912c10e5334 100755 --- a/README.md +++ b/README.md @@ -78,13 +78,13 @@ + 部署集群 - [Ansible 部署方案(强烈推荐)](op-guide/ansible-deployment.md) - [离线 Ansible 部署方案](op-guide/offline-ansible-deployment.md) - - [TiDB 2.0 升级操作指南](op-guide/tidb-v2-upgrade-guide.md) - [Docker 部署方案](op-guide/docker-deployment.md) - [Docker Compose 部署方案](op-guide/docker-compose.md) - [跨机房部署方案](op-guide/location-awareness.md) + 配置集群 - [参数解释](op-guide/configuration.md) - [TiDB 配置项解释](op-guide/tidb-config-file.md) + - [使用 Ansible 变更组件配置](op-guide/ansible-deployment-rolling-update.md#变更组件配置) - [开启 TLS 验证](op-guide/security.md) - [生成自签名证书](op-guide/generate-self-signed-certificates.md) + 监控集群 @@ -92,9 +92,11 @@ - [重要监控指标详解](op-guide/dashboard-overview-info.md) - [组件状态 API & 监控](op-guide/monitor.md) + 扩容缩容 - - [使用 Ansible 扩容缩容](QUICKSTART.md#tidb-集群扩容缩容方案) - - [集群扩容缩容方案](op-guide/horizontal-scale.md) - - [升级](op-guide/ansible-deployment.md#滚动升级) + - [使用 Ansible 扩容缩容](op-guide/ansible-deployment-scale.md) + - [集群扩容缩容方案](op-guide/horizontal-scale.md) + + [升级] + - [升级组件版本](op-guide/ansible-deployment-rolling-update.md)] + - [TiDB 2.0 升级操作指南](op-guide/tidb-v2-upgrade-guide.md) - [性能调优](op-guide/tune-tikv.md) + 备份与迁移 - [备份与恢复](op-guide/backup-restore.md) diff --git a/op-guide/ansible-deployment-rolling-update.md b/op-guide/ansible-deployment-rolling-update.md index 46af40913c79..028b79600e74 100644 --- a/op-guide/ansible-deployment-rolling-update.md +++ b/op-guide/ansible-deployment-rolling-update.md @@ -5,19 +5,15 @@ category: deployment # 使用 TiDB Ansible 升级 TiDB 集群 -## 滚动升级 TiDB 集群 - 滚动升级 TiDB 集群时,会串行关闭服务,更新服务 binary 和配置文件,再启动服务。在前端配置负载均衡的情况下,滚动升级期间不影响业务运行(最小环境 :`pd * 3 、tidb * 2、tikv * 3`)。 > **注**: -> > - 如果 TiDB 集群开启了 binlog,部署了 pump 和 drainer 服务,升级 TiDB 服务时会升级 pump,请先停止 drainer 服务再执行滚动升级操作。 ## 升级组件版本 > **注**: -> -> - 从 TiDB 1.0 升级到 TiDB 2.0,请参考[TiDB 2.0 升级操作指南](tidb-v2-upgrade-guide.md)。 +> - 从 TiDB 1.0 升级到 TiDB 2.0,请参考 [TiDB 2.0 升级操作指南](tidb-v2-upgrade-guide.md)。 ### 自动下载 binary @@ -87,12 +83,12 @@ category: deployment TiDB 集群组件配置模板存储在 `/home/tidb/tidb-ansible/conf` 文件夹下。 | 组件 | 配置文件模板名 | -| :----------------------- | :----------: | +| :-------- | :----------: | | TiDB | tidb.yml | | TiKV | tikv.yml | | PD | pd.yml | -默认配置项是注释状态,使用默认值。如果需要修改,需取消注释的 `#`,修改对应参数值。配置模板使用 yaml 格式,注意参数名及参数值之间使用 `:` 分隔,缩进为两个空格。 +默认配置项是注释状态,使用默认值。如果需要修改,需取消注释, 即去除 `#`,修改对应参数值。配置模板使用 yaml 格式,注意参数名及参数值之间使用 `:` 分隔,缩进为两个空格。 如修改 TiKV 配置中 `high-concurrency`、`normal-concurrency` 和 `low-concurrency` 三个参数为 16: diff --git a/op-guide/ansible-deployment-scale.md b/op-guide/ansible-deployment-scale.md new file mode 100644 index 000000000000..f6e13ad83a9e --- /dev/null +++ b/op-guide/ansible-deployment-scale.md @@ -0,0 +1,407 @@ +--- +title: 使用 TiDB Ansible 扩容缩容 TiDB 集群 +category: deployment +--- + +# 使用 TiDB Ansible 扩容缩容 TiDB 集群 + +TiDB 集群可以在不影响线上服务的情况下进行扩容和缩容。以下缩容示例中,被移除的节点没有混合部署其他服务;如果混合部署了其他服务,不能按如下操作。 + +假设拓扑结构如下所示: + +| Name | Host IP | Services | +| ---- | ------- | -------- | +| node1 | 172.16.10.1 | PD1 | +| node2 | 172.16.10.2 | PD2 | +| node3 | 172.16.10.3 | PD3, Monitor | +| node4 | 172.16.10.4 | TiDB1 | +| node5 | 172.16.10.5 | TiDB2 | +| node6 | 172.16.10.6 | TiKV1 | +| node7 | 172.16.10.7 | TiKV2 | +| node8 | 172.16.10.8 | TiKV3 | +| node9 | 172.16.10.9 | TiKV4 | + +## 扩容 TiDB/TiKV 节点 + +例如,如果要添加两个 TiDB 节点 (node101、node102),IP 地址为 172.16.10.101、172.16.10.102,可以进行如下操作: + +1. 编辑 `inventory.ini` 文件,添加节点信息: + + ```ini + [tidb_servers] + 172.16.10.4 + 172.16.10.5 + 172.16.10.101 + 172.16.10.102 + + [pd_servers] + 172.16.10.1 + 172.16.10.2 + 172.16.10.3 + + [tikv_servers] + 172.16.10.6 + 172.16.10.7 + 172.16.10.8 + 172.16.10.9 + + [monitored_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 + 172.16.10.7 + 172.16.10.8 + 172.16.10.9 + 172.16.10.101 + 172.16.10.102 + + [monitoring_servers] + 172.16.10.3 + + [grafana_servers] + 172.16.10.3 + ``` + + 现在拓扑结构如下所示: + + | Name | Host IP | Services | + | ---- | ------- | -------- | + | node1 | 172.16.10.1 | PD1 | + | node2 | 172.16.10.2 | PD2 | + | node3 | 172.16.10.3 | PD3, Monitor | + | node4 | 172.16.10.4 | TiDB1 | + | node5 | 172.16.10.5 | TiDB2 | + | **node101** | **172.16.10.101**|**TiDB3** | + | **node102** | **172.16.10.102**|**TiDB4** | + | node6 | 172.16.10.6 | TiKV1 | + | node7 | 172.16.10.7 | TiKV2 | + | node8 | 172.16.10.8 | TiKV3 | + | node9 | 172.16.10.9 | TiKV4 | + +2. 初始化新增节点: + + ansible-playbook bootstrap.yml -l 172.16.10.101,172.16.10.102 + +3. 部署新增节点: + + ansible-playbook deploy.yml -l 172.16.10.101,172.16.10.102 + +4. 启动新节点服务: + + ansible-playbook start.yml -l 172.16.10.101,172.16.10.102 + +5. 更新 Prometheus 配置并重启: + + ansible-playbook rolling_update_monitor.yml --tags=prometheus + +6. 打开浏览器访问监控平台:`http://172.16.10.3:3000`,监控整个集群和新增节点的状态。 + +可使用同样的步骤添加 TiKV 节点。但如果要添加 PD 节点,则需手动更新一些配置文件。 + +## 扩容 PD 节点 + +例如,如果要添加一个 PD 节点 (node103),IP 地址为 172.16.10.103,可以进行如下操作: + +1. 编辑 `inventory.ini` 文件,添加节点信息: + + ```ini + [tidb_servers] + 172.16.10.4 + 172.16.10.5 + + [pd_servers] + 172.16.10.1 + 172.16.10.2 + 172.16.10.3 + 172.16.10.103 + + [tikv_servers] + 172.16.10.6 + 172.16.10.7 + 172.16.10.8 + 172.16.10.9 + + [monitored_servers] + 172.16.10.4 + 172.16.10.5 + 172.16.10.1 + 172.16.10.2 + 172.16.10.3 + 172.16.10.103 + 172.16.10.6 + 172.16.10.7 + 172.16.10.8 + 172.16.10.9 + + [monitoring_servers] + 172.16.10.3 + + [grafana_servers] + 172.16.10.3 + ``` + + 现在拓扑结构如下所示: + + | Name | Host IP | Services | + | ---- | ------- | -------- | + | node1 | 172.16.10.1 | PD1 | + | node2 | 172.16.10.2 | PD2 | + | node3 | 172.16.10.3 | PD3, Monitor | + | **node103** | **172.16.10.103** | **PD4** | + | node4 | 172.16.10.4 | TiDB1 | + | node5 | 172.16.10.5 | TiDB2 | + | node6 | 172.16.10.6 | TiKV1 | + | node7 | 172.16.10.7 | TiKV2 | + | node8 | 172.16.10.8 | TiKV3 | + | node9 | 172.16.10.9 | TiKV4 | + +2. 初始化新增节点: + + ansible-playbook bootstrap.yml -l 172.16.10.103 + +3. 部署新增节点: + + ansible-playbook deploy.yml -l 172.16.10.103 + +4. 登录新增的 PD 节点,编辑启动脚本:`{deploy_dir}/scripts/run_pd.sh` + + 1. 移除 `--initial-cluster="xxxx" \` 配置 + + 2. 添加 `--join="http://172.16.10.1:2379" \`。IP 地址 (172.16.10.1) 可以是集群内现有 PD IP 地址中的任意一个 + + 3. 在新增 PD 节点中手动启动 PD 服务: + `{deploy_dir}/scripts/start_pd.sh` + + 4. 使用 `pd-ctl` 检查新节点是否添加成功: + `/home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.16.10.1:2379"` + + > 注: `pd-ctl` 命令用于查询 PD 节点的数量。 + +5. 滚动升级整个集群: + + ansible-playbook rolling_update.yml + +6. 更新 Prometheus 配置并重启: + + ansible-playbook rolling_update_monitor.yml --tags=prometheus + +7. 打开浏览器访问监控平台:`http://172.16.10.3:3000`,监控整个集群和新增节点的状态。 + +### 缩容 TiDB 节点 + +例如,如果要移除一个 TiDB 节点 (node5),IP 地址为 172.16.10.5,可以进行如下操作: + +1. 停止 node5 节点上的服务: + + ansible-playbook stop.yml -l 172.16.10.5 + +2. 编辑 `inventory.ini` 文件,移除节点信息: + + ```ini + [tidb_servers] + 172.16.10.4 + #172.16.10.5 # 注释被移除节点 + + [pd_servers] + 172.16.10.1 + 172.16.10.2 + 172.16.10.3 + + [tikv_servers] + 172.16.10.6 + 172.16.10.7 + 172.16.10.8 + 172.16.10.9 + + [monitored_servers] + 172.16.10.4 + #172.16.10.5 # 注释被移除节点 + 172.16.10.1 + 172.16.10.2 + 172.16.10.3 + 172.16.10.6 + 172.16.10.7 + 172.16.10.8 + 172.16.10.9 + + [monitoring_servers] + 172.16.10.3 + + [grafana_servers] + 172.16.10.3 + ``` + + 现在拓扑结构如下所示: + + | Name | Host IP | Services | + | ---- | ------- | -------- | + | node1 | 172.16.10.1 | PD1 | + | node2 | 172.16.10.2 | PD2 | + | node3 | 172.16.10.3 | PD3, Monitor | + | node4 | 172.16.10.4 | TiDB1 | + | **node5** | **172.16.10.5** | **TiDB2 已删除** | + | node6 | 172.16.10.6 | TiKV1 | + | node7 | 172.16.10.7 | TiKV2 | + | node8 | 172.16.10.8 | TiKV3 | + | node9 | 172.16.10.9 | TiKV4 | + +3. 更新 Prometheus 配置并重启: + + ansible-playbook rolling_update_monitor.yml --tags=prometheus + +4. 打开浏览器访问监控平台:`http://172.16.10.3:3000`,监控整个集群的状态。 + +### 缩容 TiKV 节点 + +例如,如果要移除一个 TiKV 节点 (node9),IP 地址为 172.16.10.9,可以进行如下操作: + +1. 使用 `pd-ctl` 从集群中移除节点: + + 1. 查看 node9 节点的 store id: + `./pd-ctl -u "http://172.16.10.1:2379" -d store` + + 2. 从集群中移除 node9,假如 store id 为 10: + `./pd-ctl -u "http://172.16.10.1:2379" -d store delete 10` + +2. 使用 Grafana 或者 `pd-ctl` 检查节点是否下线成功(下线需要一定时间,下线节点的状态变为 Tombstone 就说明下线成功了): + + ./pd-ctl -u "http://172.16.10.1:2379" -d store 10 + +3. 下线成功后,停止 node9 上的服务: + + ansible-playbook stop.yml -l 172.16.10.9 + +4. 编辑 `inventory.ini` 文件,移除节点信息: + + ```ini + [tidb_servers] + 172.16.10.4 + 172.16.10.5 + + [pd_servers] + 172.16.10.1 + 172.16.10.2 + 172.16.10.3 + + [tikv_servers] + 172.16.10.6 + 172.16.10.7 + 172.16.10.8 + #172.16.10.9 # 注释被移除节点 + + [monitored_servers] + 172.16.10.4 + 172.16.10.5 + 172.16.10.1 + 172.16.10.2 + 172.16.10.3 + 172.16.10.6 + 172.16.10.7 + 172.16.10.8 + #172.16.10.9 # 注释被移除节点 + + [monitoring_servers] + 172.16.10.3 + + [grafana_servers] + 172.16.10.3 + ``` + + 现在拓扑结构如下所示: + + | Name | Host IP | Services | + | ---- | ------- | -------- | + | node1 | 172.16.10.1 | PD1 | + | node2 | 172.16.10.2 | PD2 | + | node3 | 172.16.10.3 | PD3, Monitor | + | node4 | 172.16.10.4 | TiDB1 | + | node5 | 172.16.10.5 | TiDB2 | + | node6 | 172.16.10.6 | TiKV1 | + | node7 | 172.16.10.7 | TiKV2 | + | node8 | 172.16.10.8 | TiKV3 | + | **node9** | **172.16.10.9** | **TiKV4 已删除** | + +5. 更新 Prometheus 配置并重启: + + ansible-playbook rolling_update_monitor.yml --tags=prometheus + +6. 打开浏览器访问监控平台:`http://172.16.10.3:3000`,监控整个集群的状态。 + +### 缩容 PD 节点 + +例如,如果要移除一个 PD 节点 (node2),IP 地址为 172.16.10.2,可以进行如下操作: + +1. 使用 `pd-ctl` 从集群中移除节点: + + 1. 查看 node2 节点的 name: + `./pd-ctl -u "http://172.16.10.1:2379" -d member` + + 2. 从集群中移除 node2,假如 name 为 pd2: + `./pd-ctl -u "http://172.16.10.1:2379" -d member delete name pd2` + +2. 使用 Grafana 或者 `pd-ctl` 检查节点是否下线成功(PD 下线会很快,结果中没有 node2 节点信息即为下线成功): + + ./pd-ctl -u "http://172.16.10.1:2379" -d member + +3. 下线成功后,停止 node2 上的服务: + + ansible-playbook stop.yml -l 172.16.10.2 + +4. 编辑 `inventory.ini` 文件,移除节点信息: + + ```ini + [tidb_servers] + 172.16.10.4 + 172.16.10.5 + + [pd_servers] + 172.16.10.1 + #172.16.10.2 # 注释被移除节点 + 172.16.10.3 + + [tikv_servers] + 172.16.10.6 + 172.16.10.7 + 172.16.10.8 + 172.16.10.9 + + [monitored_servers] + 172.16.10.4 + 172.16.10.5 + 172.16.10.1 + #172.16.10.2 # 注释被移除节点 + 172.16.10.3 + 172.16.10.6 + 172.16.10.7 + 172.16.10.8 + 172.16.10.9 + + [monitoring_servers] + 172.16.10.3 + + [grafana_servers] + 172.16.10.3 + ``` + + 现在拓扑结构如下所示: + + | Name | Host IP | Services | + | ---- | ------- | -------- | + | node1 | 172.16.10.1 | PD1 | + | **node2** | **172.16.10.2** | **PD2 已删除** | + | node3 | 172.16.10.3 | PD3, Monitor | + | node4 | 172.16.10.4 | TiDB1 | + | node5 | 172.16.10.5 | TiDB2 | + | node6 | 172.16.10.6 | TiKV1 | + | node7 | 172.16.10.7 | TiKV2 | + | node8 | 172.16.10.8 | TiKV3 | + | node9 | 172.16.10.9 | TiKV4 | + +5. 更新 Prometheus 配置并重启: + + ansible-playbook rolling_update_monitor.yml --tags=prometheus + +6. 打开浏览器访问监控平台:`http://172.16.10.3:3000`,监控整个集群的状态。 diff --git a/op-guide/ansible-deployment.md b/op-guide/ansible-deployment.md index 27952ad094d9..2e64152b1e8d 100644 --- a/op-guide/ansible-deployment.md +++ b/op-guide/ansible-deployment.md @@ -13,13 +13,13 @@ Ansible 是一款自动化运维工具,[TiDB-Ansible](https://github.com/pingc - 初始化操作系统参数 - 部署 TiDB 集群(包括 PD、TiDB、TiKV 等组件和监控组件) -- 升级组件版本 -- 变更组件配置 -- 集群扩容缩容 -- 清除集群数据 -- 启动集群 -- 关闭集群 -- 销毁集群 +- [升级组件版本](ansible-deployment-rolling-update.md#升级组件版本) +- [变更组件配置](ansible-deployment-rolling-update.md#变更组件配置) +- [集群扩容缩容](ansible-deployment-scale.md) +- [启动集群](ansible-operation.md#启动集群) +- [关闭集群](ansible-operation.md#关闭集群) +- [清除集群数据](ansible-operation.md#清除集群数据) +- [销毁集群](ansible-operation.md#销毁集群) ## 准备机器 diff --git a/op-guide/ansible-operation.md b/op-guide/ansible-operation.md new file mode 100644 index 000000000000..e8f3158d8397 --- /dev/null +++ b/op-guide/ansible-operation.md @@ -0,0 +1,38 @@ +--- +title: TiDB Ansible 常见运维操作 +category: deployment +--- + +# TiDB Ansible 常见运维操作 + +## 启动集群 + +此操作会按顺序启动整个 TiDB 集群所有组件(包括 PD、TiDB、TiKV 等组件和监控组件)。 + + ``` + $ ansible-playbook start.yml + ``` + +## 关闭集群 + +此操作会按顺序关闭整个 TiDB 集群所有组件(包括 PD、TiDB、TiKV 等组件和监控组件)。 + + ``` + $ ansible-playbook unsafe_cleanup.yml + ``` + +## 清除集群数据 + +此操作会关闭 TiDB、Pump、TiKV、PD 服务,并清空 Pump、TiKV、PD 数据目录。 + + ``` + $ ansible-playbook unsafe_cleanup.yml + ``` + +## 销毁集群 + +此操作会关闭集群,并清空部署目录,若部署目录为挂载点,会报错,可忽略。 + + ``` + $ ansible-playbook unsafe_cleanup.yml + ``` diff --git a/op-guide/op-guide.md b/op-guide/op-guide.md index cf2d1025ca80..dda84b848233 100644 --- a/op-guide/op-guide.md +++ b/op-guide/op-guide.md @@ -13,13 +13,14 @@ category: deployment - [Ansible 部署方案 (强烈推荐)](ansible-deployment.md) - [离线 Ansible 部署方案](offline-ansible-deployment.md) -- [TiDB 2.0 升级操作指南](tidb-v2-upgrade-guide.md) - [Docker 部署方案](docker-deployment.md) +- [Binary 部署方案](binary-deployment.md) - [跨机房部署方案](location-awareness.md) ## 配置集群 - [配置参数](configuration.md) +- [使用 Ansible 变更组件配置](ansible-deployment-rolling-update.md#变更组件配置) ## 监控集群 @@ -29,12 +30,13 @@ category: deployment ## 扩容缩容 -- [使用 Ansible 扩容缩容](../QUICKSTART.md#tidb-集群扩容缩容方案) +- [使用 Ansible 扩容缩容](ansible-deployment-scale.md) - [集群扩容缩容方案](horizontal-scale.md) ## 升级 -- [使用 Ansible 升级](ansible-deployment.md) +- [使用 Anisble 升级组件版本](ansible-deployment-rolling-update.md#升级组件版本) +- [TiDB 2.0 升级操作指南](tidb-v2-upgrade-guide.md) ## 性能调优 @@ -46,7 +48,3 @@ category: deployment + [数据迁移](migration.md) - [全量导入](migration.md#使用-mydumperloader-全量导入数据) - [增量导入](migration.md#使用-syncer-增量导入数据) - -## Binary 部署方案 - -- [Binary 部署方案](binary-deployment.md) From c1cbdf199a71da4f8385fe54f173aa457dea62a1 Mon Sep 17 00:00:00 2001 From: Louis Date: Fri, 15 Jun 2018 00:22:00 +0800 Subject: [PATCH 05/11] fix format --- op-guide/ansible-operation.md | 24 ++++++++++++------------ op-guide/offline-ansible-deployment.md | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/op-guide/ansible-operation.md b/op-guide/ansible-operation.md index e8f3158d8397..1322d90f0e0c 100644 --- a/op-guide/ansible-operation.md +++ b/op-guide/ansible-operation.md @@ -9,30 +9,30 @@ category: deployment 此操作会按顺序启动整个 TiDB 集群所有组件(包括 PD、TiDB、TiKV 等组件和监控组件)。 - ``` - $ ansible-playbook start.yml - ``` +``` +$ ansible-playbook start.yml +``` ## 关闭集群 此操作会按顺序关闭整个 TiDB 集群所有组件(包括 PD、TiDB、TiKV 等组件和监控组件)。 - ``` - $ ansible-playbook unsafe_cleanup.yml - ``` +``` +$ ansible-playbook unsafe_cleanup.yml +``` ## 清除集群数据 此操作会关闭 TiDB、Pump、TiKV、PD 服务,并清空 Pump、TiKV、PD 数据目录。 - ``` - $ ansible-playbook unsafe_cleanup.yml - ``` +``` +$ ansible-playbook unsafe_cleanup.yml +``` ## 销毁集群 此操作会关闭集群,并清空部署目录,若部署目录为挂载点,会报错,可忽略。 - ``` - $ ansible-playbook unsafe_cleanup.yml - ``` +``` +$ ansible-playbook unsafe_cleanup.yml +``` diff --git a/op-guide/offline-ansible-deployment.md b/op-guide/offline-ansible-deployment.md index 5e6ce76bb77c..c1f35e49f612 100644 --- a/op-guide/offline-ansible-deployment.md +++ b/op-guide/offline-ansible-deployment.md @@ -113,7 +113,7 @@ category: deployment ## 在部署目标机器上添加数据盘 ext4 文件系统挂载参数 -参考[在部署目标机器上添加数据盘 ext4 文件系统挂载参数](ansible-deployment.md#https://github.com/LinuxGit/docs-cn/blob/Louis/refine-deployment-docs/op-guide/ansible-deployment.md#在部署目标机器上添加数据盘-ext4-文件系统挂载参数)即可。 +参考[在部署目标机器上添加数据盘 ext4 文件系统挂载参数](ansible-deployment.md#在部署目标机器上添加数据盘-ext4-文件系统挂载参数)即可。 ## 分配机器资源,编辑 inventory.ini 文件 From 08e104cf118b541e96e3c6a4e5191c62ece73de2 Mon Sep 17 00:00:00 2001 From: Louis Date: Fri, 15 Jun 2018 18:56:01 +0800 Subject: [PATCH 06/11] fix format --- op-guide/ansible-deployment.md | 13 ++++++++----- op-guide/offline-ansible-deployment.md | 6 +++--- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/op-guide/ansible-deployment.md b/op-guide/ansible-deployment.md index 2e64152b1e8d..430f81ad1f65 100644 --- a/op-guide/ansible-deployment.md +++ b/op-guide/ansible-deployment.md @@ -13,11 +13,11 @@ Ansible 是一款自动化运维工具,[TiDB-Ansible](https://github.com/pingc - 初始化操作系统参数 - 部署 TiDB 集群(包括 PD、TiDB、TiKV 等组件和监控组件) -- [升级组件版本](ansible-deployment-rolling-update.md#升级组件版本) -- [变更组件配置](ansible-deployment-rolling-update.md#变更组件配置) -- [集群扩容缩容](ansible-deployment-scale.md) - [启动集群](ansible-operation.md#启动集群) - [关闭集群](ansible-operation.md#关闭集群) +- [变更组件配置](ansible-deployment-rolling-update.md#变更组件配置) +- [集群扩容缩容](ansible-deployment-scale.md) +- [升级组件版本](ansible-deployment-rolling-update.md#升级组件版本) - [清除集群数据](ansible-operation.md#清除集群数据) - [销毁集群](ansible-operation.md#销毁集群) @@ -168,7 +168,10 @@ $ ansible-playbook -i hosts.ini create_users.yml -k > 如果你的部署目标机器时间、时区设置一致,已开启 NTP 服务且在正常同步时间,此步骤可忽略。可参考[如何检测 NTP 服务是否正常](#如何检测-ntp-服务是否正常)。 -以 `tidb` 用户登录中控机,执行以下命令,按提示输入部署目标机器 root 密码。该步骤将在部署目标机器上安装 NTP 服务,服务使用安装包默认的 NTP server 列表,见配置文件 `/etc/ntp.conf` 中 server 参数。在启动 NTP 服务前,系统会 ntpdate `hosts.ini` 文件 中 `ntp_server`,默认为 `pool.ntp.org`,也可替换为你的 NTP server。 +> 该步骤将在部署目标机器上使用系统自带软件源联网安装并启动 NTP 服务,服务使用安装包默认的 NTP server 列表,见配置文件 `/etc/ntp.conf` 中 server 参数,如果使用默认的 NTP server,你的机器需要连接外网。 +> 为了让 NTP 尽快开始同步,启动 NTP 服务前,系统会 ntpdate `hosts.ini` 文件中的 `ntp_server` 一次,默认为 `pool.ntp.org`,也可替换为你的 NTP server。 + +以 `tidb` 用户登录中控机,执行以下命令,按提示输入部署目标机器 root 密码。 ``` $ cd /home/tidb/tidb-ansible @@ -398,7 +401,7 @@ TiKV1-1 ansible_host=172.16.10.4 deploy_dir=/data1/deploy | process_supervision | 进程监管方式,默认为 systemd,可选 supervise | | timezone | 修改部署目标机器时区,默认为 `Asia/Shanghai`,可调整,与 `set_timezone` 变量结合使用 | | set_timezone | 默认为 True,即修改部署目标机器时区,关闭可修改为 False | -| enable_firewalld | 开启防火墙,默认不开启 | +| enable_firewalld | 开启防火墙,默认不开启,如需开启,请将[部署建议-网络要求](recommendation.md#网络要求) 中的端口加入白名单 | | enable_ntpd | 检测部署目标机器 NTP 服务,默认为 True,请勿关闭 | | set_hostname | 根据 IP 修改部署目标机器主机名,默认为 False | | enable_binlog | 是否部署 pump 并开启 binlog,默认为 False,依赖 Kafka 集群,参见 `zookeeper_addrs` 变量 | diff --git a/op-guide/offline-ansible-deployment.md b/op-guide/offline-ansible-deployment.md index c1f35e49f612..c292e8a24a12 100644 --- a/op-guide/offline-ansible-deployment.md +++ b/op-guide/offline-ansible-deployment.md @@ -19,7 +19,7 @@ category: deployment ## 在中控机上安装系统依赖包 -> 下载 [ pip 离线安装包 ](https://download.pingcap.org/pip-rpms.el7.tar.gz), 上传至中控机, 该离线包仅支持 CentOS 7 系统。 +> 下载 [pip 离线安装包](https://download.pingcap.org/pip-rpms.el7.tar.gz), 上传至中控机,该离线包仅支持 CentOS 7 系统。 ```bash # tar -xzvf pip-rpms.el7.tar.gz @@ -35,7 +35,7 @@ category: deployment pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7) ``` -> 如果你的系统已安装 pip, 请确认版本 >= 8.1.2, 否则离线安装 ansible 及其依赖时,会有兼容问题。 +> 如果你的系统已安装 pip,请确认版本 >= 8.1.2,否则离线安装 ansible 及其依赖时,会有兼容问题。 ## 在中控机上创建 tidb 用户,并生成 ssh key @@ -45,7 +45,7 @@ category: deployment 以下是 CentOS 7 系统 Ansible 离线安装方式: -目前 release-2.0 及 master 版本兼容 Ansible 2.4 及 Ansible 2.5 版本,Ansible 及相关依赖版本记录在 `tidb-ansible/requirements.txt` 文件中,请下载 Ansible 2.5 离线安装包上传至中控机。 +目前 release-2.0 及 master 版本兼容 Ansible 2.5 版本,Ansible 及相关依赖版本记录在 `tidb-ansible/requirements.txt` 文件中,请下载 Ansible 2.5 离线安装包上传至中控机。 > 下载 [Ansible 2.5 离线安装包](https://download.pingcap.org/ansible-2.5.0-pip.tar.gz) From b8b3af4f5ae8eda9e187796ceaa3660b49db90cf Mon Sep 17 00:00:00 2001 From: Louis Date: Sat, 16 Jun 2018 00:11:13 +0800 Subject: [PATCH 07/11] fix format --- QUICKSTART.md | 2 +- README.md | 2 +- op-guide/ansible-deployment-rolling-update.md | 12 ++++++------ op-guide/ansible-deployment-scale.md | 6 +++++- op-guide/offline-ansible-deployment.md | 2 +- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/QUICKSTART.md b/QUICKSTART.md index abf2615decb8..58a400811d09 100644 --- a/QUICKSTART.md +++ b/QUICKSTART.md @@ -21,7 +21,7 @@ TiDB 是 PingCAP 公司受 Google [Spanner](http://research.google.com/archive/s ![TiDB Architecture](media/tidb-architecture.png) -参考[TiDB Ansible 部署方案](op-guide/ansible-deployment.md)。 +参考 [TiDB Ansible 部署方案](op-guide/ansible-deployment.md)。 ## TiDB 基本操作 diff --git a/README.md b/README.md index b912c10e5334..3db8f1c6058b 100755 --- a/README.md +++ b/README.md @@ -95,7 +95,7 @@ - [使用 Ansible 扩容缩容](op-guide/ansible-deployment-scale.md) - [集群扩容缩容方案](op-guide/horizontal-scale.md) + [升级] - - [升级组件版本](op-guide/ansible-deployment-rolling-update.md)] + - [升级组件版本](op-guide/ansible-deployment-rolling-update.md#升级组件版本) - [TiDB 2.0 升级操作指南](op-guide/tidb-v2-upgrade-guide.md) - [性能调优](op-guide/tune-tikv.md) + 备份与迁移 diff --git a/op-guide/ansible-deployment-rolling-update.md b/op-guide/ansible-deployment-rolling-update.md index 028b79600e74..32b01d14a32e 100644 --- a/op-guide/ansible-deployment-rolling-update.md +++ b/op-guide/ansible-deployment-rolling-update.md @@ -5,19 +5,19 @@ category: deployment # 使用 TiDB Ansible 升级 TiDB 集群 -滚动升级 TiDB 集群时,会串行关闭服务,更新服务 binary 和配置文件,再启动服务。在前端配置负载均衡的情况下,滚动升级期间不影响业务运行(最小环境 :`pd * 3 、tidb * 2、tikv * 3`)。 +滚动升级 TiDB 集群时,会串行关闭服务,更新服务 binary 和配置文件,再启动服务。在前端配置负载均衡的情况下,滚动升级期间不影响业务运行(最小环境 :pd * 3 、tidb * 2、tikv * 3)。 > **注**: -> - 如果 TiDB 集群开启了 binlog,部署了 pump 和 drainer 服务,升级 TiDB 服务时会升级 pump,请先停止 drainer 服务再执行滚动升级操作。 +> 如果 TiDB 集群开启了 binlog,部署了 pump 和 drainer 服务,升级 TiDB 服务时会升级 pump,请先停止 drainer 服务再执行滚动升级操作。 ## 升级组件版本 > **注**: -> - 从 TiDB 1.0 升级到 TiDB 2.0,请参考 [TiDB 2.0 升级操作指南](tidb-v2-upgrade-guide.md)。 +> 跨大版本升级,需要更新 `tidb-ansible`,从 TiDB 1.0 升级到 TiDB 2.0,请参考 [TiDB 2.0 升级操作指南](tidb-v2-upgrade-guide.md)。 ### 自动下载 binary -1. 修改 `/home/tidb/tidb-ansible/inventory.ini` 中的 `tidb_version` 参数值,指定需要升级的版本号,本例从 `v2.0.2` 升级到 `v2.0.3` +1. 修改 `/home/tidb/tidb-ansible/inventory.ini` 中的 `tidb_version` 参数值,指定需要升级的版本号,如从 `v2.0.2` 升级到 `v2.0.3` ``` tidb_version = v2.0.3 @@ -38,7 +38,7 @@ category: deployment ### 手动下载 binary -1. 除 “下载 binary” 中描述的方法之外,也可以手动下载 binary,解压后手动替换 binary 到 `/home/tidb/tidb-ansible/resource/bin/`,请注意替换链接中的版本号 +1. 除 “下载 binary” 中描述的方法之外,也可以手动下载 binary,解压后手动替换 binary 到 `/home/tidb/tidb-ansible/resource/bin/`,请注意替换链接中的版本号。 ``` wget http://download.pingcap.org/tidb-v2.0.3-linux-amd64-unportable.tar.gz @@ -88,7 +88,7 @@ TiDB 集群组件配置模板存储在 `/home/tidb/tidb-ansible/conf` 文件夹 | TiKV | tikv.yml | | PD | pd.yml | -默认配置项是注释状态,使用默认值。如果需要修改,需取消注释, 即去除 `#`,修改对应参数值。配置模板使用 yaml 格式,注意参数名及参数值之间使用 `:` 分隔,缩进为两个空格。 +默认配置项是注释状态,使用默认值。如果需要修改,需取消注释,即去除 `#`,修改对应参数值。配置模板使用 yaml 格式,注意参数名及参数值之间使用 `:` 分隔,缩进为两个空格。 如修改 TiKV 配置中 `high-concurrency`、`normal-concurrency` 和 `low-concurrency` 三个参数为 16: diff --git a/op-guide/ansible-deployment-scale.md b/op-guide/ansible-deployment-scale.md index f6e13ad83a9e..d671dc62818c 100644 --- a/op-guide/ansible-deployment-scale.md +++ b/op-guide/ansible-deployment-scale.md @@ -85,6 +85,10 @@ TiDB 集群可以在不影响线上服务的情况下进行扩容和缩容。 ansible-playbook bootstrap.yml -l 172.16.10.101,172.16.10.102 +> **注**: +> 如果 `inventory.ini` 中为节点配置了别名,如 `node101 ansible_host=172.16.10.101`,执行 ansible-playbook 时 -l 请指定别名,以下步骤类似。 +> `ansible-playbook bootstrap.yml -l node101,node102` + 3. 部署新增节点: ansible-playbook deploy.yml -l 172.16.10.101,172.16.10.102 @@ -99,7 +103,7 @@ TiDB 集群可以在不影响线上服务的情况下进行扩容和缩容。 6. 打开浏览器访问监控平台:`http://172.16.10.3:3000`,监控整个集群和新增节点的状态。 -可使用同样的步骤添加 TiKV 节点。但如果要添加 PD 节点,则需手动更新一些配置文件。 + 可使用同样的步骤添加 TiKV 节点。但如果要添加 PD 节点,则需手动更新一些配置文件。 ## 扩容 PD 节点 diff --git a/op-guide/offline-ansible-deployment.md b/op-guide/offline-ansible-deployment.md index c292e8a24a12..50be59ff345a 100644 --- a/op-guide/offline-ansible-deployment.md +++ b/op-guide/offline-ansible-deployment.md @@ -39,7 +39,7 @@ category: deployment ## 在中控机上创建 tidb 用户,并生成 ssh key -参考[在中控机上创建 tidb 用户,并生成 ssh key](ansible-deployment.md#在中控机上创建-tidb-用户并生成-ssh-key)即可。 +参考[在中控机上创建 tidb 用户,并生成 ssh key](ansible-deployment.md#在中控机上创建-tidb-用户并生成-ssh-key) 即可。 ## 在中控机器上离线安装 Ansible 及其依赖 From b066643f4eca0d0a05c29ef4515390be428934b7 Mon Sep 17 00:00:00 2001 From: Louis Date: Sun, 17 Jun 2018 01:09:40 +0800 Subject: [PATCH 08/11] fix punctuation --- op-guide/ansible-deployment-rolling-update.md | 10 +++++----- op-guide/ansible-deployment-scale.md | 12 ++++++------ op-guide/ansible-deployment.md | 16 ++++++++-------- op-guide/ansible-operation.md | 4 ++-- op-guide/offline-ansible-deployment.md | 2 +- op-guide/recommendation.md | 4 ++-- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/op-guide/ansible-deployment-rolling-update.md b/op-guide/ansible-deployment-rolling-update.md index 32b01d14a32e..f0726097637b 100644 --- a/op-guide/ansible-deployment-rolling-update.md +++ b/op-guide/ansible-deployment-rolling-update.md @@ -5,7 +5,7 @@ category: deployment # 使用 TiDB Ansible 升级 TiDB 集群 -滚动升级 TiDB 集群时,会串行关闭服务,更新服务 binary 和配置文件,再启动服务。在前端配置负载均衡的情况下,滚动升级期间不影响业务运行(最小环境 :pd * 3 、tidb * 2、tikv * 3)。 +滚动升级 TiDB 集群时,会串行关闭服务,更新服务 binary 和配置文件,再启动服务。在前端配置负载均衡的情况下,滚动升级期间不影响业务运行(最小环境 :pd * 3 、tidb * 2、tikv * 3)。 > **注**: > 如果 TiDB 集群开启了 binlog,部署了 pump 和 drainer 服务,升级 TiDB 服务时会升级 pump,请先停止 drainer 服务再执行滚动升级操作。 @@ -46,25 +46,25 @@ category: deployment ### 使用 Ansible 滚动升级 -- 滚动升级 TiKV 节点( 只升级 TiKV 服务 ) +- 滚动升级 TiKV 节点(只升级 TiKV 服务) ``` $ ansible-playbook rolling_update.yml --tags=tikv ``` -- 滚动升级 PD 节点( 只升级单独 PD 服务 ) +- 滚动升级 PD 节点(只升级单独 PD 服务) ``` $ ansible-playbook rolling_update.yml --tags=pd ``` -- 滚动升级 TiDB 节点( 只升级单独 TiDB 服务, 如果 TiDB 集群开启了 binlog,升级 TiDB 服务时会升级 pump) +- 滚动升级 TiDB 节点(只升级单独 TiDB 服务,如果 TiDB 集群开启了 binlog,升级 TiDB 服务时会升级 pump) ``` $ ansible-playbook rolling_update.yml --tags=tidb ``` -- 滚动升级所有服务(依次升级 PD, TiKV, TiDB 服务,如果 TiDB 集群开启了 binlog,升级 TiDB 服务时会升级 pump) +- 滚动升级所有服务(依次升级 PD,TiKV,TiDB 服务,如果 TiDB 集群开启了 binlog,升级 TiDB 服务时会升级 pump) ``` $ ansible-playbook rolling_update.yml diff --git a/op-guide/ansible-deployment-scale.md b/op-guide/ansible-deployment-scale.md index d671dc62818c..7ff050b618e1 100644 --- a/op-guide/ansible-deployment-scale.md +++ b/op-guide/ansible-deployment-scale.md @@ -23,7 +23,7 @@ TiDB 集群可以在不影响线上服务的情况下进行扩容和缩容。 ## 扩容 TiDB/TiKV 节点 -例如,如果要添加两个 TiDB 节点 (node101、node102),IP 地址为 172.16.10.101、172.16.10.102,可以进行如下操作: +例如,如果要添加两个 TiDB 节点(node101、node102),IP 地址为 172.16.10.101、172.16.10.102,可以进行如下操作: 1. 编辑 `inventory.ini` 文件,添加节点信息: @@ -107,7 +107,7 @@ TiDB 集群可以在不影响线上服务的情况下进行扩容和缩容。 ## 扩容 PD 节点 -例如,如果要添加一个 PD 节点 (node103),IP 地址为 172.16.10.103,可以进行如下操作: +例如,如果要添加一个 PD 节点(node103),IP 地址为 172.16.10.103,可以进行如下操作: 1. 编辑 `inventory.ini` 文件,添加节点信息: @@ -174,7 +174,7 @@ TiDB 集群可以在不影响线上服务的情况下进行扩容和缩容。 1. 移除 `--initial-cluster="xxxx" \` 配置 - 2. 添加 `--join="http://172.16.10.1:2379" \`。IP 地址 (172.16.10.1) 可以是集群内现有 PD IP 地址中的任意一个 + 2. 添加 `--join="http://172.16.10.1:2379" \`。IP 地址 (172.16.10.1) 可以是集群内现有 PD IP 地址中的任意一个 3. 在新增 PD 节点中手动启动 PD 服务: `{deploy_dir}/scripts/start_pd.sh` @@ -196,7 +196,7 @@ TiDB 集群可以在不影响线上服务的情况下进行扩容和缩容。 ### 缩容 TiDB 节点 -例如,如果要移除一个 TiDB 节点 (node5),IP 地址为 172.16.10.5,可以进行如下操作: +例如,如果要移除一个 TiDB 节点(node5),IP 地址为 172.16.10.5,可以进行如下操作: 1. 停止 node5 节点上的服务: @@ -260,7 +260,7 @@ TiDB 集群可以在不影响线上服务的情况下进行扩容和缩容。 ### 缩容 TiKV 节点 -例如,如果要移除一个 TiKV 节点 (node9),IP 地址为 172.16.10.9,可以进行如下操作: +例如,如果要移除一个 TiKV 节点(node9),IP 地址为 172.16.10.9,可以进行如下操作: 1. 使用 `pd-ctl` 从集群中移除节点: @@ -336,7 +336,7 @@ TiDB 集群可以在不影响线上服务的情况下进行扩容和缩容。 ### 缩容 PD 节点 -例如,如果要移除一个 PD 节点 (node2),IP 地址为 172.16.10.2,可以进行如下操作: +例如,如果要移除一个 PD 节点(node2),IP 地址为 172.16.10.2,可以进行如下操作: 1. 使用 `pd-ctl` 从集群中移除节点: diff --git a/op-guide/ansible-deployment.md b/op-guide/ansible-deployment.md index 430f81ad1f65..1f3883bfb439 100644 --- a/op-guide/ansible-deployment.md +++ b/op-guide/ansible-deployment.md @@ -56,7 +56,7 @@ Ansible 是一款自动化运维工具,[TiDB-Ansible](https://github.com/pingc ## 在中控机上创建 tidb 用户,并生成 ssh key -以 `root` 用户登录中控机, 执行以下命令 +以 `root` 用户登录中控机,执行以下命令 创建 `tidb` 用户 @@ -77,7 +77,7 @@ Ansible 是一款自动化运维工具,[TiDB-Ansible](https://github.com/pingc tidb ALL=(ALL) NOPASSWD: ALL ``` -生成 ssh key: 执行 `su` 命令从 `root` 用户切换到 `tidb` 用户下,创建 `tidb` 用户 ssh key, 提示 `Enter passphrase` 时直接回车即可。执行成功后,ssh 私钥文件为 `/home/tidb/.ssh/id_rsa`, ssh 公钥文件为 `/home/tidb/.ssh/id_rsa.pub`。 +生成 ssh key: 执行 `su` 命令从 `root` 用户切换到 `tidb` 用户下,创建 `tidb` 用户 ssh key, 提示 `Enter passphrase` 时直接回车即可。执行成功后,ssh 私钥文件为 `/home/tidb/.ssh/id_rsa`, ssh 公钥文件为 `/home/tidb/.ssh/id_rsa.pub`。 ``` # su - tidb @@ -127,7 +127,7 @@ $ git clone https://github.com/pingcap/tidb-ansible.git ## 在中控机器上安装 Ansible 及其依赖 -以 `tidb` 用户登录中控机, 请务必按以下方式通过 pip 安装 Ansible 及其相关依赖的指定版本,否则会有兼容问题。安装完成后,可通过 `ansible --version` 查看 Ansible 版本。目前 release-2.0 及 master 版本兼容 Ansible 2.4 及 Ansible 2.5 版本,Ansible 及相关依赖版本记录在 `tidb-ansible/requirements.txt` 文件中。 +以 `tidb` 用户登录中控机,请务必按以下方式通过 pip 安装 Ansible 及其相关依赖的指定版本,否则会有兼容问题。安装完成后,可通过 `ansible --version` 查看 Ansible 版本。目前 release-2.0 及 master 版本兼容 Ansible 2.4 及 Ansible 2.5 版本,Ansible 及相关依赖版本记录在 `tidb-ansible/requirements.txt` 文件中。 ```bash $ cd /home/tidb/tidb-ansible @@ -138,7 +138,7 @@ $ git clone https://github.com/pingcap/tidb-ansible.git ## 在中控机上配置部署机器 ssh 互信及 sudo 规则 -以 `tidb` 用户登录中控机, 将你的部署目标机器 IP 添加到 `hosts.ini` 文件 `[servers]` 区块下。 +以 `tidb` 用户登录中控机,将你的部署目标机器 IP 添加到 `hosts.ini` 文件 `[servers]` 区块下。 ``` $ cd /home/tidb/tidb-ansible @@ -182,7 +182,7 @@ $ ansible-playbook -i hosts.ini deploy_ntp.yml -k 部署目标机器数据盘请格式化成 ext4 文件系统,挂载时请添加 nodelalloc 和 noatime 挂载参数。`nodelalloc` 是必选参数,否则 Ansible 安装时检测无法通过,noatime 是可选建议参数。 -> 如果你的数据盘已经格式化成 ext4 并挂载, 可先执行 `umount` 命令卸载,从编辑 `/etc/fstab` 文件步骤开始执行, 添加挂载参数重新挂载即可。 +> 如果你的数据盘已经格式化成 ext4 并挂载,可先执行 `umount` 命令卸载,从编辑 `/etc/fstab` 文件步骤开始执行,添加挂载参数重新挂载即可。 ``` # umount /dev/nvme0n1 @@ -236,7 +236,7 @@ UUID=c51eb23b-195c-4061-92a9-3fad812cc12f /data1 ext4 defaults,nodelalloc,noatim # mount -a ``` -执行以下命令,如果文件系统为 ext4, 并且挂载参数中包含 nodelalloc 表示生效: +执行以下命令,如果文件系统为 ext4,并且挂载参数中包含 nodelalloc 表示生效: ``` # mount -t ext4 @@ -245,7 +245,7 @@ UUID=c51eb23b-195c-4061-92a9-3fad812cc12f /data1 ext4 defaults,nodelalloc,noatim ## 分配机器资源,编辑 inventory.ini 文件 -以 `tidb` 用户登录中控机, `inventory.ini` 文件路径为 `/home/tidb/tidb-ansible/inventory.ini`。 +以 `tidb` 用户登录中控机, `inventory.ini` 文件路径为 `/home/tidb/tidb-ansible/inventory.ini`。 > **注:** 请使用内网 IP 来部署集群。 @@ -495,7 +495,7 @@ TiKV1-1 ansible_host=172.16.10.4 deploy_dir=/data1/deploy | PD | pd_peer_port | 2380 | PD 集群节点间通信端口 | | Pump | pump_port | 8250 | Pump 通信端口 | | Prometheus | prometheus_port | 9090 | Prometheus 服务通信端口 | -| Pushgateway | pushgateway_port | 9091 | TiDB, TiKV, PD 监控聚合和上报端口 | +| Pushgateway | pushgateway_port | 9091 | TiDB, TiKV, PD 监控聚合和上报端口 | | Node_exporter | node_exporter_port | 9100 | TiDB 集群每个节点的系统信息上报通信端口 | | Blackbox_exporter | blackbox_exporter_port | 9115 | Blackbox_exporter 通信端口,用于 TiDB 集群端口监控 | | Grafana | grafana_port | 3000 | Web 监控服务对外服务和客户端(浏览器)访问端口 | diff --git a/op-guide/ansible-operation.md b/op-guide/ansible-operation.md index 1322d90f0e0c..3322e45c2480 100644 --- a/op-guide/ansible-operation.md +++ b/op-guide/ansible-operation.md @@ -7,7 +7,7 @@ category: deployment ## 启动集群 -此操作会按顺序启动整个 TiDB 集群所有组件(包括 PD、TiDB、TiKV 等组件和监控组件)。 +此操作会按顺序启动整个 TiDB 集群所有组件(包括 PD、TiDB、TiKV 等组件和监控组件)。 ``` $ ansible-playbook start.yml @@ -15,7 +15,7 @@ $ ansible-playbook start.yml ## 关闭集群 -此操作会按顺序关闭整个 TiDB 集群所有组件(包括 PD、TiDB、TiKV 等组件和监控组件)。 +此操作会按顺序关闭整个 TiDB 集群所有组件(包括 PD、TiDB、TiKV 等组件和监控组件)。 ``` $ ansible-playbook unsafe_cleanup.yml diff --git a/op-guide/offline-ansible-deployment.md b/op-guide/offline-ansible-deployment.md index 50be59ff345a..40afdd1658ad 100644 --- a/op-guide/offline-ansible-deployment.md +++ b/op-guide/offline-ansible-deployment.md @@ -123,7 +123,7 @@ category: deployment 1. `ansible-playbook local_prepare.yml` 该 playbook 不需要再执行。 -2. Grafana Dashboard 上的 Report 按钮可用来生成 PDF 文件, 此功能依赖 `fontconfig` 包, 如需使用该功能,请下载 [fontconfig 离线安装包](https://download.pingcap.org/fontconfig-rpms.el7.tar.gz) 上传至 grafana_servers 机器安装。 +2. Grafana Dashboard 上的 Report 按钮可用来生成 PDF 文件,此功能依赖 `fontconfig` 包,如需使用该功能,请下载 [fontconfig 离线安装包](https://download.pingcap.org/fontconfig-rpms.el7.tar.gz) 上传至 grafana_servers 机器安装。 ``` $ tar -xzvf fontconfig-rpms.el7.tar.gz diff --git a/op-guide/recommendation.md b/op-guide/recommendation.md index 51af137c3c76..c930a706e798 100644 --- a/op-guide/recommendation.md +++ b/op-guide/recommendation.md @@ -72,7 +72,7 @@ TiDB 作为开源分布式 NewSQL 数据库,其正常运行需要网络环境 | Pump | 8250 | Pump 通信端口 | | Drainer | 8249 | Drainer 通信端口 | | Prometheus | 9090 | Prometheus 服务通信端口 | -| Pushgateway | 9091 | TiDB, TiKV, PD 监控聚合和上报端口 | +| Pushgateway | 9091 | TiDB,TiKV,PD 监控聚合和上报端口 | | Node_exporter | 9100 | TiDB 集群每个节点的系统信息上报通信端口 | | Blackbox_exporter | 9115 | Blackbox_exporter 通信端口,用于 TiDB 集群端口监控 | | Grafana | 3000 | Web 监控服务对外服务和客户端(浏览器)访问端口 | @@ -81,4 +81,4 @@ TiDB 作为开源分布式 NewSQL 数据库,其正常运行需要网络环境 ## 客户端 Web 浏览器要求 -TiDB 提供了基于 Prometheus 和 Grafana 技术平台作为 TiDB 分布式数据库集群的可视化监控数据展现方案。建议用户采用高版本的微软 IE, Google Chrome,Mozilla Firefox 访问 Grafana 监控入口。 +TiDB 提供了基于 Prometheus 和 Grafana 技术平台作为 TiDB 分布式数据库集群的可视化监控数据展现方案。建议用户采用高版本的微软 IE,Google Chrome,Mozilla Firefox 访问 Grafana 监控入口。 From c71e98c5620e84fdee89a866ac747b75abcc129b Mon Sep 17 00:00:00 2001 From: Louis Date: Tue, 19 Jun 2018 18:03:45 +0800 Subject: [PATCH 09/11] fix format --- README.md | 4 ++-- op-guide/ansible-deployment-rolling-update.md | 8 ++++---- op-guide/ansible-deployment-scale.md | 16 +++++++--------- op-guide/ansible-deployment.md | 12 ++++++------ op-guide/offline-ansible-deployment.md | 2 +- 5 files changed, 20 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 3db8f1c6058b..bcbc2ef610f5 100755 --- a/README.md +++ b/README.md @@ -94,7 +94,7 @@ + 扩容缩容 - [使用 Ansible 扩容缩容](op-guide/ansible-deployment-scale.md) - [集群扩容缩容方案](op-guide/horizontal-scale.md) - + [升级] + + 升级 - [升级组件版本](op-guide/ansible-deployment-rolling-update.md#升级组件版本) - [TiDB 2.0 升级操作指南](op-guide/tidb-v2-upgrade-guide.md) - [性能调优](op-guide/tune-tikv.md) @@ -151,7 +151,7 @@ - [一面数据](http://t.cn/RT9r5di) - [凤凰网](http://t.cn/RHRQfNT) - [猿辅导](http://t.cn/RTKnKSX) -  - [Mobikok](http://t.cn/Rm1F6lg) + - [Mobikok](http://t.cn/Rm1F6lg) - [二维火](http://t.cn/R8bXM2f) - [客如云](http://t.cn/R1wSEJH) - [Ping++](http://t.cn/RE5xYKn) diff --git a/op-guide/ansible-deployment-rolling-update.md b/op-guide/ansible-deployment-rolling-update.md index f0726097637b..27a0ee832031 100644 --- a/op-guide/ansible-deployment-rolling-update.md +++ b/op-guide/ansible-deployment-rolling-update.md @@ -46,16 +46,16 @@ category: deployment ### 使用 Ansible 滚动升级 -- 滚动升级 TiKV 节点(只升级 TiKV 服务) +- 滚动升级 PD 节点(只升级单独 PD 服务) ``` - $ ansible-playbook rolling_update.yml --tags=tikv + $ ansible-playbook rolling_update.yml --tags=pd ``` -- 滚动升级 PD 节点(只升级单独 PD 服务) +- 滚动升级 TiKV 节点(只升级 TiKV 服务) ``` - $ ansible-playbook rolling_update.yml --tags=pd + $ ansible-playbook rolling_update.yml --tags=tikv ``` - 滚动升级 TiDB 节点(只升级单独 TiDB 服务,如果 TiDB 集群开启了 binlog,升级 TiDB 服务时会升级 pump) diff --git a/op-guide/ansible-deployment-scale.md b/op-guide/ansible-deployment-scale.md index 7ff050b618e1..55785e43e6e7 100644 --- a/op-guide/ansible-deployment-scale.md +++ b/op-guide/ansible-deployment-scale.md @@ -180,9 +180,7 @@ TiDB 集群可以在不影响线上服务的情况下进行扩容和缩容。 `{deploy_dir}/scripts/start_pd.sh` 4. 使用 `pd-ctl` 检查新节点是否添加成功: - `/home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.16.10.1:2379"` - - > 注: `pd-ctl` 命令用于查询 PD 节点的数量。 + `/home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.16.10.1:2379" -d member` 5. 滚动升级整个集群: @@ -265,14 +263,14 @@ TiDB 集群可以在不影响线上服务的情况下进行扩容和缩容。 1. 使用 `pd-ctl` 从集群中移除节点: 1. 查看 node9 节点的 store id: - `./pd-ctl -u "http://172.16.10.1:2379" -d store` + `/home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.16.10.1:2379" -d store` 2. 从集群中移除 node9,假如 store id 为 10: - `./pd-ctl -u "http://172.16.10.1:2379" -d store delete 10` + `/home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.16.10.1:2379" -d store delete 10` 2. 使用 Grafana 或者 `pd-ctl` 检查节点是否下线成功(下线需要一定时间,下线节点的状态变为 Tombstone 就说明下线成功了): - ./pd-ctl -u "http://172.16.10.1:2379" -d store 10 + /home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.16.10.1:2379" -d store 10 3. 下线成功后,停止 node9 上的服务: @@ -341,14 +339,14 @@ TiDB 集群可以在不影响线上服务的情况下进行扩容和缩容。 1. 使用 `pd-ctl` 从集群中移除节点: 1. 查看 node2 节点的 name: - `./pd-ctl -u "http://172.16.10.1:2379" -d member` + `/home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.16.10.1:2379" -d member` 2. 从集群中移除 node2,假如 name 为 pd2: - `./pd-ctl -u "http://172.16.10.1:2379" -d member delete name pd2` + `/home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.16.10.1:2379" -d member delete name pd2` 2. 使用 Grafana 或者 `pd-ctl` 检查节点是否下线成功(PD 下线会很快,结果中没有 node2 节点信息即为下线成功): - ./pd-ctl -u "http://172.16.10.1:2379" -d member + /home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.16.10.1:2379" -d member 3. 下线成功后,停止 node2 上的服务: diff --git a/op-guide/ansible-deployment.md b/op-guide/ansible-deployment.md index 1f3883bfb439..7d24962e59f4 100644 --- a/op-guide/ansible-deployment.md +++ b/op-guide/ansible-deployment.md @@ -12,7 +12,7 @@ Ansible 是一款自动化运维工具,[TiDB-Ansible](https://github.com/pingc 本部署工具可以通过配置文件设置集群拓扑,完成以下各项运维工作: - 初始化操作系统参数 -- 部署 TiDB 集群(包括 PD、TiDB、TiKV 等组件和监控组件) +- 部署 TiDB 集群(包括 PD、TiDB、TiKV 等组件和监控组件) - [启动集群](ansible-operation.md#启动集群) - [关闭集群](ansible-operation.md#关闭集群) - [变更组件配置](ansible-deployment-rolling-update.md#变更组件配置) @@ -26,7 +26,7 @@ Ansible 是一款自动化运维工具,[TiDB-Ansible](https://github.com/pingc 1. 部署目标机器若干 - 建议 4 台及以上,TiKV 至少 3 实例,且与 TiDB、PD 模块不位于同一主机,详见[部署建议](recommendation.md)。 - - 推荐安装 CentOS 7.3 及以上版本 Linux 操作系统,x86_64 架构(amd64)。 + - 推荐安装 CentOS 7.3 及以上版本 Linux 操作系统,x86_64 架构 (amd64)。 - 机器之间内网互通。 > **注:使用 Ansible 方式部署时,TiKV 及 PD 节点数据目录所在磁盘请使用 SSD 磁盘,否则无法通过检测。** 如果仅验证功能,建议使用 [Docker Compose 部署方案](docker-compose.md)单机进行测试。 @@ -34,7 +34,7 @@ Ansible 是一款自动化运维工具,[TiDB-Ansible](https://github.com/pingc 2. 部署中控机一台: - 中控机可以是部署目标机器中的某一台。 - - 推荐安装 CentOS 7.3 及以上版本 Linux 操作系统(默认包含 Python 2.7)。 + - 推荐安装 CentOS 7.3 及以上版本 Linux 操作系统(默认包含 Python 2.7)。 - 该机器需开放外网访问,用于下载 TiDB 及相关软件安装包。 ## 在中控机上安装系统依赖包 @@ -109,7 +109,7 @@ The key's randomart image is: 以 `tidb` 用户登录中控机并进入 `/home/tidb` 目录。 -使用以下命令从 Github [TiDB-Ansible 项目](https://github.com/pingcap/tidb-ansible) 上下载 TiDB-Ansible 相应版本,默认的文件夹名称为 `tidb-ansible`,以下为各版本下载示例,版本选择可以咨询官方。 +使用以下命令从 Github [TiDB-Ansible 项目](https://github.com/pingcap/tidb-ansible)上下载 TiDB-Ansible 相应版本,默认的文件夹名称为 `tidb-ansible`,以下为各版本下载示例,版本选择可以咨询官方。 下载 2.0 GA 版本: @@ -245,7 +245,7 @@ UUID=c51eb23b-195c-4061-92a9-3fad812cc12f /data1 ext4 defaults,nodelalloc,noatim ## 分配机器资源,编辑 inventory.ini 文件 -以 `tidb` 用户登录中控机, `inventory.ini` 文件路径为 `/home/tidb/tidb-ansible/inventory.ini`。 +以 `tidb` 用户登录中控机,`inventory.ini` 文件路径为 `/home/tidb/tidb-ansible/inventory.ini`。 > **注:** 请使用内网 IP 来部署集群。 @@ -370,7 +370,7 @@ location_labels = ["host"] - 推荐设置:实例数*参数值 = CPU_Vcores * 0.8。 3. 如果多个 TiKV 实例部署在同一块物理磁盘上,需要修改 `conf/tikv.yml` 中的 `capacity` 参数: - - `capacity` = (磁盘总容量 - 日志占用容量) / TiKV 实例数量,例如 "100GB" + - `capacity` = 磁盘总容量 / TiKV 实例数量,例如 "100GB" ### inventory.ini 变量调整 diff --git a/op-guide/offline-ansible-deployment.md b/op-guide/offline-ansible-deployment.md index 40afdd1658ad..29477d31a2dd 100644 --- a/op-guide/offline-ansible-deployment.md +++ b/op-guide/offline-ansible-deployment.md @@ -80,7 +80,7 @@ category: deployment 2. 下载 tidb-ansible - 使用以下命令从 Github [TiDB-Ansible 项目](https://github.com/pingcap/tidb-ansible) 上下载 TiDB-Ansible 相应版本,默认的文件夹名称为 `tidb-ansible`,以下为各版本下载示例,版本选择可以咨询官方。 + 使用以下命令从 Github [TiDB-Ansible 项目](https://github.com/pingcap/tidb-ansible)上下载 TiDB-Ansible 相应版本,默认的文件夹名称为 `tidb-ansible`,以下为各版本下载示例,版本选择可以咨询官方。 下载 2.0 GA 版本: ``` From a72c5a6fa351fd1941e0a1a8cd4ece07f7d5659e Mon Sep 17 00:00:00 2001 From: Louis Date: Tue, 19 Jun 2018 19:10:07 +0800 Subject: [PATCH 10/11] op-guide: remove binary-deployment --- README.md | 3 +- op-guide/ansible-deployment-rolling-update.md | 11 + op-guide/ansible-deployment.md | 2 +- op-guide/binary-deployment.md | 450 ------------------ op-guide/horizontal-scale.md | 2 + op-guide/location-awareness.md | 2 +- op-guide/op-guide.md | 3 +- op-guide/tidb-v2-upgrade-guide.md | 4 +- 8 files changed, 19 insertions(+), 458 deletions(-) delete mode 100644 op-guide/binary-deployment.md diff --git a/README.md b/README.md index bcbc2ef610f5..3f8813c5dc10 100755 --- a/README.md +++ b/README.md @@ -92,8 +92,8 @@ - [重要监控指标详解](op-guide/dashboard-overview-info.md) - [组件状态 API & 监控](op-guide/monitor.md) + 扩容缩容 - - [使用 Ansible 扩容缩容](op-guide/ansible-deployment-scale.md) - [集群扩容缩容方案](op-guide/horizontal-scale.md) + - [使用 Ansible 扩容缩容](op-guide/ansible-deployment-scale.md) + 升级 - [升级组件版本](op-guide/ansible-deployment-rolling-update.md#升级组件版本) - [TiDB 2.0 升级操作指南](op-guide/tidb-v2-upgrade-guide.md) @@ -104,7 +104,6 @@ - [数据迁移概述](op-guide/migration-overview.md) - [全量导入](op-guide/migration.md#使用-mydumperloader-全量导入数据) - [增量导入](op-guide/migration.md#使用-syncer-增量导入数据) - - [Binary 部署方案](op-guide/binary-deployment.md) - [故障诊断](trouble-shooting.md) + TiDB 周边工具 - [Syncer](tools/syncer.md) diff --git a/op-guide/ansible-deployment-rolling-update.md b/op-guide/ansible-deployment-rolling-update.md index 27a0ee832031..5f8c7a962a53 100644 --- a/op-guide/ansible-deployment-rolling-update.md +++ b/op-guide/ansible-deployment-rolling-update.md @@ -52,12 +52,23 @@ category: deployment $ ansible-playbook rolling_update.yml --tags=pd ``` +> 如果 PD 实例数大于等于 3,滚动升级 PD leader 实例时,Ansible 会先迁移 PD leader 到其他节点再关闭该实例。 + - 滚动升级 TiKV 节点(只升级 TiKV 服务) ``` $ ansible-playbook rolling_update.yml --tags=tikv ``` +> 滚动升级 TiKV 实例时,Ansible 会迁移 region leader 到其他节点。具体逻辑为:调用 PD API 添加 evict leader scheduler,每 10 秒探测一次该 TiKV 实例 leader_count, 等待 leader_count 降到 10 以下(或 为空)或探测超 12 次后,即两分钟超时后,开始关闭 TiKV 升级,启动成功后再去除 evict leader scheduler,串行操作。 + +> 如中途升级失败,请登录 pd-ctl 执行 scheduler show,查看是否有 evict-leader-scheduler, 如有需手工清除。`{PD_IP}` 和 `{STORE_ID}` 请替换为你的 PD IP 及 TiKV 实例的 store_id 。 + + ``` + $ /home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://{PD_IP}:2379" -d scheduler show + $ curl -X DELETE "http://{PD_IP}:2379/pd/api/v1/schedulers/evict-leader-scheduler-{STORE_ID}" + ``` + - 滚动升级 TiDB 节点(只升级单独 TiDB 服务,如果 TiDB 集群开启了 binlog,升级 TiDB 服务时会升级 pump) ``` diff --git a/op-guide/ansible-deployment.md b/op-guide/ansible-deployment.md index 7d24962e59f4..0e1ad73ccf3f 100644 --- a/op-guide/ansible-deployment.md +++ b/op-guide/ansible-deployment.md @@ -367,7 +367,7 @@ location_labels = ["host"] # low-concurrency: 8 ``` - - 推荐设置:实例数*参数值 = CPU_Vcores * 0.8。 + - 推荐设置:实例数*参数值 = CPU 核数 * 0.8。 3. 如果多个 TiKV 实例部署在同一块物理磁盘上,需要修改 `conf/tikv.yml` 中的 `capacity` 参数: - `capacity` = 磁盘总容量 / TiKV 实例数量,例如 "100GB" diff --git a/op-guide/binary-deployment.md b/op-guide/binary-deployment.md deleted file mode 100644 index 704734a4af82..000000000000 --- a/op-guide/binary-deployment.md +++ /dev/null @@ -1,450 +0,0 @@ ---- -title: TiDB Binary 部署方案详解 -category: deployment ---- - -# TiDB Binary 部署指导 - - -## 概述 - -一个完整的 TiDB 集群包括 PD,TiKV 以及 TiDB。启动顺序依次是 PD,TiKV 以及 TiDB。在关闭数据库服务时,请按照启动的相反顺序进行逐一关闭服务。 - -阅读本章前,请先确保阅读 [TiDB 整体架构](../overview.md#tidb-整体架构)及[部署建议](recommendation.md)。 - -本文档描述了三种场景的二进制部署方式: - -- 快速了解和试用 TiDB,推荐使用[单节点方式快速部署](#单节点方式快速部署)。 - -- 功能性测试 TiDB,推荐使用[功能性测试部署](#功能性测试部署)。 - -- 生产环境使用 TiDB,推荐使用[多节点集群模式部署](#多节点集群模式部署)。 - -## TiDB 组件及默认端口 - -### 1. TiDB 数据库组件(必装) - -| 组件 | 默认端口 | 协议 | 说明 | -| :-- | :-- | :-- | :--------------- | -| ssh | 22 | TCP | sshd 服务 | -| TiDB | 4000 | TCP | 应用及 DBA 工具访问通信端口 | -| TiDB | 10080 | TCP | TiDB 状态信息上报通信端口 | -| TiKV | 20160 | TCP | TiKV 通信端口 | -| PD | 2379 | TCP | 提供 TiDB 和 PD 通信端口 | -| PD | 2380 | TCP | PD 集群节点间通信端口 | - - -### 2. TiDB 数据库组件(选装) - -| 组件 | 默认端口 | 协议 | 说明 | -| :-- | :-- | :-- | :------------------------ | -| Prometheus | 9090| TCP | Prometheus 服务通信端口 | -| Pushgateway | 9091 | TCP | TiDB, TiKV, PD 监控聚合和上报端口 | -| Node_exporter| 9100| TCP | TiDB 集群每个节点的系统信息上报通信端口 | -| Grafana | 3000 | TCP | Web 监控服务对外服务和客户端(浏览器)访问端口 | -| alertmanager | 9093 | TCP | 告警服务端口 | - -## TiDB 安装前系统配置与检查 - -### 操作系统检查 - -| 配置 | 描述 | -| :-- | :---------------------------- | -| 支持平台 | 请查看和了解[系统部署建议](recommendation.md) | -| 文件系统 | TiDB 部署环境推荐使用 ext4 文件系统 | -| Swap 空间 | TiDB 部署推荐关闭 Swap 空间 | -| Disk Block Size | 设置系统磁盘 Block 大小为 4096 | - -### 网络与防火墙 - -| 配置| 描述 | -| :-- | :---------------------------- | -| 防火墙 / 端口 | 请查看 TiDB 所需端口在各个节点之间是否能正常访问 | - - -### 操作系统参数 - -| 配置 | 说明 | -| :-- | :---------------------------- | -| Nice Limits | 系统用户 tidb 的 nice 值设置为缺省值 0 | -| min_free_kbytes | 在 `sysctl.conf` 中关于 `vm.min_free_kbytes` 的设置需要足够高 | -| User Open Files Limit | 对数据库管理员 tidb 的 open 文件数设置为 `1000000` | -| System Open File Limits | 对系统的 open 文件数设置为 `1000000` | -| User Process Limits | 在 `limits.conf` 配置的 tidb 用户的 nproc 为 `4096` | -| Address Space Limits | 在 `limits.conf` 配置的 tidb 用户空间为 `unlimited` | -| File Size Limits | 在 `limits.conf` 配置的 tidb 用户 fsize 为 `unlimited` | -| Disk Readahead | 设置数据磁盘 `readahead` 至少为 `4096` | -| NTP 服务 | 为各个节点配置 NTP 时间同步服务 | -| SELinux | 关闭各个节点的 SELinux 服务 | -| CPU Frequency Scaling | TiDB 推荐打开 CPU 超频 | -| Transparent Hugepages | 针对 Red Hat 7+ 和 CentOS 7+ 系统, Transparent Hugepages 必须被设置为 `always` | -| I/O Scheduler | 设置数据磁盘 I/0 Schedule 设置为 `deadline` 模式 | -| vm.swappiness | 设置 `vm.swappiness = 0` | - -> 注意:请联系系统管理员进行操作系统参数调整。 - -### 数据库运行用户设置 - -| 配置 | 说明 | -| :-- | :---------------------------- | -| LANG 环境设定 | 设置 `LANG = en_US.UTF8` | -| TZ 时区设定 | 确保所有节点的时区 TZ 设置为一样的值 | - -## 创建系统数据库运行账户 - -在 Linux 环境下,在每台安装节点上创建 tidb 作为数据库系统运行用户并设置集群节点之间的 ssh 互信访问。以下是一个示例,具体创建用户与开通 ssh 互信访问请联系系统管理员进行。 - -```bash -# useradd tidb -# usermod -a -G tidb tidb -# su - tidb -Last login: Tue Aug 22 12:06:23 CST 2017 on pts/2 --bash-4.2$ ssh-keygen -t rsa -Generating public/private rsa key pair. -Enter file in which to save the key (/home/tidb/.ssh/id_rsa): -Created directory '/home/tidb/.ssh'. -Enter passphrase (empty for no passphrase): -Enter same passphrase again: -Your identification has been saved in /home/tidb/.ssh/id_rsa. -Your public key has been saved in /home/tidb/.ssh/id_rsa.pub. -The key fingerprint is: -5a:00:e6:df:9e:40:25:2c:2d:e2:6e:ee:74:c6:c3:c1 tidb@t001 -The key's randomart image is: -+--[ RSA 2048]----+ -| oo. . | -| .oo.oo | -| . ..oo | -| .. o o | -| . E o S | -| oo . = . | -| o. * . o | -| ..o . | -| .. | -+-----------------+ - --bash-4.2$ cd .ssh --bash-4.2$ cat id_rsa.pub >> authorized_keys --bash-4.2$ chmod 644 authorized_keys --bash-4.2$ ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.100 -``` - -## 下载官方 Binary - -TiDB 官方提供了支持 Linux 版本的二进制安装包,官方推荐使用 Redhat 7+、CentOS 7+ 以上版本的操作系统,不推荐在 Redhat 6、CentOS 6 上部署 TiDB 集群。 - -### 操作系统:Linux ( Redhat 7+,CentOS 7+ ) - -执行步骤: - -``` -# 下载压缩包 - -wget http://download.pingcap.org/tidb-latest-linux-amd64.tar.gz -wget http://download.pingcap.org/tidb-latest-linux-amd64.sha256 - -# 检查文件完整性,返回 ok 则正确 -sha256sum -c tidb-latest-linux-amd64.sha256 - -# 解开压缩包 -tar -xzf tidb-latest-linux-amd64.tar.gz -cd tidb-latest-linux-amd64 -``` - -## 单节点方式快速部署 - -在获取 TiDB 二进制文件包后,我们可以在单机上面,运行和测试 TiDB 集群,请按如下步骤依次启动 PD,TiKV,TiDB。 - -> 注意:以下启动各个应用程序组件实例的时候,请选择后台启动,避免前台失效后程序自动退出。 - -步骤一. 启动 PD: - -``` -./bin/pd-server --data-dir=pd \ - --log-file=pd.log -``` - -步骤二. 启动 TiKV: - -``` -./bin/tikv-server --pd="127.0.0.1:2379" \ - --data-dir=tikv \ - --log-file=tikv.log -``` - -步骤三. 启动 TiDB: - -``` -./bin/tidb-server --store=tikv \ - --path="127.0.0.1:2379" \ - --log-file=tidb.log -``` -步骤四. 使用 MySQL 客户端连接 TiDB: - -``` -mysql -h 127.0.0.1 -P 4000 -u root -D test -``` - -## 功能性测试部署 - -如果只是对 TiDB 进行测试,并且机器数量有限,我们可以只启动一台 PD 测试整个集群。 - -这里我们使用四个节点,部署一个 PD,三个 TiKV,以及一个 TiDB,各个节点以及所运行服务信息如下: - -| Name | Host IP | Services | -| :-- | :-- | :------------------- | -| node1 | 192.168.199.113 | PD1, TiDB | -| node2 | 192.168.199.114 | TiKV1 | -| node3 | 192.168.199.115 | TiKV2 | -| node4 | 192.168.199.116 | TiKV3 | - -请按如下步骤依次启动 PD 集群,TiKV 集群以及 TiDB: - -> 注意:以下启动各个应用程序组件实例的时候,请选择后台启动,避免前台失效后程序自动退出。 - -步骤一. 在 node1 启动 PD: - -``` -./bin/pd-server --name=pd1 \ - --data-dir=pd1 \ - --client-urls="http://192.168.199.113:2379" \ - --peer-urls="http://192.168.199.113:2380" \ - --initial-cluster="pd1=http://192.168.199.113:2380" \ - --log-file=pd.log -``` - -步骤二. 在 node2,node3,node4 启动 TiKV: - -``` -./bin/tikv-server --pd="192.168.199.113:2379" \ - --addr="192.168.199.114:20160" \ - --data-dir=tikv1 \ - --log-file=tikv.log - -./bin/tikv-server --pd="192.168.199.113:2379" \ - --addr="192.168.199.115:20160" \ - --data-dir=tikv2 \ - --log-file=tikv.log - -./bin/tikv-server --pd="192.168.199.113:2379" \ - --addr="192.168.199.116:20160" \ - --data-dir=tikv3 \ - --log-file=tikv.log -``` - -步骤三. 在 node1 启动 TiDB: - -``` -./bin/tidb-server --store=tikv \ - --path="192.168.199.113:2379" \ - --log-file=tidb.log -``` -步骤四. 使用 MySQL 客户端连接 TiDB: - -``` -mysql -h 192.168.199.113 -P 4000 -u root -D test -``` - -## 多节点集群模式部署 - -在生产环境中,我们推荐多节点部署 TiDB 集群,首先请参考部署建议。 - -这里我们使用六个节点,部署三个 PD,三个 TiKV,以及一个 TiDB,各个节点以及所运行服务信息如下: - -| Name | Host IP | Services | -| :-- | :-- | :------------------- | -| node1 | 192.168.199.113| PD1, TiDB | -| node2 | 192.168.199.114| PD2 | -| node3 | 192.168.199.115| PD3 | -| node4 | 192.168.199.116| TiKV1 | -| node5 | 192.168.199.117| TiKV2 | -| node6 | 192.168.199.118| TiKV3 | - -请按如下步骤依次启动 PD 集群,TiKV 集群以及 TiDB: - -步骤一 . 在 node1,node2,node3 依次启动 PD: - -``` -./bin/pd-server --name=pd1 \ - --data-dir=pd1 \ - --client-urls="http://192.168.199.113:2379" \ - --peer-urls="http://192.168.199.113:2380" \ - --initial-cluster="pd1=http://192.168.199.113:2380,pd2=http://192.168.199.114:2380,pd3=http://192.168.199.115:2380" \ - -L "info" \ - --log-file=pd.log - -./bin/pd-server --name=pd2 \ - --data-dir=pd2 \ - --client-urls="http://192.168.199.114:2379" \ - --peer-urls="http://192.168.199.114:2380" \ - --initial-cluster="pd1=http://192.168.199.113:2380,pd2=http://192.168.199.114:2380,pd3=http://192.168.199.115:2380" \ - -L "info" \ - --log-file=pd.log - -./bin/pd-server --name=pd3 \ - --data-dir=pd3 \ - --client-urls="http://192.168.199.115:2379" \ - --peer-urls="http://192.168.199.115:2380" \ - --initial-cluster="pd1=http://192.168.199.113:2380,pd2=http://192.168.199.114:2380,pd3=http://192.168.199.115:2380" \ - -L "info" \ - --log-file=pd.log -``` - -步骤二. 在 node4,node5,node6 启动 TiKV: - -``` -./bin/tikv-server --pd="192.168.199.113:2379,192.168.199.114:2379,192.168.199.115:2379" \ - --addr="192.168.199.116:20160" \ - --data-dir=tikv1 \ - --log-file=tikv.log - -./bin/tikv-server --pd="192.168.199.113:2379,192.168.199.114:2379,192.168.199.115:2379" \ - --addr="192.168.199.117:20160" \ - --data-dir=tikv2 \ - --log-file=tikv.log - -./bin/tikv-server --pd="192.168.199.113:2379,192.168.199.114:2379,192.168.199.115:2379" \ - --addr="192.168.199.118:20160" \ - --data-dir=tikv3 \ - --log-file=tikv.log -``` - -步骤三. 在 node1 启动 TiDB: - -``` -./bin/tidb-server --store=tikv \ - --path="192.168.199.113:2379,192.168.199.114:2379,192.168.199.115:2379" \ - --log-file=tidb.log - -``` - -步骤四. 使用 MySQL 客户端连接 TiDB: - -``` -mysql -h 192.168.199.113 -P 4000 -u root -D test -``` - -> **注意:** -> -> - 在生产环境中启动 TiKV 时,建议使用 `--config` 参数指定配置文件路径,如果不设置这个参数,TiKV 不会读取配置文件。同样,在生产环境中部署 PD 时,也建议使用 `--config` 参数指定配置文件路径。 -> - TiKV 调优参见:[TiKV 性能参数调优](tune-tikv.md)。 -> - 如果使用 nohup 在生产环境中启动集群,需要将启动命令放到一个脚本文件里面执行,否则会出现因为 Shell 退出导致 nohup 启动的进程也收到异常信号退出的问题,具体参考进程异常退出。 - -## TiDB 监控和告警环境安装 - -安装部署监控和告警环境的系统信息如下: - -| Name | Host IP | Services | -| :-- | :-- | :------------- | -| node1 | 192.168.199.113 | node_export, pushgateway, Prometheus, Grafana | -| node2 | 192.168.199.114 | node_export | -| node3 | 192.168.199.115 | node_export | -| node4 | 192.168.199.116 | node_export | - -### 获取二进制包 - -``` -# 下载压缩包 -wget https://github.com/prometheus/prometheus/releases/download/v1.5.2/prometheus-1.5.2.linux-amd64.tar.gz -wget https://github.com/prometheus/node_exporter/releases/download/v0.14.0-rc.2/node_exporter-0.14.0-rc.2.linux-amd64.tar.gz -wget https://grafanarel.s3.amazonaws.com/builds/grafana-4.1.2-1486989747.linux-x64.tar.gz -wget https://github.com/prometheus/pushgateway/releases/download/v0.3.1/pushgateway-0.3.1.linux-amd64.tar.gz - -# 解开压缩包 -tar -xzf prometheus-1.5.2.linux-amd64.tar.gz -tar -xzf node_exporter-0.14.0-rc.2.linux-amd64.tar.gz -tar -xzf grafana-4.1.2-1486989747.linux-x64.tar.gz -tar -xzf pushgateway-0.3.1.linux-amd64.tar.gz -``` - -### 启动监控服务 - -### 在 node1,node2,node3,node4 启动 `node_exporter`: - -``` -$cd node_exporter-0.14.0-rc.2.linux-amd64 - -#启动 node_exporter 服务 -./node_exporter --web.listen-address=":9100" \ - --log.level="info" -``` - -### 在 node1 启动 pushgateway: - -``` -$cd pushgateway-0.3.1.linux-amd64 - -#启动 pushgateway 服务 -./pushgateway \ - --log.level="info" \ - --web.listen-address=":9091" -``` - -### 在 node1 启动 Prometheus: - -``` -$cd prometheus-1.5.2.linux-amd64 - -# 修改配置文件 - -vi prometheus.yml - -... -global: - scrape_interval: 15s # By default, scrape targets every 15 seconds. - evaluation_interval: 15s # By default, scrape targets every 15 seconds. - # scrape_timeout is set to the global default (10s). - labels: - cluster: 'test-cluster' - monitor: "prometheus" - -scrape_configs: - - job_name: 'overwritten-cluster' - scrape_interval: 3s - honor_labels: true # don't overwrite job & instance labels - static_configs: - - targets: ['192.168.199.113:9091'] - - - job_name: "overwritten-nodes" - honor_labels: true # don't overwrite job & instance labels - static_configs: - - targets: - - '192.168.199.113:9100' - - '192.168.199.114:9100' - - '192.168.199.115:9100' - - '192.168.199.116:9100' -... - -# 启动 Prometheus: -./prometheus \ - --config.file="/data1/tidb/deploy/conf/prometheus.yml" \ - --web.listen-address=":9090" \ - --web.external-url="http://192.168.199.113:9090/" \ - --log.level="info" \ - --storage.local.path="/data1/tidb/deploy/data.metrics" \ - --storage.local.retention="360h0m0s" -``` - -### 在 node1 启动 Grafana: - -``` -cd grafana-4.1.2-1486989747 - -#编辑配置文件 - -vi grafana.ini - -... - -# The http port to use -http_port = 3000 - -# The public facing domain name used to access grafana from a browser -domain = 192.168.199.113 - -... - -#启动 Grafana 服务 -./bin/grafana-server \ - --homepath="/data1/tidb/deploy/opt/grafana" \ - --config="/data1/tidb/deploy/opt/grafana/conf/grafana.ini" -``` diff --git a/op-guide/horizontal-scale.md b/op-guide/horizontal-scale.md index e850ba180c85..a4ed832bc43b 100644 --- a/op-guide/horizontal-scale.md +++ b/op-guide/horizontal-scale.md @@ -9,6 +9,8 @@ category: deployment TiDB 集群可以在不影响线上服务的情况下动态进行扩容和缩容。 +> 如果使用 Ansible 部署 TiDB 集群,请参考[使用 Ansible 扩容缩容](ansible-deployment-scale.md)。 + 下面分别介绍如果增加或者删除 PD,TiKV 以及 TiDB 的节点。 下面用到的 pd-ctl 文档可以参考 [pd-control](../tools/pd-control.md)。 diff --git a/op-guide/location-awareness.md b/op-guide/location-awareness.md index 7537ddfbab07..1c988a01b308 100644 --- a/op-guide/location-awareness.md +++ b/op-guide/location-awareness.md @@ -9,7 +9,7 @@ category: deployment PD 能够根据 TiKV 集群的拓扑结构进行调度,使得 TiKV 的容灾能力最大化。 -阅读本章前,请先确保阅读 [Binary 部署方案](binary-deployment.md) 和 [Docker 部署方案](docker-deployment.md)。 +阅读本章前,请先确保阅读 [Ansible 部署方案](ansible-deployment.md) 和 [Docker 部署方案](docker-deployment.md)。 ## TiKV 上报拓扑信息 diff --git a/op-guide/op-guide.md b/op-guide/op-guide.md index dda84b848233..4985247ab2e1 100644 --- a/op-guide/op-guide.md +++ b/op-guide/op-guide.md @@ -14,7 +14,6 @@ category: deployment - [Ansible 部署方案 (强烈推荐)](ansible-deployment.md) - [离线 Ansible 部署方案](offline-ansible-deployment.md) - [Docker 部署方案](docker-deployment.md) -- [Binary 部署方案](binary-deployment.md) - [跨机房部署方案](location-awareness.md) ## 配置集群 @@ -30,8 +29,8 @@ category: deployment ## 扩容缩容 -- [使用 Ansible 扩容缩容](ansible-deployment-scale.md) - [集群扩容缩容方案](horizontal-scale.md) +- [使用 Ansible 扩容缩容](ansible-deployment-scale.md) ## 升级 diff --git a/op-guide/tidb-v2-upgrade-guide.md b/op-guide/tidb-v2-upgrade-guide.md index 27bf6956ea26..2e510d6eba3e 100644 --- a/op-guide/tidb-v2-upgrade-guide.md +++ b/op-guide/tidb-v2-upgrade-guide.md @@ -85,11 +85,11 @@ readpool: # low-concurrency: 8 ``` -单机多 TiKV 实例情况下,需要修改这三个参数,推荐设置:`实例数 * 参数值 = CPU_Vcores * 0.8`。 +单机多 TiKV 实例情况下,需要修改这三个参数,推荐设置:`实例数 * 参数值 = CPU 核数 * 0.8`。 ## 下载 TiDB 2.0 binary 到中控机 -确认 `tidb-ansible/inventory.ini` 文件中 `tidb_version = v2.0.0`,然后执行以下命令下载 TiDB 2.0 binary 到中控机。 +确认 `tidb-ansible/inventory.ini` 文件中 `tidb_version = v2.0.4`,然后执行以下命令下载 TiDB 2.0 binary 到中控机。 ``` $ ansible-playbook local_prepare.yml From c54701275308af6a0190d37984792d88dd39a0b6 Mon Sep 17 00:00:00 2001 From: Louis Date: Tue, 19 Jun 2018 19:14:41 +0800 Subject: [PATCH 11/11] fix format --- op-guide/ansible-deployment-rolling-update.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/op-guide/ansible-deployment-rolling-update.md b/op-guide/ansible-deployment-rolling-update.md index 5f8c7a962a53..295eee35f171 100644 --- a/op-guide/ansible-deployment-rolling-update.md +++ b/op-guide/ansible-deployment-rolling-update.md @@ -51,8 +51,8 @@ category: deployment ``` $ ansible-playbook rolling_update.yml --tags=pd ``` - -> 如果 PD 实例数大于等于 3,滚动升级 PD leader 实例时,Ansible 会先迁移 PD leader 到其他节点再关闭该实例。 + + 如果 PD 实例数大于等于 3,滚动升级 PD leader 实例时,Ansible 会先迁移 PD leader 到其他节点再关闭该实例。 - 滚动升级 TiKV 节点(只升级 TiKV 服务) @@ -60,14 +60,14 @@ category: deployment $ ansible-playbook rolling_update.yml --tags=tikv ``` -> 滚动升级 TiKV 实例时,Ansible 会迁移 region leader 到其他节点。具体逻辑为:调用 PD API 添加 evict leader scheduler,每 10 秒探测一次该 TiKV 实例 leader_count, 等待 leader_count 降到 10 以下(或 为空)或探测超 12 次后,即两分钟超时后,开始关闭 TiKV 升级,启动成功后再去除 evict leader scheduler,串行操作。 + 滚动升级 TiKV 实例时,Ansible 会迁移 region leader 到其他节点。具体逻辑为:调用 PD API 添加 evict leader scheduler,每 10 秒探测一次该 TiKV 实例 leader_count, 等待 leader_count 降到 10 以下(或 为空)或探测超 12 次后,即两分钟超时后,开始关闭 TiKV 升级,启动成功后再去除 evict leader scheduler,串行操作。 -> 如中途升级失败,请登录 pd-ctl 执行 scheduler show,查看是否有 evict-leader-scheduler, 如有需手工清除。`{PD_IP}` 和 `{STORE_ID}` 请替换为你的 PD IP 及 TiKV 实例的 store_id 。 + 如中途升级失败,请登录 pd-ctl 执行 scheduler show,查看是否有 evict-leader-scheduler, 如有需手工清除。`{PD_IP}` 和 `{STORE_ID}` 请替换为你的 PD IP 及 TiKV 实例的 store_id 。 - ``` - $ /home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://{PD_IP}:2379" -d scheduler show - $ curl -X DELETE "http://{PD_IP}:2379/pd/api/v1/schedulers/evict-leader-scheduler-{STORE_ID}" - ``` + ``` + $ /home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://{PD_IP}:2379" -d scheduler show + $ curl -X DELETE "http://{PD_IP}:2379/pd/api/v1/schedulers/evict-leader-scheduler-{STORE_ID}" + ``` - 滚动升级 TiDB 节点(只升级单独 TiDB 服务,如果 TiDB 集群开启了 binlog,升级 TiDB 服务时会升级 pump)