环境准备

| 主机   | IP            | 配置(最低要求配置) |
| :----- | ------------- | ------------------ |
| node-1 | 192.168.1.81 | 8核16G |
| node-2 | 192.168.1.160 | 8核16G |
| node-3 | 192.168.1.202 | 8核16G |

自己整理的文档[7天有效期]:

链接:https://pan.baidu.com/s/1MS1YMx2IobyJYkghVqcHrQ
提取码:4osl
复制这段内容后打开百度网盘手机App,操作更方便哦--来自百度网盘超级会员V5的分享

物料包准备

tdsql_full_install_ansible_10.3.14.1.0_D002.zip

TDSQL私有云部署手册 151.doc

每个服务器准备2块额外磁盘用于HDFS

下载地址:

配置要求:

测试环境:

至少需要3台机器来搭建一个最小的TDSQL集群(2台物理机用于DB、1台虚拟机用于调度和运营体系部署)

组件 机器数 机器配置(CPU/内存/磁盘) 备注
zookeeper 1台 虚拟机 2C/4G/100G
keeper 0台 虚拟机 2C/4G/100G 可以与zookeeper同机部署
oss 0台 虚拟机 2C/4G/100G 可以与zookeeper同机部署
DB 2台 物理机 8C/16G/500GSSD
Proxy 0台 物理机 2C/4G/100G 可以与db机器同机部署
monitor 0台 虚拟机 2C/4G/100G 可以与zookeeper同机部署
chitu 0台 虚拟机 2C/4G/100G 可以与zookeeper同机部署
hdfs(可选) 1台 物理机 4C/4G/1T 可选,磁盘容量看具体需求
LVS(可选) 2台 物理机2C/4G/100G 可选
es 1台 虚拟机 2C/4G/100G
kafka 3台 虚拟机 2C/4G/100G 加载java虚拟机的时候会吃掉3个g

正式环境:

组件 机器数 机器配置(CPU/内存/磁盘) 备注
zookeeper 3台/5台 虚拟机8C/16G/500G
keeper 0台 虚拟机8C/16G/500G 可以与oss同机部署
oss 2台 虚拟机8C/16G/500G
DB 3*n台 物理机 32C/64G/1T SSD 一主两备,机器配置看具体需求
Proxy 3台 物理机8C/16G/500G 可以与DB机器同机部署,机器配置看具体需求
monitor 3台 虚拟机 8C/16G/500G 可以与zookeeper同机部署
chitu 2台 虚拟机 8C/16G/500G 可以与zookeeper同机部署
hdfs(可选) 3台 物理机8C/8G/12T 可选,磁盘容量看具体需求
LVS(可选) 2台 物理机8C/16G/500G 可选
kafka(可选) 3台 物理机8C/16G/2T 多源同步组件,万兆网卡
consumer(可选) 1台 物理机8C/16G/500G 多源同步组件,可与kafka混部
es 1台 物理机8C/16G/500G

当前环境规划:

模块 192.168.1.81 192.168.1.160 192.168.1.202
zk Y Y Y
scheduler Y Y
oss Y Y
chitu Y Y
monitor(采集监控) Y Y
db Y Y
proxy Y Y
hdfs Y

TDSQL部署

免密配置

ssh-keygen -f ~/.ssh/id_rsa -N ''
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.81
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.160
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.202

解包

#解包
unzip tdsql_full_install_ansible_10.3.14.1.0_D002.zip #执行pythin脚本安装ansible
cd tdsql_full_install_ansible
python settings/install_ansible.py #格式化数据盘,新建data1目录[所有机器]
mkfs.xfs -f /dev/sdb
mkdir -p /data1
mount /dev/sdb /data1

修改配置:

#vim group_vars/all (修改网卡名和数据库密码)
sed -i 's/netif_name: .*$/netif_name: eth0/' group_vars/all
sed -i 's/tdsql_pass: .*$/tdsql_pass: a+complex+123456/' group_vars/all
sh -x encrypt.sh

