美文网首页
部署金融级数据库之分布式关系型数据库TIDB

部署金融级数据库之分布式关系型数据库TIDB

作者: 隔岸坐看云卷云舒 | 来源:发表于2019-03-25 17:02 被阅读0次

必备条件1:四台centos7.3版本,此版本最稳定
必备条件2:固定虚拟机ip,在Nginx之负载均衡有介绍
必备条件3:宿主机内存超过32G

在中控机上安装系统依赖包
以 root 用户登录中控机

,执行以下命令:

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

在中控机上创建 tidb 用户,并生成 ssh key
以 root 用户登录中控机,执行以下命令

创建 tidb 用户

useradd -m -d /home/tidb tidb

设置 tidb 用户密码

passwd tidb

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

visudo
tidb ALL=(ALL) NOPASSWD: ALL

如图:

WechatIMG426.jpeg

添加完毕 :wq保存

执行 su 命令从 root 用户切换到 tidb 用户下,生产ssh key

[root@localhost ~]# su tidb
[tidb@localhost root]$ ls
ls: 无法打开目录.: 权限不够
[tidb@localhost root]$ cd /home/
[tidb@localhost home]$ ls
tidb  www  wwwlogs  wwwroot
[tidb@localhost home]$ cd tidb
[tidb@localhost ~]$ 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:U+9r/iOhTSGRc0xWMdYx/hBLBDsmYU0EAphLMA3pcHc tidb@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|  += o... +O*+O=.|
|. o.* E  o+o++.+o|
| + o o    o++ o. |
|  . .    ..+.. ..|
|        S  ...  .|
|         . .o    |
|           +..   |
|          . +..  |
|           ooo.. |
+----[SHA256]-----+
[tidb@localhost ~]$ 

以tidb身份进入/home/tidb目录

[tidb@localhost home]$ cd tidb
[tidb@localhost ~]$ git clone https://github.com/pingcap/tidb-ansible.git
正克隆到 'tidb-ansible'...
remote: Enumerating objects: 33, done.
remote: Counting objects: 100% (33/33), done.
remote: Compressing objects: 100% (22/22), done.
remote: Total 8961 (delta 15), reused 16 (delta 8), pack-reused 8928
接收对象中: 100% (8961/8961), 2.22 MiB | 594.00 KiB/s, done.
处理 delta 中: 100% (5415/5415), done.

安装 Ansible 及其依赖

[tidb@localhost ~]$ cd tidb-ansible/
[tidb@localhost tidb-ansible]$ sudo pip install -r ./requirements.txt

现在应该是这个样子:


WechatIMG427.jpeg

在中控机上配置部署机器 ssh 互信及 sudo 规则
以 tidb 用户登录中控机,将你的部署目标机器 IP 添加到 hosts.ini 文件 [servers] 区块下。

[tidb@localhost tidb-ansible]$ vim hosts.ini

[servers]
192.168.2.101
192.168.2.102
192.168.2.103
192.168.2.104

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

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

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

结果应该是这样:

[tidb@localhost tidb-ansible]$ ansible-playbook -i hosts.ini create_users.yml -u root -k
SSH password: 

PLAY [all] *********************************************************************

TASK [create user] *************************************************************
ok: [192.168.2.102]
ok: [192.168.2.101]
ok: [192.168.2.103]
ok: [192.168.2.104]

TASK [set authorized key] ******************************************************
ok: [192.168.2.102]
ok: [192.168.2.103]
ok: [192.168.2.104]
ok: [192.168.2.101]

TASK [update sudoers file] *****************************************************
ok: [192.168.2.102]
ok: [192.168.2.103]
ok: [192.168.2.104]
ok: [192.168.2.101]

PLAY RECAP *********************************************************************
192.168.2.101              : ok=3    changed=0    unreachable=0    failed=0   
192.168.2.102              : ok=3    changed=0    unreachable=0    failed=0   
192.168.2.103              : ok=3    changed=0    unreachable=0    failed=0   
192.168.2.104              : ok=3    changed=0    unreachable=0    failed=0   

Congrats! All goes well. :-)

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

## TiDB Cluster Part
[tidb_servers]
192.168.2.101

[tikv_servers]
192.168.2.102
192.168.2.103
192.168.2.104

[pd_servers]
192.168.2.102
192.168.2.103
192.168.2.104

[spark_master]

[spark_slaves]

[lightning_server]

[importer_server]

## Monitoring Part
# prometheus and pushgateway servers
[monitoring_servers]
192.168.2.101

[grafana_servers]
192.168.2.101

