打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
TDSQL 安装部署(多图预警)

墨墨导读:分布式数据库(Tencent Distributed SQL,TDSQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。

数据技术嘉年华,十周年盛大开启,点我立即报名!大会以“自研·智能·新基建——云和数据促创新 生态融合新十年” 为主题,相邀数据英雄,总结过往十年历程与成绩,展望未来十年趋势与目标!


TDSQL按照官方要求配置相对较高,现通过4台虚拟机演示TDSQL的全套部署。如有不对的地方请指证 wx:moonstar00

机器数量规划:

tdsql 规划机器如下:4台(CPU:2core/MEM:8G/HDD:50G) ,内存至少5G以上 ,CPU 至少2C以上, 否则检查通不过

TDSQL安装部署

1.设主机名hostnamectl set-hostname huyidb01hostnamectl set-hostname huyidb02hostnamectl set-hostname huyidb03hostnamectl set-hostname huyidb04
2.配置主机名vim /etc/hosts10.85.10.51 huyidb0110.85.10.52 huyidb0210.85.10.53 huyidb0310.85.10.54 huyidb04
3.设置时间同步以huyidb01为主时钟mount /dev/cdrom /mntyum -y install ntp* [root@huyidb01 ~]# vim /etc/ntp.conf#同步地址server 127.127.1.0 iburstsystemctl restart ntpd.service[root@huyidb02 ~]# vim /etc/ntp.confserver 10.85.10.51restrict 10.85.10.51 mask 255.255.240.0 nomodify notrapsystemctl restart ntpd.servicentpdate -u 10.85.10.51[root@huyidb03 ~]# vim /etc/ntp.confserver 10.85.10.51restrict 10.85.10.51 mask 255.255.240.0 nomodify notrapsystemctl restart ntpd.servicentpdate -u 10.85.10.51[root@huyidb04 ~]# vim /etc/ntp.confserver 10.85.10.51restrict 10.85.10.51 mask 255.255.240.0 nomodify notrapsystemctl restart ntpd.servicentpdate -u 10.85.10.51 4.配置免密登录(管理机 110.85.10.54 上操作)ssh-keygen -t rsa --这里不用输入密码,免密码登录ssh-copy-id 10.85.10.51 --下面要输入远程主机的密码ssh-copy-id 10.85.10.52ssh-copy-id 10.85.10.53ssh-copy-id 10.85.10.54#这里是通过IP copy的 ,测试的时候也只要用IP 例:ssh 10.85.10.51
5.准备数据目录路径(所有机器)mkdir -p /mysql/datamkdir -p /mysql/log

安装ANSIBLE

unzip tdsql_full_install_ansible.zipcd tdsql_full_install_ansiblepython settings/install_ansible.py

配置tdsql_hosts

vi /soft/tdsql_full_install_ansible/tdsql_hosts[envcheck]tdsql_huyidb01 ansible_ssh_host=10.85.10.51tdsql_huyidb02 ansible_ssh_host=10.85.10.52tdsql_huyidb03 ansible_ssh_host=10.85.10.53tdsql_huyidb04 ansible_ssh_host=10.85.10.54[zk]tdsql_zk1 ansible_ssh_host=10.85.10.51tdsql_zk2 ansible_ssh_host=10.85.10.52tdsql_zk3 ansible_ssh_host=10.85.10.53[scheduler]tdsql_scheduler1 ansible_ssh_host=10.85.10.52tdsql_scheduler2 ansible_ssh_host=10.85.10.53[oss]tdsql_oss1 ansible_ssh_host=10.85.10.52tdsql_oss2 ansible_ssh_host=10.85.10.53[chitu]tdsql_chitu1 ansible_ssh_host=10.85.10.52tdsql_chitu2 ansible_ssh_host=10.85.10.53[monitor]tdsql_monitor1 ansible_ssh_host=10.85.10.52tdsql_monitor1 ansible_ssh_host=10.85.10.53[db]tdsql_db1 ansible_ssh_host=10.85.10.51tdsql_db2 ansible_ssh_host=10.85.10.52tdsql_db3 ansible_ssh_host=10.85.10.53[proxy]tdsql_proxy1 ansible_ssh_host=10.85.10.51tdsql_proxy2 ansible_ssh_host=10.85.10.52tdsql_proxy3 ansible_ssh_host=10.85.10.53[hdfs]tdsql_hdfs1 ansible_ssh_host=10.85.10.54[lvs]tdsql_lvs1 ansible_ssh_host=10.85.10.52tdsql_lvs2 ansible_ssh_host=10.85.10.53[kafka]tdsql_kafka1 ansible_ssh_host=10.85.10.51tdsql_kafka2 ansible_ssh_host=10.85.10.52tdsql_kafka3 ansible_ssh_host=10.85.10.53[consumer]tdsql_consumer1 ansible_ssh_host=10.85.10.54[es]tdsql_es1 ansible_ssh_host=10.85.10.54[newdb]tdsql_newdb1 ansible_ssh_host=1.1.1.1tdsql_newdb2 ansible_ssh_host=2.2.2.2tdsql_newdb3 ansible_ssh_host=3.3.3.3

修改 ansible 变量

vi /soft/tdsql_full_install_ansible/group_vars/allzk_num: 3netif_name: ens38 #<---填入 scheduler(ifconfig 看到的)网卡的名称tdsql_pass: a+complex+passwordzk_rootdir: /tdsqlzk

下面参数后面安装相关模块时在调整

metadb_ip: 10.120.109.204metadb_port: 15001metadb_ip_bak: 10.120.109.205metadb_port_bak: 15001metadb_user: hanlonmetadb_password: hanlonssh_port: 36000hdfs_datadir: /data2/hdfs,/data3/hdfs,/data4/hdfskafka_logdir: /data2/kafka,/data3/kafka,/data4/kafkaes_mem: 8es_log_days: 7es_base_path: /data/application/es-install/estdsql_secret_pass: K2JatUv5llBbMrske/k2YbqCoc_secret_pass: LGhVs0v5nVxcOLQie/k9bb2Iclouddba_metadb_pass: h5Wyg2Xy

执行安装 part1_site.yml

sh encrypt.sh <---------必须执行,更新密文密码ansible-playbook -i tdsql_hosts part1_site.yml# 执行了近20多分钟 ,执行完成要无failed=0PLAY RECAP ********************************************************************************************************************************************************chitu1 : ok=20 changed=19 unreachable=0 failed=0chitu2 : ok=20 changed=19 unreachable=0 failed=0db1 : ok=13 changed=12 unreachable=0 failed=0db2 : ok=13 changed=12 unreachable=0 failed=0db3 : ok=13 changed=12 unreachable=0 failed=0huyidb01 : ok=30 changed=19 unreachable=0 failed=0huyidb02 : ok=27 changed=16 unreachable=0 failed=0huyidb03 : ok=27 changed=16 unreachable=0 failed=0huyidb04 : ok=27 changed=17 unreachable=0 failed=0oss1 : ok=14 changed=11 unreachable=0 failed=0oss2 : ok=14 changed=11 unreachable=0 failed=0proxy1 : ok=13 changed=10 unreachable=0 failed=0proxy2 : ok=13 changed=10 unreachable=0 failed=0proxy3 : ok=13 changed=10 unreachable=0 failed=0scheduler1 : ok=25 changed=23 unreachable=0 failed=0scheduler2 : ok=22 changed=20 unreachable=0 failed=0zk1 : ok=19 changed=17 unreachable=0 failed=0zk2 : ok=19 changed=17 unreachable=0 failed=0zk3   : ok=19   changed=17   unreachable=0 failed=0

错误:

TASK [zk_cluster : upload the template file zk_configure.py to the dst host] ************************************************************************************************************************************************************fatal: [tdsql_zk1]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: \"hostvars['zk1']\" is undefined"}fatal: [tdsql_zk2]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: \"hostvars['zk1']\" is undefined"}fatal: [tdsql_zk3]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: \"hostvars['zk1']\" is undefined"} to retry, use: --limit @/soft/tdsql_full_install_ansible/part1_site.retry