修改tdhost文件:

[root@node-1 tdsql_full_install_ansible]# pwd
/root/tdsql_full_install_ansible cat tdsql_hosts
#-------------------------------------------------------------#
[envcheck]
mac1 ansible_ssh_host=192.168.1.81
mac2 ansible_ssh_host=192.168.1.160
mac3 ansible_ssh_host=192.168.1.202 [zk]
zk1 ansible_ssh_host=192.168.1.81
zk2 ansible_ssh_host=192.168.1.202
zk3 ansible_ssh_host=192.168.1.160 [scheduler]
scheduler1 ansible_ssh_host=192.168.1.202
scheduler2 ansible_ssh_host=192.168.1.160 [oss]
oss1 ansible_ssh_host=192.168.1.202
oss2 ansible_ssh_host=192.168.1.160 [chitu]
chitu1 ansible_ssh_host=192.168.1.202
chitu2 ansible_ssh_host=192.168.1.160 [monitor]
monitor1 ansible_ssh_host=192.168.1.202
monitor2 ansible_ssh_host=192.168.1.160 [db]
db1 ansible_ssh_host=192.168.1.202
db2 ansible_ssh_host=192.168.1.160 [proxy]
proxy1 ansible_ssh_host=192.168.1.202
proxy2 ansible_ssh_host=192.168.1.160 [hdfs]
hdfs1 ansible_ssh_host=192.168.1.160 [es]
es1 ansible_ssh_host=192.168.1.81 [newdb]
newdb1 ansible_ssh_host=1.1.1.1
newdb2 ansible_ssh_host=2.2.2.2
newdb3 ansible_ssh_host=3.3.3.3
#-------------------------------------------------------------#

设置tdsql明文密码

#假定我们给tdsql账号设置的明文密码为:a+complex+123456

cat group_vars/all
---
zk_num: 3 #<---填入zk集群的数量,1、3或者5
netif_name: eth0 #<---填入scheduler(ifconfig看到的)网卡的名称
tdsql_pass: a+complex+123456 #<---填入tdsql账号的明文密码
zk_rootdir: /tdsqlzk2 #<---填入tdsql系统在zk上的根路径(一般不改) metadb_ip: 1.1.1.1 #<-----暂时不改动
metadb_port: 15001 #<-----暂时不改动
metadb_ip_bak: 2.2.2.2 #<-----暂时不改动
metadb_port_bak: 15001 #<-----暂时不改动
metadb_user: tdsql_hanlon #<-----暂时不改动
metadb_password: 123456 #<-----暂时不改动 ssh_port: 22 #<-----暂时不改动
hdfs_datadir: /data1/hdfs #<-----暂时不改动 kafka_logdir: /data1/kafka #<-----暂时不改动 es_mem: 8 #<-----暂时不改动
es_log_days: 7 #<-----暂时不改动
es_base_path: /data/application/es-install/es #<-----暂时不改动 tdsql_secret_pass: K2JatUv5llBbMrske/k2YbqC #<-------密文密码,自动更新,切勿手动更改
oc_secret_pass: LGhVs0v5nVxcOLQie/k9bb2I #<-------密文密码,自动更新,切勿手动更改
clouddba_metadb_pass: h5Wyg2Xy #<-------密文密码,自动更新,切勿手动更改 ---
zk_num: 3
netif_name: eth0
tdsql_pass: a+complex+123456
zk_rootdir: /tdsqlzk2 metadb_ip: 1.1.1.1
metadb_port: 15001
metadb_ip_bak: 2.2.2.2
metadb_port_bak: 15001
metadb_user: tdsql_hanlon
metadb_password: 123456 ssh_port: 22
hdfs_datadir: /data1/hdfs kafka_logdir: /data1/kafka es_mem: 8
es_log_days: 7
es_base_path: /data/application/es-install/es tdsql_secret_pass: K2JatUv5llBbMrske/k2YbqC
oc_secret_pass: LGhVs0v5nVxcOLQie/k9bb2I
clouddba_metadb_pass: h5Wyg2Xy

