虚拟机环境下 使用 Ansible 安装部署 TiDB (单机)

服务启动命令

1、执行初始化命令

[tidb@localhost tidb-ansible-master]$ sudo ansible-playbook bootstrap.yml -k -K

[sudo] password for tidb:  要输入tidb用户的密码

SSH password:要输入tidb用户的密码

SUDO password[defaults to SSH password]:要输入tidb用户的密码

2、安装服务

[tidb@localhost tidb-ansible-master]$ sudo ansible-playbook -i inventory.ini deploy.yml -k -K

3、启停服务

(1) 启动所有服务

[tidb@localhost tidb-ansible-master]$ sudo ansible-playbook -i inventory.ini start.yml -k -K

(2) 停止所有服务

[tidb@localhost tidb-ansible-master]$ sudo ansible-playbook -i inventory.ini stop.yml

(3) 附录

[tidb@localhost tidb-ansible-master]$ sudo ansible-playbook -i inventory.ini xxx.yml -k -K

-k 执行之后需要输入 ssh 连接用户的密码,如果做了中控机到所有节点的互信,则不需要此参数

-K 执行之后需要输入 sudo 所需的密码,如果使用 root 用户或者 sudo 无需密码,则不需要此参数

4、tidb登录测试

mysql -u root -h 172.17.1.141 -P 4000

初始时 tidb的mysql数据库root用户密码为空

5、浏览器中访问监控台

http://127.0.0.1:3000        登录用户密码 admin/admin





TiDB 作为一个分布式数据库,在多个节点分别配置安装服务会相当繁琐,为了简化操作以及方便管理,我们选用自动化工具 Ansible 来批量的安装配置以及部署 TiDB。下面我们来介绍如何使用 Ansible 来部署 TiDB。

作者:PingCAP  申砾|2017-06-09 14:22

链接:https://www.jianshu.com/p/239e2cf3a94f

來源:简书

本次部署为一台虚拟机部署,不包含其他机器,在一台机器上进行PD   KV  DB部署

一、背景知识


TiDB 作为一个分布式数据库,在多个节点分别配置安装服务会相当繁琐,为了简化操作以及方便管理,使用自动化工具来批量部署成为了一个很好的选择。

Ansible 是基于 Python 研发的自动化运维工具,糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能,而且使用简单,仅需在管理工作站上安装 Ansible 程序配置被管控主机的 IP 信息,被管控的主机无客户端。基于以上原因,我们选用自动化工具 Ansible 来批量的安装配置以及部署 TiDB。

下面我们来介绍如何使用 Ansible 来部署 TiDB。

二、TiDB 安装环境配置如下

操作系统使用 CentOS7.2 或者更高版本,文件系统使用 EXT4。

说明:低版本的操作系统(例如 CentOS6.6 )和 XFS 文件系统会有一些内核 Bug,会影响性能,我们不推荐使用。

我们选择使用 3 个 PD、2 个 TiDB、3 个 TiKV,这里简单说一下为什么这样部署。

对于 PD 。PD 本身是一个分布式系统,由多个节点构成一个整体,并且同时有且只有一个主节点对外提供服务。各个节点之间通过选举算法来确定主节点,选举算法要求节点个数是奇数个 (2n+1) ,1 个节点的风险比较高,所以我们选择使用 3 个节点。

对于 TiKV 。TiDB 底层使用分布式存储,我们推荐使用奇数 (2n+1) 个备份,挂掉 n 个备份之后数据仍然可用。使用 1 备份或者 2 备份的话,有一个节点挂掉就会造成一部分数据不可用,所以我们选择使用 3 个节点、设置 3 个备份 (默认值)。

对于TiDB 。我们的 TiDB 是无状态的,现有集群的 TiDB 服务压力大的话,可以在其他节点直接增加 TiDB 服务,无需多余的配置。我们选择使用两个 TiDB,可以做 HA 和负载均衡。

当然如果只是测试集群的话,完全可以使用一个 PD 、一个 TiDB 、三个 TiKV (少于三个的话需要修改备份数量)

三、在下载安装TIDB之前,中控机上部署的软件

1.部署中控机一台:

Python 2.6 或 Python 2.7,安装有 Ansible 2.3 版本或以上版本。

依赖 Python Jinja2 及 MarkupSafe 指定版本模块: pip install Jinja2==2.7.2 MarkupSafe==0.11

可通过 ssh 登录目标机器,支持密码登录或 ssh authorized_key 登录。

中控机可以是部署目标机器中的某一台,该机器需开放外网访问,并且安装 curl 软件包,用于下载 binary。

2、安装ansible



2.1 安装python2.7

一般系统都会自带,没有安装的可以自行下载安装

下载setuptools

wge thttps://pypi.python.org/packages/source/s/setuptools/setuptools-7.0.zip

解压安装

unzip setuptools-7.0.zip

cd setuptools-7.0/

python setup.pyinstall


2.2 下载pip

wgethttps://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9

解压安装

tar zxf pip-9.0.1.tar.gz

cd pip-9.0.1/

python setup.pyinstall

cryptography 版本要大于1.5  目前是2.1.4


2.3 下载ansible

yum install ansible -y


三、下载 TiDB 安装包并解压


#创建目录用来存放 ansible 安装包

mkdir /root/workspace               

#切换目录

cd /root/workspace                   

#下载安装包

wget https://github.com/pingcap/tidb-ansible/archive/master.zip   

#解压压缩包到当前目录下

unzip master.zip                     

#查看安装包结构,主要内容说明如下

cd tidb-ansible-master && ls 

四、部分内容含义


五、修改配置文件

主要配置集群节点的分布情况,以及安装路径。

