1.最近浏览到一个比较新的分布式数据库Tidb,开源看起来比较牛的样子,一时手痒就动手试试部署

2.参考官方 Ansible 离线方式部署 :https://pingcap.com/docs-cn/op-guide/offline-ansible-deployment/

3.环境:Win7+VirtualBox 虚拟机 ,网络环境:Win7 可以通过代理上网,6台虚拟机统一采用 hostonly 方式,

本来如果通过 可以上网的linux 机器作为下载机器和中控机器的话不需要这么没法,但内网代理各种限制,一致没搞通 linux 虚拟机上网

只能通过windows 下载需要的 gz 文件。

4.先从虚拟机创建开始:

新建虚拟机

下一步下一步到选择存储虚拟磁盘的位置 可以默认创建一个专用的存储目录 这里存在 F:\ROS

下 

选择下载好的 CentOS7 ISO 文件

安装过程记得添加用户 tidb 密码 tidb 同时服用管理员权限

时区选择:上海 这个在NTP 时间同步时会遇到

root  root 密码设置

新建tidb 用户 密码 tidb 静待安装完成

我们用第一个 hostonly 网络

修改网络配置 固定第一台中控机 IP地址为 192.168.56.100

这个百度上有我就不在一步一步操作了

基本配置完成后测试下网络是否可以用 远程工具远程

下一步就是通过 virtualbox 的磁盘复制方式来复制虚拟机

点开

虚拟介质管理

选择刚创建的虚拟机 

复制 选择存储目录 重命名即可 至少需要复制出5台

类似如此

新建虚拟机

下一步下一步到选择虚拟磁盘是选择刚刚复制的vdi 文件

其他虚拟机类同

进去每个虚拟器设置为不同的IP地址,并测试网络是否互通

如果不通需要关闭防火墙

systemctl stop firewalld

CentOS 7 系统 Ansible 离线安装方式:

下载 Ansible离线安装包 ,上传至中控机。

参考官方文档 下载 Ansible

http://download.pingcap.org/ansible-2.4-rpms.el7.tar.gz

通过FTP软件 上传 ansible 压缩包

放在 rpm 这个文件夹下

参考官方文档

# tar -xzvf ansible-2.4-rpms.el7.tar.gz

# cd ansible-2.4-rpms.el7

# rpm -ivh PyYAML*rpm libyaml*rpm python-babel*rpm python-backports*rpm python-backports-ssl_match_hostname*rpm python-cffi*rpm python-enum34*rpm python-httplib2*rpm python-idna*rpm python-ipaddress*rpm python-jinja2*rpm python-markupsafe*rpm python-paramiko*rpm python-passlib*rpm python-ply*rpm python-pycparser*rpm python-setuptools*rpm python-six*rpm python2-cryptography*rpm python2-jmespath*rpm python2-pyasn1*rpm sshpass*rpm

# rpm -ivh ansible-2.4.2.0-.el7.noarch.rpm

解压安装

输入命令提示版本信息

下载 tidb-ansible

git clone https://github.com/pingcap/tidb-ansible.git

官方说明

以上方法联网下载,但我们内网linux 因为代理无法下载 所以需要手动下载文件

使用 VSCode 打开 下载的 tidb-ansible 解压包

我一开始不知道有这个文件,是通过命令提示错误信息自己搜索在网上下载的,但因为最后一个 tiSpark 的 jar 包文件实在是没搜到在哪下载,才想到

到这个配置中搜索 tispark -*.jar 包,才找到这个文件的

我贴出来吧:

---

third_party_packages:
- name: prometheus
version: 2.0.
url: "https://github.com/prometheus/prometheus/releases/download/v2.0.0/prometheus-2.0.0.linux-amd64.tar.gz"
- name: alertmanager
version: 0.9.
url: "https://github.com/prometheus/alertmanager/releases/download/v0.9.1/alertmanager-0.9.1.linux-amd64.tar.gz"
- name: node_exporter
version: 0.15.
url: "https://github.com/prometheus/node_exporter/releases/download/v0.15.2/node_exporter-0.15.2.linux-amd64.tar.gz"
- name: blackbox_exporter
version: 0.11.
url: "https://github.com/prometheus/blackbox_exporter/releases/download/v0.11.0/blackbox_exporter-0.11.0.linux-amd64.tar.gz"
- name: pushgateway
version: 0.4.
url: "https://github.com/prometheus/pushgateway/releases/download/v0.4.0/pushgateway-0.4.0.linux-amd64.tar.gz"
- name: grafana
version: 4.6.
url: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.3.linux-x64.tar.gz" third_party_packages_under_gfw:
- name: prometheus
version: 2.0.
url: "http://download.pingcap.org/prometheus-2.0.0.linux-amd64.tar.gz"
- name: alertmanager
version: 0.9.
url: "http://download.pingcap.org/alertmanager-0.9.1.linux-amd64.tar.gz"
- name: node_exporter
version: 0.15.
url: "http://download.pingcap.org/node_exporter-0.15.2.linux-amd64.tar.gz"
- name: pushgateway
version: 0.4.
url: "http://download.pingcap.org/pushgateway-0.4.0.linux-amd64.tar.gz"
- name: grafana
version: 4.6.
url: "http://download.pingcap.org/grafana-4.6.3.linux-x64.tar.gz"
- name: blackbox_exporter
version: 0.11.
url: "https://download.pingcap.org/blackbox_exporter-0.11.0.linux-amd64.tar.gz" tispark_packages:
- name: spark-2.1.-bin-hadoop2..tgz
version: 2.1.
url: http://download.pingcap.org/spark-2.1.1-bin-hadoop2.7.tgz
checksum: "sha256:372ac4f73221c07696793101007a4f19e31566d1f0d9bd0e5205b6fb5b45bfc2"
- name: tispark-SNAPSHOT-jar-with-dependencies.jar
url: http://download.pingcap.org/tispark-0.1.0-SNAPSHOT-jar-with-dependencies.jar
- name: tispark-sample-data.tar.gz
version: 0.1.-beta
url: http://download.pingcap.org/tispark-sample-data.tar.gz