部署

#vim group_vars/all (修改网卡名和数据库密码)
sed -i "s/netif_name:.*/netif_name: eth0/" group_vars/all
sed -i "s/tdsql_pass:.*/tdsql_pass: a+complex+123456/" group_vars/all #安装zk:
#使用tdsql安装的zk
sh -x encrypt.sh
ansible-playbook -i tdsql_hosts part1_site.yml #访问任意节点:
[root@node-1 tdsql_full_install_ansible]# grep chitu tdsql_hosts
[chitu]
chitu1 ansible_ssh_host=192.168.1.202
chitu2 ansible_ssh_host=192.168.1.160

集群配置

集群初始化

添加机房

添加机型规格

proxy机型并非实际用到的 这里随便怎么写都行

添加TS80机型为后续数据库使用的机型,配置如下

mkfs.xfs /dev/sdb
mkdir /data1
mount /dev/sdb /data1 TS80机型配置: 数据磁盘目录:
建议是: /data1/tdengine/data 日志磁盘目录:
建议是: /data1/tdengine/log 安装包目录:
/data/home/tdsql/tdsqlinstall,固定不变 数据库安装目录:
/data/tdsql_run,固定不变 数据磁盘与日志磁盘大小比例为 3:1

设备资源添加

上报网关资源

这里添加了3个网关资源并且对应了2个IDC,在组成网关组的时候可以选择2个IDC取3个服务器

上传DB资源:

192.168.1.81 192.168.1.160 划分到机房1 192.168.1.202划分到机房2 用于组成集群,并设置了3个网关

因为目前两个机房有3台服务器,上报资源时上报了2个DB服务器所以可以从2个机房取2台服务器

开始创建:

初始化完成后直接下一步:

安装完成会直接跳转到登录页面:

http://192.168.1.160/tdsqlpcloud

测试tdsql连接

mysql -utdsqlpcloud -h192.168.1.160 -P15065 -p'123456'

[root@node-1 tdsql_full_install_ansible]# mysql -utdsqlpcloud -h192.168.1.160 -P15065 -p'123456'
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 3648
Server version: 5.7.17-11-V2.0R540D002-20191226-1152-log Source distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]>

测试mysql连接无误,将连接账号密码写入到 group_vars/all 文件中

---
zk_num: 3
netif_name: eth0
tdsql_pass: a+complex+123456
zk_rootdir: /tdsqlzk2 metadb_ip: 192.168.1.160 #主库IP
metadb_port: 15065 #主库端口
metadb_ip_bak: 192.168.1.202 #从库IP
metadb_port_bak: 15065 #从库端口
metadb_user: tdsqlpcloud #数据库连接账号
metadb_password: 123456 #数据库连接密码 ssh_port: 36000
hdfs_datadir: /data2/hdfs,/data3/hdfs,/data4/hdfs kafka_logdir: /data2/kafka,/data3/kafka,/data4/kafka es_mem: 8
es_log_days: 7
es_base_path: /data/application/es-install/es tdsql_secret_pass: S8dfgSoMUjGaUn+EHkm3pA==
oc_secret_pass: TM1QhyoMWT2dWHCCHkm8qA==
clouddba_metadb_pass: h5Wyg2Xy

执行安装part2_site.yml