原因:tdsql_hosts 配置标签不规范 , 版本不同,标签有所不同. 具体的参考模板,只改IP)
解决办法: tdsql_zk1 改为 zk1

初始化chitu

http://10.85.10.52/tdsqlpcloud

注意这里的OSS IP ,可能不是实际IP

可以查看cat /data/application/OSS/conf/scheduler.xml
或 netstat 查看

[root@huyidb02 ~]# netstat -an | grep 8080tcp 0 0 192.168.58.131:8080 0.0.0.0:* LISTEN


注意:这里的OSS IP ,可能不是实际IP可以查看cat /data/application/OSS/conf/scheduler.xml 或 netstat 查看 [root@huyidb02 ~]# netstat -an | grep 8080tcp 0 0 192.168.58.131:8080 0.0.0.0:* LISTEN


机型查看:

[root@huyidb02 data]# dmidecode | grep “Product Name”Product Name: VMware Virtual PlatformProduct Name: 440BX Desktop Reference Platform

DB机型 这里填 440BX

注意: 不同DB 要在不同的IDC
           同一个网关组的要在同一个IDC中

登录运营管理平台: 账号密码   admin/123456

[root@huyidb02 data]# mysql -utdsqlpcloud -h10.85.10.52 -P15001 -p'tdsqlpcloud'Welcome to the MariaDB monitor. Commands end with ; or \g.Your MySQL connection id is 3171Server version: 5.7.17-11-V2.0R540D002-20191226-1152-log Source distributionCopyright (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)]>
在管理库修改vi /soft/tdsql_full_install_ansible/group_vars/allmetadb_ip: 10.85.10.52metadb_port: 15001metadb_ip_bak: 10.85.10.53metadb_port_bak: 15001metadb_user: tdsqlpcloudmetadb_password: tdsqlpcloud# 执行安装 part2_site.ymlsh encrypt.sh <---------必须执行,更新密文密码ansible-playbook -i tdsql_hosts part2_site.yml注意:failed=0PLAY RECAP ********************************************************************************************************************************************************chitu1 : ok=19 changed=16 unreachable=0 failed=0chitu2 : ok=5 changed=4 unreachable=0 failed=0huyidb01 : ok=18 changed=11 unreachable=0 failed=0huyidb02 : ok=18 changed=11 unreachable=0 failed=0huyidb03 : ok=18 changed=11 unreachable=0 failed=0huyidb04 : ok=18 changed=11 unreachable=0 failed=0monitor1 : ok=12 changed=12 unreachable=0 failed=0oss1 : ok=14 changed=9 unreachable=0 failed=0oss2 : ok=14 changed=9 unreachable=0 failed=0scheduler1 : ok=31 changed=26 unreachable=0 failed=0scheduler2 : ok=22 changed=18 unreachable=0 failed=0
#在任意一台 scheduler 机器上执行下面的命令: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"