所有的依赖项都在这个配置模板中了

我们在 tidb-ansible 解压文件夹下新建

将我们下载的gz 包都放进去

新建资源文件夹:

这个下面只有一个文件夹

这些事其他需要的文件加压后 放在这个 文件夹下

剩下的就是配置 ini 文件了

参考官网 地址:https://pingcap.com/docs-cn/op-guide/ansible-deployment/#%E5%88%86%E9%85%8D%E6%9C%BA%E5%99%A8%E8%B5%84%E6%BA%90%E7%BC%96%E8%BE%91-inventoryini-%E6%96%87%E4%BB%B6

我的配置是如下:

## TiDB Cluster Part
[tidb_servers]
192.168.56.101

[tikv_servers]
192.168.56.103
192.168.56.104
192.168.56.105

[pd_servers]
192.168.56.102

[spark_master]

[spark_slaves]

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

[grafana_servers]
192.168.56.100

# node_exporter and blackbox_exporter servers
[monitored_servers]
192.168.56.101
192.168.56.102
192.168.56.103
192.168.56.104
192.168.56.105
192.168.56.100

## Binlog Part
[pump_servers:children]
tidb_servers

## Group variables
[pd_servers:vars]
# location_labels = ["zone","rack","host"]

## Global variables
[all:vars]
deploy_dir = /home/tidb/deploy

## Connection
# ssh via normal user
ansible_user = tidb

# ssh via root:
# ansible_user = root
ansible_become = true
ansible_become_user = tidb

cluster_name = test-cluster

tidb_version = v1.0.8

# deployment methods, [binary, docker]
deployment_method = binary

# process supervision, [systemd, supervise]
process_supervision = systemd

# timezone of deployment region
timezone = Asia/Shanghai
set_timezone = True

enable_firewalld = False
# check NTP service
enable_ntpd = False
set_hostname = False

## binlog trigger
enable_binlog = False
# zookeeper address of kafka cluster, example:
# zookeeper_addrs = "192.168.0.11:2181,192.168.0.12:2181,192.168.0.13:2181"
zookeeper_addrs = ""

# store slow query log into seperate file
enable_slow_query_log = False

# KV mode
deploy_without_tidb = False

其中

需要修改为 False ,这个折腾半天,因为连接不到外网的同步时间server 始终没同步成功,但忽然想起来应该不用这个也可以的。

如果有条件的话尽量还是同步好。

hosts.ini 文件修改

[servers]
192.168.56.101
192.168.56.102
192.168.56.103
192.168.56.104
192.168.56.105 [all:vars]
username = tidb
ntp_server = 192.168.56.100

最后就是把整个文件夹上传到 56.100 这台中控机器

下一步通过 ansible 来安装

中间省略了 ssh 免密登录这个可以参考官网说明

部署 TiDB 集群软件

ansible-playbook deploy.yml

启动 TiDB 集群

ansible-playbook start.yml

中间遇到phthon2 识别不了 多次添加授权等方法都不行。
最后还是修改了 start.yml 文件

原始的应该是这样 

修改后就能成功启动了,OK

这个是监控的网页

这个是mysql 客户测试 注意需要你本机安装mysql 客户端

OK All Done.


最新文章

  1. JavaScript检测文件上传的类型与大小
  2. 跟我一起云计算(4)——lucene
  3. Swift基础语法学习总结
  4. Http 状态码对照表
  5. hdu 1102 Constructing Roads Kruscal
  6. EXTJS 4.2 资料 控件之 xtype: "fieldcontainer",追加html
  7. NSLog用法,打印日志
  8. Number Sequence (HDU 1711)
  9. 1、下载LInux版的tomcat6
  10. JAXP Dom 案例 对xml文件进行增加 查找 删除
  11. [原][飞行仿真]helios与dcs world安装,详尽教程
  12. jjava:将jar包引入环境变量的一个骚操作以及因此搞出来的扑街问题
  13. java获取当前日期所在的周的周一,并以周一为一周开始
  14. Java基础(二)面向对象(上)
  15. linux搭建node环境
  16. 洗礼灵魂,修炼python(52)--爬虫篇—【转载】爬虫工具列表
  17. C++复习:函数模板和类模板
  18. .NET处理Json的几种方式
  19. Cloudify介绍
  20. 1、svn架设、基本命令

热门文章

  1. PHP如何根据数组中的键值进行排序
  2. [ActionScript 3.0] 常用的正则表达式
  3. sed--行编辑器命令
  4. 博弈论教程(A Course in Game Theory)摘录
  5. leetcode-137-Single Number II-第二种解法
  6. QQ第三方登陆示例
  7. Hibernate框架基础
  8. java面向对象概念1
  9. springAOP实现方法运行时间统计
  10. rest-assured之认证授权(Authentication)