#安装大约4分钟左右,日志路径/var/log/ansible.log,最终显示failed任务数为0表示安装成功。
sh -x encrypt.sh <---------必须执行,更新密文密码
ansible-playbook -i tdsql_hosts part2_site.yml #找到安装了 scheduler 的服务器并执行:
[root@node-1 tdsql_full_install_ansible]# grep scheduler tdsql_hosts
[scheduler]
scheduler1 ansible_ssh_host=192.168.1.202
scheduler2 ansible_ssh_host=192.168.1.160 # ssh 192.168.1.202
cd /data/application/scheduler/bin
./agent_config --mode modify --option="ocagent_port" --value="8966"
./agent_config --mode modify --option="hadoop_dir" --value=" /data/home/tdsql/hadoop-3.2.1/bin" #执行结果:
[root@node-1 tdsql_full_install_ansible]# ssh 192.168.1.202
Last login: Tue Feb 23 16:57:56 2021 from 192.168.1.81
[root@localhost ~]# cd /data/application/scheduler/bin
[root@localhost bin]# ./agent_config --mode modify --option="ocagent_port" --value="8966"
zookeeper timeout:10000 msec,msg timeout 30000 msec
zookeeper path:/tdsqlzk2/configs/agent@global
zookeeper value:{
"hadoop_dir" : "/data/home/tdsql/hadoop-3.2.1/bin",
"ocagent_port" : "8966"
} operation success!
[root@localhost bin]# ./agent_config --mode modify --option="hadoop_dir" --value=" /data/home/tdsql/hadoop-3.2.1/bin"
zookeeper timeout:10000 msec,msg timeout 30000 msec
zookeeper path:/tdsqlzk2/configs/agent@global
zookeeper value:{
"hadoop_dir" : " /data/home/tdsql/hadoop-3.2.1/bin",
"ocagent_port" : "8966"
} operation success!

安装备用赤兔:

将已初始化的chitu机器上拷贝2个文件到未初始化的chitu机器上,并删除未初始化chitu机器上的crontab,如下:
192.168.1.202 已初始化chitu
192.168.1.160 未初始化chitu (1)在202机器上,拷贝文件到160机器上
scp -p /data/website/tdsqlpcloud/www/config/database.php 192.168.1.160:/data/website/tdsqlpcloud/www/config/
scp -p /data/website/tdsqlpcloud/www/config/install.lock 192.168.1.160:/data/website/tdsqlpcloud/www/config/ (2)删除160机器上nginx用户的crontab
[root@localhost bin]# ssh 192.168.1.160
[root@localhost ~]# cp -a /var/spool/cron/nginx /data/tools/nginx_cron_bak
[root@localhost ~]# rm -f /var/spool/cron/nginx (3)测试,登录205的chitu
http://192.168.1.160/tdsqlpcloud

安装HDFS服务

由于磁盘前面已经添加并格式化过,这里不用操作了

#需要安装hdfs的服务器修改主机名[必须修改,因为我们的主机名存在 - 线 需要改成没有特殊符号的]

#修改 tdsql_hosts 文件,将需要安装hdfs服务的服务器添加上去,这里就添加3台hdfs
vim tdsql_hosts 新增hdfs配置: [hdfs]
hdfs1 ansible_ssh_host=192.168.1.81
hdfs2 ansible_ssh_host=192.168.1.160
hdfs3 ansible_ssh_host=192.168.1.202 #安装hdfs单点[适用于低配服务器]: #执行安装
ansible-playbook -i tdsql_hosts hdfs_single.yml #切换到tdsql用户
su - tdsql #用tdsql用户在hdfs1机器上,格式化namenode
hdfs namenode -format #用tdsql用户在hdfs1机器上,启动namenode和datanode
hdfs --daemon start namenode
hdfs --daemon start datanode #附:用tdsql用户关闭hdfs进程
hdfs --daemon stop datanode
hdfs --daemon stop namenode #安装hdfs高可用安装启动 #在安装时需要保证主机名修改了
#[本文用多点,配置不高就用单点如果hdfs多点,那么zk服务也需要是多点,因为之前配置的zk就是多点,这里就可以继续安装多点hdfs,否则安装单点]: #每台服务器需要主机名不同 设置方法: hostnamectl set-hostname node1
ansible-playbook -i tdsql_hosts hdfs.yml #初始化HDFS:
#用tdsql用户在hdfs1机器,格式化zk
hdfs zkfc -formatZK #用tdsql用户在所有机器,启动journalnode
hdfs --daemon start journalnode #用tdsql用户在hdfs1机器,格式化并启动namenode
hdfs namenode -format
hdfs --daemon start namenode #用tdsql用户在hdfs2机器,格式化namenode
hdfs namenode -bootstrapStandby #------------------------------启动hdfs集群------------------------------#
#用tdsql用户在hdfs1机器,格式化并启动 zk
su - tdsql
hdfs zkfc -formatZK #格式化只能一次 #所有机器启动 journalnode
hdfs --daemon start journalnode #在hdfs1和hdfs2上启动namenode
hdfs --daemon start namenode #在hdfs1和hdfs2上启动zkfc
hdfs --daemon start zkfc #在所有hdfs机器上启动datanode
hdfs --daemon start datanode
#------------------------------启动hdfs集群------------------------------# #------------------------------停止hdfs集群------------------------------#
在所有hdfs机器上关闭datanode
hdfs --daemon stop datanode 在hdfs1和hdfs2上关闭zkfc
hdfs --daemon stop zkfc 在hdfs1和hdfs2上关闭namenode
hdfs --daemon stop namenode 在所有hdfs机器上关闭journalnode
hdfs --daemon stop journalnode
#------------------------------停止hdfs集群------------------------------# # hdfs haadmin -getAllServiceState 命令执行失败尝试:
hdfs --daemon stop namenode
hdfs --daemon stop journalnode
hdfs --daemon start namenode
hdfs --daemon start journalnode
hdfs dfsadmin -report
hdfs haadmin -getAllServiceState