会在 tidb_servers 组中的机器上安装 TiDB 服务(其他类似),默认会将所有服务安装到变量 deploy_dir 路径下。


#将要安装 TiDB 服务的节点

[tidb_servers]

192.168.1.102

192.168.1.103

#将要安装 TiKV 服务的节点

[tikv_servers]

192.168.1.104

192.168.1.105

192.168.1.106

#将要安装 PD 服务的节点

[pd_servers]

192.168.1.101

192.168.1.102

192.168.1.103

#将要安装 Promethues 服务的节点

# Monitoring Part

[monitoring_servers]

192.168.1.101

#将要安装 Grafana 服务的节点

[grafana_servers]

192.168.1.101

#将要安装 Node_exporter 服务的节点

[monitored_servers:children]

tidb_servers

tikv_servers

pd_servers

[all:vars]

#服务安装路径,每个节点均相同,根据实际情况配置

deploy_dir= /home/tidb/deploy

## Connection

#方式一:使用 root 用户安装

# ssh via root:

#ansible_user=root

#ansible_become=true

#ansible_become_user=tidb

#方式二:使用普通用户安装(需要有 sudo 权限)

# ssh via normal user

ansible_user=tidb

#集群的名称,自定义即可

cluster_name=test-cluster

# misc

enable_elk=False

enable_firewalld=False

enable_ntpd=False

# binlog trigger

#是否开启 pump,pump 生成 TiDB 的 binlog

#如果有从此 TiDB 集群同步数据的需求,可以改为 True 开启

enable_binlog=False

安装过程可以分为 root 用户安装和普通用户安装两种方式。有 root 用户当然是最好的,修改系统参数、创建目录等不会涉及到权限不够的问题,能够直接安装完成。 但是有些环境不会直接给 root 权限,这种场景就需要通过普通用户来安装。为了配置简便,我们建议所有节点都使用相同的普通用户;为了满足权限要求,我们还需要给这个普通用户 sudo 权限。 下面介绍两种安装方式的详细过程,安装完成之后需要手动启动服务。

sudo权限问题


在root用户下#  visudo   

插入  tidb    ALL=(ALL)    ALL   一行

然后保存退出  wq!

然后给用户赋权   


[root@localhost ~]# chmod 755 /usr/libexec/sudoers.so

[root@localhost ~]# ll /usr/libexec


1. 使用 root 用户安装

(1) 下载 Binary 包到 downloads 目录下,并解压拷贝到 resources/bin 下,之后的安装过程就是使用的 resources/bin 下的二进制程序

ansible-playbook -i inventory.ini local_prepare.yml

(2) 初始化集群各个节点。会检查 inventory.ini 配置文件、Python 版本、网络状态、操作系统版本等,并修改一些内核参数,创建相应的目录。

修改配置文件如下

## Connection

# ssh via root:

ansible_user=root

#ansible_become=true

ansible_become_user=tidb

# ssh via normal user

#ansible_user=tidb

执行初始化命令

ansible-playbook -i inventory.ini bootstrap.yml -k   #ansible-playboo命令说明请见附录

(3) 安装服务。该步骤会在服务器上安装相应的服务,并自动设置好配置文件和所需脚本。

修改配置文件如下

## Connection

# ssh via root:

ansible_user=root

ansible_become=true

ansible_become_user=tidb

# ssh via normal user

#ansible_user=tidb

执行安装命令

ansible-playbook -i inventory.ini deploy.yml -k

2. 使用普通用户安装

(1) 下载 Binary 包到中控机

ansible-playbook -i inventory.ini local_prepare.yml

(2) 初始化集群各个节点。

修改配置文件如下

## Connection

# ssh via root:

#ansible_user=root

#ansible_become=true

#ansible_become_user=tidb

# ssh via normal user

ansible_user=tidb

执行初始化命令

ansible-playbook -i inventory.ini bootstrap.yml -k -K

(3) 安装服务

ansible-playbook -i inventory.ini deploy.yml -k -K

六、启停服务

(1) 启动所有服务

ansible-playbook -i inventory.ini start.yml -k

(2) 停止所有服务

ansible-playbook -i inventory.ini stop.yml

(3) 附录

ansible-playbook -i inventory.ini xxx.yml -k -K

-k 执行之后需要输入 ssh 连接用户的密码,如果做了中控机到所有节点的互信,则不需要此参数

-K 执行之后需要输入 sudo 所需的密码,如果使用 root 用户或者 sudo 无需密码,则不需要此参数

【本文是51CTO专栏作者“PingCAP”的原创文章,转载请联系作者本人获取授权】

戳这里,看该作者更多好文

【编辑推荐】

初创公司如何实现Ansible多机房自动部署发布

黄东旭DTCC2017演讲实录:When TiDB Meets Kubernetes

三篇文章了解 TiDB 技术内幕——说存储

三篇文章了解 TiDB 技术内幕——说计算

三篇文章了解 TiDB 技术内幕 —— 谈调度

【责任编辑:IT疯TEL:(010)68476606】

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容

  • ansible介绍ansible常用模块使用playbooktemplates,模板条件测试和循环迭代roles,...
    哈喽别样阅读 1,410评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,656评论 18 139
  • ansible 系统架构 ansible简介ansible是新出现的自动化运维工具,ansible是一个配置管理和...
    运维阿文阅读 9,586评论 1 52
  • ###### Ansible总结 ##### 运维工作: 系统安装(物理机、虚拟机)-->程序包安装、配置、服务启...
    二郎5阅读 2,029评论 0 4
  • Day 1原文文本 【翻译划线段落】 Dollars will findbuyers hard to find i...
    Sharon667阅读 181评论 0 0