安装备用赤兔(如果有另一个未初始化的 chitu)

将已初始化的 chitu 机器上拷贝 2 个文件到未初始化的 chitu 机器上,并删除未初始化 chitu 机器上的 crontab,如下: 10.85.10.52 已初始化 chitu 10.85.10.53 未初始化 chitu1)在 52 机器上,拷贝文件到 53 机器上scp -p /data/website/tdsqlpcloud/www/config/database.php 10.85.10.53:/data/website/tdsqlpcloud/www/config/scp -p /data/website/tdsqlpcloud/www/config/install.lock 10.85.10.53:/data/website/tdsqlpcloud/www/config/ 2)删除 53 机器上 nginx 用户的 crontabcp -a /var/spool/cron/nginx /data/tools/nginx_cron_bakrm -f /var/spool/cron/nginx3)测试,登录 53 的 chituhttp://10.85.10.53/tdsqlpcloud至此TDSQL的基本模块已安装完成。

安装其它模块(可选)
安装以下模块之前要确保 TDSQL 核心模块安装无误后再进行。
如果需要使用 hdfs 异地冷备存储 binlog 和镜像文件,用于数据回档恢复,安装 hdfs。
如果需要使用 tdsql 默认提供的接入层 lvs,安装 lvs。
如果需要使用多源同步功能,安装 kafka 和 consumer。
如果需要使用网关日志分析及 sql 审计功能,安装 es。

安装 hdfs