在hdfs集群下查看/tdsqlbackup路径

(7)在hdfs集群下查看/tdsqlbackup路径
用tdsql用户执行以下命令
su - tdsql #查看/tdsqlbackup目录是否已经被自动创建,权限是否是:tdsql supergroup
hadoop fs -ls /
drwxr-xr-x - tdsql supergroup 0 2019-01-02 17:52 /tdsqlbackup #如果目录不在或者权限不对,用下面命令修改:
hadoop fs -mkdir /tdsqlbackup
hadoop fs -chown tdsql.supergroup /tdsqlbackup

检查HDFS端口并补充到 group_vars/all 文件中

如果是3节点的hdfs架构,如上图所示填写namenode节点(一般2个)的50070端口

 /data2/hdfs /data3/hdfs /data4/hdfs
将这些信息填写到all文件中 hdfs_datadir: /data2/hdfs,/data3/hdfs,/data4/hdfs

自动化演练

创建一个分布式实例:

腾讯数据库tdsql部署与验证的更多相关文章

  1. 286万QPS!腾讯云TDSQL打造数据库领域的“超音速战机”

    Bloodhound SSC超音速汽车将陆地极限速度提升到1678公里/小时,号称陆地“超音速战斗机”.无独有偶,同样也在2017年,在英特尔®.腾讯金融云团队的共同见证下,腾讯云数据库TDSQL采用 ...

  2. 腾讯云分布式数据库TDSQL在银行传统核心系统中的应用实践

    本文是腾讯云TDSQL首席架构师张文在腾讯云Techo开发者大会现场的演讲实录,演讲主题是<TDSQL在银行传统核心系统中的应用实践>. 我是TDSQL架构师张文,同时也是TDSQL的开发 ...

  3. 强强联袂!腾讯云TDSQL与国双战略签约,锚定国产数据库巨大市场

    日前,腾讯云计算(北京)有限责任公司与北京国双科技有限公司签署了<国产数据库产品战略合作协议>,双方将在数据库技术方面展开深度合作,通过分布式交易型数据库的联合研发.产品服务体系建设.品牌 ...

  4. 怎样将本地web数据库项目部署到腾讯云服务器上?

    怎样将本地web数据库项目 部署到腾讯云服务器上? 1.本地计算机的工作: 1.1用eclipse或者myeclipse做好一个web项目,可以只做一个数据库的增删改查,本地部署到Tomcat服务器, ...

  5. Greenplum 数据库安装部署(生产环境)

    Greenplum 数据库安装部署(生产环境) 硬件配置: 16 台 IBM X3650, 节点配置:CPU 2 * 8core,内存 128GB,硬盘 16 * 900GB,万兆网卡. 万兆交换机. ...

  6. 腾讯云TDSQL审计原理揭秘

    版权声明:本文由孙勇福原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/244 来源:腾云阁 https://www.qclo ...

  7. 转_Greenplum 数据库安装部署(生产环境)

    Greenplum 数据库安装部署(生产环境) 硬件配置: 16 台 IBM X3650, 节点配置:CPU 2 * 8core,内存 128GB,硬盘 16 * 900GB,万兆网卡. 万兆交换机. ...

  8. SQL Server 2008 数据库镜像部署实例之三 配置见证服务器

    SQL Server 2008 数据库镜像部署实例之三 配置见证服务器 前面已经完成了镜像数据库的配置,并进行那个了故障转移测试.接下来将部署见证服务器,实现自动故障转移. 一.关于见证服务器 1.若 ...

  9. SQL Server 2008 数据库镜像部署实例之二 配置镜像,实施手动故障转移

    SQL Server 2008 数据库镜像部署实例之二 配置镜像,实施手动故障转移 上一篇文章已经为配置镜像数据库做好了准备,接下来就要进入真正的配置阶段 一.在镜像数据库服务器上设置安全性并启动数据 ...