# node_exporter and blackbox_exporter servers
[monitored_servers]
192.168.2.101
192.168.2.102
192.168.2.103
192.168.2.104

[alertmanager_servers]
192.168.2.101

标准 TiDB 集群需要 6 台机器:

2 个 TiDB 节点
3 个 PD 节点
3 个 TiKV 节点,第一台 TiDB 机器同时用作监控机

但我们就四台,所以PD和tikv交叉使用,再多我的Mac也承受不起生命之重

执行以下命令如果所有 server 返回 tidb 表示 ssh 互信配置成功。

ansible -i inventory.ini all -m shell -a 'whoami'

执行以下命令如果所有 server 返回 root 表示 tidb 用户 sudo 免密码配置成功。

ansible -i inventory.ini all -m shell -a 'whoami' -b

现在应该如图:


WechatIMG429.jpeg

执行 local_prepare.yml playbook,联网下载 TiDB binary 到中控机:

ansible-playbook local_prepare.yml

如图(这步比较慢,如果怕与服务器断开连接可以再开个窗口使用top命令或者下载screen挂载):


WechatIMG430.jpeg

初始化系统环境,修改内核参数

ansible-playbook bootstrap.yml

部署 TiDB 集群软件

ansible-playbook deploy.yml

打开端口3000与4000端口

firewall-cmd --zone=public --add-port=3000/tcp --permanent
firewall-cmd --zone=public --add-port=4000/tcp --permanent
firewall-cmd --reload

启动 TiDB 集群

ansible-playbook start.yml

可能遇到的问题:
在执行部署时,可能会遇到下载缓慢的问题类似:

TASK [local : download other binary] *******************************************
FAILED - RETRYING: download other binary (4 retries left).
FAILED - RETRYING: download other binary (3 retries left).
FAILED - RETRYING: download other binary (2 retries left).
FAILED - RETRYING: download other binary (1 retries left).
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: SSLError: ('The read operation timed out',)
failed: [localhost] (item={u'url': u'https://github.com/prometheus/prometheus/releases/download/v2.2.1/prometheus-2.2.1.linux-amd64.tar.gz', u'version': u'2.2.1', u'name': u'prometheus'}) => {"attempts": 4, "changed": false, "item": {"name": "prometheus", "url": "https://github.com/prometheus/prometheus/releases/download/v2.2.1/prometheus-2.2.1.linux-amd64.tar.gz", "version": "2.2.1"}, "msg": "failed to create temporary content file: ('The read operation timed out',)"}

这个时候不要犹豫,快开启我们程序员的科学上网方式:


WechatIMG431.jpeg WechatIMG433.jpeg

相关文章

  • TiDB(NewSQL)

    1. TiDB介绍 TiDB 是分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理的融合型分布式数据库产...

  • KubeSphere 部署 TiDB 云原生分布式数据库

    TiDB 是 PingCAP 公司自主研发的开源分布式关系型数据库 TiDB,为企业关键业务打造,具备「分布式强一...

  • 常用的一些工具

    关系型数据库 Mysql Pg Oracle Tidb 非关系型数据库 redis mongo memcach 注...

  • TiDB 2.1: Battle-Tested for an U

    TiDB 是由 PingCAP 开发的分布式关系型数据库,今天我们很高兴地推出 TiDB 2.1 正式版,提供更丰...

  • TiDB 3.0 GA,稳定性和性能大幅提升

    作者:段兵 TiDB 是 PingCAP 自主研发的开源分布式关系型数据库,具备商业级数据库的数据可靠性,可用性,...

  • 部署金融级数据库之分布式关系型数据库TIDB

    必备条件1:四台centos7.3版本,此版本最稳定必备条件2:固定虚拟机ip,在Nginx之负载均衡有介绍必备条...

  • TiUP离线镜像源组件管理最佳实践

    TiDB作为一款金融级可用的数据库,应用在很多金融场景中。但为了保证安全,通常整个集群环境都是离线的。集群部署时都...

  • TIDB学习总结

    TIDB介绍 1、什么是TIDB 1.1 TIDB介绍 TiDB 是一个数据库,是一个开源分布式数据库,由Ping...

  • SQL and NoSQL

    SQL数据库被称为关系型数据库(RDBMS),而NoSQL数据库被称为非关系型数据库或分布式数据库。 储存方式 t...

  • MongoDB初体验

    MongoDB是基于分布式文件存储的数据库,介于关系型数据库和非关系型数据库之间,是非关系数据库当中功能最丰富,最...

网友评论

      本文标题:部署金融级数据库之分布式关系型数据库TIDB

      本文链接:https://www.haomeiwen.com/subject/fhkvvqtx.html