(1)准备 hdfs 的数据目录的路径 首先用 lsblk 查看磁盘信息 格式化为 xfs 文件系统 mkfs.xfs -f /dev/sdg 创建目录 mkdir -p /mysql/backup 修改/etc/fstab 文件,设置自动挂载到指定路径 /dev/sdg /mysql/backup xfs defaults,noatime 0 0 挂载磁盘 mount -a(2)设置主机名 hdfs 机器上设置主机名,hdfs 集群中主机名不能重复,不能有下划线、中划线等特殊字符, hostnamectl set-hostname huyidb04(3)检查 tdsql_hosts 文件 vim tdsql_hosts [hdfs] <---填入 hdfs 机器地址,hdfs 的数量只能是 1 或 3 hdfs1 ansible_ssh_host=10.85.10.54(4)修改 hdfs 变量 修改 group_vars/all 中下面的相关变量 vim group_vars/all --- ssh_port: 36000 <----实际的 ssh 通信端口 hdfs_datadir: /mysql/backup <----多个迪特 一个磁盘一个路径,逗号分隔 注意这些数据文件路径的权限要是 tdsql,如下: chown -R tdsql:users /mysql/backup(5)安装 hdfs 单点 (我的是单点HDFS) 执行安装 ansible-playbook -i tdsql_hosts hdfs_single.yml su - tdsql hdfs namenode -format <---格式化 namenode 启动 namenode 和 datanode : hdfs --daemon start namenode hdfs --daemon start datanode 附:用 tdsql 用户关闭 hdfs 进程 : hdfs --daemon stop datanode hdfs --daemon stop namenode (6)安装 hdfs 高可用架构 (如果是高可用 用下面的方式安装) 3 个节点,并且 zk 集群不能是单点。 执行安装 hdfs ansible-playbook -i tdsql_hosts hdfs.yml su - tdsql tdsql 用户初始化 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 tdsql 用户启动 hdfs 集群,启动顺序如下,已经启动的进程就不用重复再启动了,查看启动的进程”jps” 在所有 hdfs 机器上启动 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 附:用 tdsql 用户关闭 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(7)在 hdfs 集群下查看/tdsqlbackup 路径 tdsql 用户执行以下命令 #查看/tdsqlbackup 目录是否已经被自动创建,权限是否如下 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(8)管理 hdfs 集群 tdsql 用户执行以下命令 查看所有 namenode 节点状态,及主备情况(只适用于高可用 3 节点架构) hdfs haadmin -getAllServiceState 查看所有 datanode 节点的状态,及上报的容量情况 hdfs dfsadmin -report(9)注意 tdsql 用户执行 jps 命令,可以看到 hdfs 的进程名称(只适用于高可用 3 节点架构) hdfs1 和 hdfs2 机器上应该看到 NameNode、JournalNode、DataNode、DFSZKFailoverController hdfs3 机器上应该看到 DataNode、JournalNode(10)配置 hdfs 监控 如果有 HDFS,但是没有配置 HDFS 监控,到""集群管理->集群配置”中设置“HDFS 服务列表"", 注意:如上图所示填写 namenode 节点(一般 2 个)的 50070 端口 生产环境不能用单节点 hdfs,单节点架构的 hdfs 的端口号是 9870


安装 lvs

lvs 机器建议单独部署,不建议和别人复用(最多只能和 zk 复用)。(1)检查 tdsql_hosts 文件 vim tdsql_hosts [lvs] <---填入 lvs 地址,lvs 的数量固定为 2 lvs1 ansible_ssh_host=10.85.10.52 lvs2 ansible_ssh_host=10.85.10.53(2)安装 lvs ansible-playbook -i tdsql_hosts lvs.yml(3)赤兔前台操作 lvs 接入层管理 -> LVS 设备资源管理 -> 上报 LVS 设备资源 上报 lvs 机器信息(2 台 lvs 机器信息都要上报) 设备 IP:填入 LVS 机器的通信 ip 地址。 网卡名字:通信网卡设备名。 子网掩码:填入实际的子网掩码。 IDC:lvs 机器需要划分到同一个 IDC 中,比如这里的“IDC_SZ_YDGL_0401_000001”。


创建 VIP(不能选取部署的机器 IP 作为 VIP,需要另选之外一个)
VIP:规划一个 vip 的地址,vip 的地址要和 lvs 机器的通信 ip 地址在同一个网段内。
设备 IP 列表:填入 lvs 机器的通信 ip 地址,一行一个。

创建 VIPGroup
VIPGroup 名:新建一个 vipgroup,取一个有意义的名字。


安装 kafka

(1)检查 tdsql_hosts 文件 vim tdsql_hosts [kafka] <----填入 kafka 集群的地址,kafka 的数量固定为 3 kafka1 ansible_ssh_host=10.85.10.51 <----kafka 机器的 java 虚拟机占用 3 个 g 以上内存 kafka2 ansible_ssh_host=10.85.10.52 kafka3 ansible_ssh_host=10.85.10.53(2)修改多源同步变量 修改 group_vars/all 中下面的相关变量 vim group_vars/all kafka_logdir: /mysql/log/kafka #日志要创建kafka目录(3)执行安装多源同步 ansible-playbook -i tdsql_hosts kafka.yml(4)验证是否安装成功 cd /data/application/kafka_2.12-2.3.1/logs vim server.log   <----查看 kafka 启动信息