随机推荐

  1. charles(1)解决charles抓包乱码问题

    前言 当使用Charles抓包时,发现数据都是乱码,这时需要安装证书 解决办法 1.点击charles窗口,点击左上角Help-> SSL Proxying -> Install Char ...

  2. Angular写一个Form组件-TagInput

    前端开发少不了和表单打交道; Angular中, 提供了强大的表单的支持, 响应式表单(Reactive Form) 和 模板驱动的表单(Template-driven Form) 的双向数据流给我们 ...

  3. Codeforces Round #672 (Div. 2)

    比赛链接:https://codeforces.com/contest/1420 A. Cubes Sorting 题意 给出一个大小为 $n$ 的数组 $a$,每次只可以交换相邻的两个元素,最多交换 ...

  4. hash应用

    关于HASH ​ 这应该是经常使用的一个算法,因为其预处理后,优秀的\(O(1)\)处理出子串,并且\(O(1)\)比较,大快人心,而且写法简单,令人心情愉悦; ​ 但是其空间复杂度较高,并且有玄学模 ...

  5. poj 2653 线段相交裸题(解题报告)

    #include<stdio.h> #include<math.h> const double eps=1e-8; int n; int cmp(double x) { if( ...

  6. Codeforces Round #690 (Div. 3) E2. Close Tuples (hard version) (数学,组合数)

    题意:给你一长度为\(n\)的序列(可能含有相等元素),你要找到\(m\)个位置不同的元素使得\(max(a_{i-1},a_{i_2},...,a_{i_m})-min(a_{i-1},a_{i_2 ...

  7. Codeforces Round #594 (Div. 2) C. Ivan the Fool and the Probability Theory (思维,递推)

    题意:给你一个\(n\)x\(m\)的矩阵,需要在这些矩阵中涂色,每个格子可以涂成黑色或者白色,一个格子四周最多只能有\(2\)个和它颜色相同的,问最多有多少种涂色方案. 题解:首先我们考虑一维的情况 ...

  8. Codeforces #640 div4 F~G (构造二连弹)

    题意:求一个只由\(01\)组成的字符串,使得它所有长度为\(2\)的子串满足:每对子串的数字和为\(0,1,2\)的个数为\(a,b,c\). 题解:我们先考虑子串数字和为\(1\)的情况,构造出一 ...

  9. 营业额统计 HYSBZ - 1588

    营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额.分析营业情况 ...

  10. 同时拿到BATJMD的Offer是怎样的一种体验?

    写在前面 又到了收割Offer的季节,你准备好了吗?曾经的我,横扫各个大厂的Offer.还是那句话:进大厂临时抱佛脚是肯定不行的,一定要注重平时的总结和积累,多思考,多积累,多总结,多复盘,将工作经历 ...