安装 consumer

(1) 查看 tdsql_hosts 文件 [consumer] <---填入消费者的地址,数量固定为 1 consumer1 ansible_ssh_host=10.240.139.35(2)执行安装 consumer ansible-playbook -i tdsql_hosts consumer.yml(3)启动消费者服务 consumer 的机器上,使用下面命令启动消费者服务 cd /data/application/consumer/bin/ ./binlogconsumermgn --zklist 10.240.139.35:2181 --zkrootpath /noshard1 --kafkazklist 10.240.139.35:2181 --kafkazkrootpath /kafka --dev eth1 参数说明: --zklist ZK 的 ip:port,可以写多个 ZK ip:port,多个之间用英文逗号分隔 --zkrootpath 注意整理 zk 根节点与部署的时候 group_vars/all 下的” zk_rootdir”一致 --kafkazklist kafka 所在 zk,通常与--zklist 一样 --kafkazkrootpath kafka 在 ZK 上的根节点,固定是/kafka --dev consumer 的网卡名称 例如: ./binlogconsumermgn --zklist 10.85.10.51:2181,10.85.10.52:2181,10.85.10.53:2181 --zkrootpath /tdsqlzk --kafkazklist  10.85.10.51:2181,10.85.10.52:2181,10.85.10.53:2181 --kafkazkrootpath /kafka --dev ens38

安装 es

1) 查看 tdsql_hosts 文件(不能与 chitu 同一台机器) [es] <---填入 es 的地址,数量固定为 1 es1 ansible_ssh_host=10.85.10.54 修改变量文件 vim group_vars/all es_mem: 8 <-----内存占用,如果这里写 8 则至少占用 8*2=16G 内存 es_log_days: 7 <-----日志保留天数 es_base_path: /data/application/es-install/es <-----es 数据存放路径 改为 es_mem: 2 es_log_days: 7 es_base_path: /mysql/data/es-install/es2)执行安装 es ansible-playbook -i tdsql_hosts es_single.yml3)启停命令(在 es 机器上操作): # stop ps -ef |grep elasticsearch | grep -v 'grep'| awk '{print $2}' | xargs kill -9 ps -ef |grep logstash | grep -v 'grep'| awk '{print $2}' | xargs kill -9 ps -ef |grep es-cleaner | grep -v 'grep'| awk '{print $2}' | xargs kill -9 ps -ef |grep 'node/bin/node' | grep -v 'grep'| awk '{print $2}' | xargs kill -9 # start tdsql 用户启动: cd /data/application/es-install/es/master/tools ./start-elasticsearch.sh cd /data/application/es-install/es/data/tools ./start-elasticsearch.sh root 用户启动: cd /data/application/es-install/logstash/tools ./start-logstash.sh cd /data/application/es-install/es-cleaner ./start-es-cleaner.sh cd /data/application/es-install/kibana-5.6.4-linux-x86_64/bin/ nohup ./kibana & # 检测是否正常启动 ps -ef |grep elasticsearch | grep -v 'grep' |wc -l 输出为:4 <--------我的单个ES 个数为0 ps -ef |grep logstash | grep -v 'grep' |wc -l 输出为:2 ps -ef |grep es-cleaner | grep -v 'grep' |wc -l 输出为:1 ps -ef |grep 'node/bin/node' | grep -v 'grep' |wc -l 输出为:13)es 的验证及相关配置 输入 es IP 地址,打开 es 前台页面。 启动 es 后,需要把实例详情中的“网关审计数据是否入库”打开,选择“是”。

只有在打开这个开关后的日志才会入 es,为了可以定位问题,需要的话一定要尽早打开。

至此,TDSQL所有模块已部署完成,后期可以直接使用和测试了。

更多内容可参考:https://www.cnblogs.com/cqdba/p/13704465.html

墨天轮原文链接:https://www.modb.pro/db/32609(复制到浏览器中打开或者点击“阅读原文”)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
TDsql 15大组件安装路径,启停,及日志目录
原创-公司项目部署交付环境预检查shell脚本
在liunx双机下自己动手实现浮动IP技术
Linux配置浮动IP实现WEB高可用
基于资源编排在专有网络环境下快速部署高可用的Dubbox服务(ZooKeeper版)
从零开始,搭建公司通用后台架构技术栈,这套架构稳得一批...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服