陈老师:1415968548 郑老师:2735197625 乐老师:354331153
客服热线:
19941464235 / 19906632509 / 19906733890 / 19905812933(微信同号)

客服微信

腾讯云分布式数据库TDSQL分布式数据库集群安装部署

作者:郭一军
原创
发布时间:2024-01-15 17:28
浏览量:3342

TDSQL的部署适应于多个场景:用于个人体验的单集群单机场景、用于POC性能测试的单集群多节点场景、用于金融企业的同城双中心、两地三中心等生产场景。本次分享将详解如何部署高可用TDSQL集群。


测试机规划:4台(CPU:4core/MEM:8G/HDD:100G)


172.17.16.5      tdsql1:zk1,kafka1,proxy1,db1
172.17.16.6     tdsql2:zk2,kafka2,proxy2,db2,oss1,scheduler1,chitu1,monitor1,lvs
172.17.16.12    tdsql3:zk3,kafka3,proxy3,db3,oss2,scheduler2,chitu2,monitor2,lvs
172.17.16.15    tdsql4:ansible,hdfs,es,consumer

#######################
TDSQL安装部署
#######################

1.设主机名
hostnamectl set-hostname tdsql1
hostnamectl set-hostname tdsql2
hostnamectl set-hostname tdsql3
hostnamectl set-hostname tdsql4

2.配置主机名
vim /etc/hosts
172.17.16.5      tdsql1
172.17.16.6      tdsql2
172.17.16.12    tdsql3
172.17.16.15    tdsql4


3.设置时间同步:NTP
以tdsql1为主时钟
[root@tdsql1 ~]# vim /etc/ntp.conf
server 127.127.1.0 iburst

systemctl restart ntpd.service

[root@tdsql2 ~]# vim /etc/ntp.conf
server 172.17.16.5
restrict 172.17.16.5 mask 255.255.240.0 nomodify notrap

systemctl restart ntpd.service
ntpdate -u 172.17.16.5

[root@tdsql3 ~]# vim /etc/ntp.conf

server 172.17.16.5
restrict 172.17.16.5 mask 255.255.240.0 nomodify notrap

systemctl restart ntpd.service
ntpdate -u 172.17.16.5

[root@tdsql4 ~]# vim /etc/ntp.conf

server 172.17.16.5
restrict 172.17.16.5 mask 255.255.240.0 nomodify notrap

systemctl restart ntpd.service
ntpdate -u 172.17.16.5

4.云上虚机安全组策略

开放一些必须的端口,为了方便演示,我这里端口全放开了:

全放行:TCP:1-65535


5.配置免密登录(管理机 1172.17.16.15上操作)
ssh-keygen -t rsa
ssh-copy-id 172.17.16.5
ssh-copy-id 172.17.16.6
ssh-copy-id 172.17.16.12
ssh-copy-id 172.17.16.15

6.准备数据目录路径(所有机器)
mkdir -p /data
mkdir -p /data1


7.上传并安装ansible
[root@tdsql4 ~]# mkdir /tdsql
[root@tdsql4 ~]# cd    /tdsql
ansible_tdsql_install_20200623.zip
tdsql_packet_10.3.14.6.0_x86_D014.zip


1)初始化机器环境
unzip  ansible_tdsql_install_20200623.zip
cd ansible_install/script/

sh init_os_for_yum_install.sh

2)安装python3
sh install_python3_for_x86.sh
source /etc/profile
python3 --version

3)安装ansible
sh install_ansible.sh

4) 解压tdsql安装包
cd /tdsql
unzip tdsql_packet_10.3.14.6.0_x86_D014.zip

8.修改 tdsql_hosts 文件
vim /tdsql/tdsql_install/tdsql_hosts

[tdsql_allmacforcheck]
tdsql_tdsql1 ansible_ssh_host=172.17.16.5
tdsql_tdsql2 ansible_ssh_host=172.17.16.6
tdsql_tdsql3 ansible_ssh_host=172.17.16.12
tdsql_tdsql4 ansible_ssh_host=172.17.16.15


[tdsql_zk]
tdsql_zk1 ansible_ssh_host=172.17.16.5
tdsql_zk2 ansible_ssh_host=172.17.16.6
tdsql_zk3 ansible_ssh_host=172.17.16.12

[tdsql_scheduler]
tdsql_scheduler1 ansible_ssh_host=172.17.16.6
tdsql_scheduler2 ansible_ssh_host=172.17.16.12


[tdsql_oss]
tdsql_oss1 ansible_ssh_host=172.17.16.6
tdsql_oss2 ansible_ssh_host=172.17.16.12

[tdsql_chitu]
tdsql_chitu1 ansible_ssh_host=172.17.16.6
tdsql_chitu2 ansible_ssh_host=172.17.16.12


[tdsql_monitor]
tdsql_monitor1 ansible_ssh_host=172.17.16.6
tdsql_monitor1 ansible_ssh_host=172.17.16.12

[tdsql_db]
tdsql_db1 ansible_ssh_host=172.17.16.5
tdsql_db2 ansible_ssh_host=172.17.16.6
tdsql_db3 ansible_ssh_host=172.17.16.12

[tdsql_proxy]
tdsql_proxy1 ansible_ssh_host=172.17.16.5
tdsql_proxy2 ansible_ssh_host=172.17.16.6
tdsql_proxy3 ansible_ssh_host=172.17.16.12

[tdsql_hdfs]
tdsql_hdfs1 ansible_ssh_host=172.17.16.15

[tdsql_lvs]
tdsql_lvs1 ansible_ssh_host=172.17.16.6
tdsql_lvs2 ansible_ssh_host=172.17.16.12


[tdsql_kafka]
tdsql_kafka1 ansible_ssh_host=172.17.16.5
tdsql_kafka2 ansible_ssh_host=172.17.16.6
tdsql_kafka3 ansible_ssh_host=172.17.16.12

[tdsql_consumer]
tdsql_consumer1 ansible_ssh_host=172.17.16.15

[tdsql_es]
tdsql_es1 ansible_ssh_host=172.17.16.15

[tdsql_intercity]
tdsql_intercity1 ansible_ssh_host=172.17.16.15

[tdsql_newdb]
tdsql_newdb1 ansible_ssh_host=1.1.1.1
tdsql_newdb2 ansible_ssh_host=2.2.2.2
tdsql_newdb3 ansible_ssh_host=3.3.3.3

[tdsql_ansible_test]
tdsql_ansible_test1 ansible_ssh_host=1.1.1.1
tdsql_ansible_test2 ansible_ssh_host=2.2.2.2
tdsql_ansible_test3 ansible_ssh_host=3.3.3.3


8. tdsql相关账户
os操作系统账户:tdsql  #自动创建
oc_agent的账户:默认是tdsql,密码默认同os上的tdsql同密码


9.修改 ansible 变量
#ifconfig -a

vim group_vars/all
---
tdsql_env_cpu: x86
tdsql_env_os: yum_install
tdsql_zk_num: 3
tdsql_sche_netif: eth0
tdsql_os_pass: a+complex+password
tdsql_zk_rootdir: /tdsqlzk

tdsql_hdfs_num: 1
tdsql_hdfs_ssh: 22


tdsql_zk_clientport: 2118
tdsql_zk_serverport1: 2338
tdsql_zk_serverport2: 2558


10.使用 tdsql 安装的 zk
cd /tdsql/tdsql_install

sh playbooks/tdsql_encrypt.sh
ansible-playbook -i tdsql_hosts playbooks/tdsql_part1_site.yml

11.初始化 chitu
网页访问安装 chitu 模块的机器地址,进行 chitu 初始化。
http://42.192.15.33/tdsqlpcloud

172.17.16.6:8080
172.17.16.12:8080



数据库账号:tdsqlpcloud
密码:tdsqlpcloud

赤兔管理员:admin/124356

根据得到的连接参数,用 mysql 客户端测试一下监控库是否可以连接
mysql -utdsqlpcloud -h172.17.16.5 -P15001 -p'tdsqlpcloud'



12.安装完赤兔后,获取到chitu的监控实例的proxy ip地址,放到ansible的变量文件

[root@tdsql4 tdsql_full_install_ansible]# vim group_vars/all

metadb_ip: 172.17.16.5        #赤兔监控库的proxy ip主
metadb_port: 15001              #赤兔监控库的proxy port主
metadb_ip_bak: 172.17.16.6      #赤兔监控库的proxy ip备
metadb_port_bak: 15001          #赤兔监控库的proxy port备
metadb_user: tdsqlpcloud             #赤兔监控库的用户名
metadb_password: tdsqlpcloud      #赤兔监控库的密码


13.执行安装 part2_site.yml
cd /tdsql/tdsql_install

sh playbooks/tdsql_encrypt.sh     #生产密文密码,根据明文自动帮大家生成
ansible-playbook -i tdsql_hosts playbooks/tdsql_part2_site.yml


#开始部署其它组件
####################
安装HDFS
####################

1.在dfs 机器上设置主机名
vim /etc/hosts
172.17.16.15    tdsql4

2.检查 tdsql_hosts 文件
vim tdsql_hosts

[hdfs]
hdfs1 ansible_ssh_host=172.17.16.15

3.修改 hdfs 变量
vim group_vars/all

tdsql_hdfs_num: 1
tdsql_hdfs_ssh: 22
tdsql_hdfs_datadir: /data2/hdfs,/data3/hdfs,/data4/hdfs
tdsql_hdfsdatadir_count: 3


4.hdfs目录及权限
mkdir -p /data2/hdfs
mkdir -p /data3/hdfs
mkdir -p /data4/hdfs
chown -R tdsql:users /data2
chown -R tdsql:users /data3
chown -R tdsql:users /data4



5.安装 hdfs 单点
ansible-playbook -i tdsql_hosts playbooks/tdsql_hdfs_single.yml

6.切换到 tdsql 用户
su - tdsql

7.用 tdsql 用户在 hdfs1 机器上,格式化 namenode
hdfs namenode -format


8.用 tdsql 用户在 hdfs1 机器上,启动 namenode 和 datanode
hdfs --daemon start namenode
hdfs --daemon start datanode

/*
附:用 tdsql 用户关闭 hdfs 进程
hdfs --daemon stop datanode
hdfs --daemon stop namenode
*/

9.用 tdsql 用户执行以下命令
#查看/tdsqlbackup 目录是否已经被自动创建,权限是否如下
hadoop fs -ls /

如果目录不在或者权限不对,用下面命令修改:
hadoop fs -mkdir /tdsqlbackup
hadoop fs -chown tdsql.supergroup /tdsqlbackup

查看所有datanode节点状态,及上报的容量情况
hdfs dfsadmin  -report

-----------------------找hdfs浏览页面:
ps -ef |grep hdfs

在虚拟机开下安全组:TCP:9870
HDFS服务列表 172.17.16.15:9870     #单机HDFS端口是9870,高可用多节点端口是50070


http://81.69.236.208:9870


########################
安装lvs
########################
1.配置tdsql_hosts 文件
vim tdsql_hosts

[lvs]
lvs1 ansible_ssh_host=172.17.16.15



2.安装 lvs
ansible-playbook -i tdsql_hosts playbooks/tdsql_lvs.yml


3.赤兔前台操作 lvs
上报 lvs 机器信息(2 台 lvs 机器信息都要上报)
接入层管理--> LVS设备资源管理-->上报[LVS设备资源]
进入虚拟机,查看网卡信息:
ifconfig -a
inet 172.17.16.5netmask 255.255.240.0

子网掩码:20


创建 VIP
VIP:规划一个 vip 的地址,vip 的地址要和 lvs 机器的通信 ip 地址在同一个网段内。
设备 IP 列表:填入 lvs 机器的通信 ip 地址,一行一个。


########################
安装kafka
########################
1.检查 tdsql_hosts 文件
vim tdsql_hosts

[kafka]
kafka1 ansible_ssh_host=172.17.16.5
kafka2 ansible_ssh_host=172.17.16.6
kafka3 ansible_ssh_host=172.17.16.12



2.修改多源同步变量
vim group_vars/all
kafka_logdir: /data2/kafka,/data3/kafka,/data4/kafka

3.执行安装多源同步
ansible-playbook -i tdsql_hosts playbooks/tdsql_kafka.yml

4.验证是否安装成功
cat /data/application/kafka/logs/server.log   ----查看 kafka 启动信息


########################
安装 consumer
########################
1.配置 tdsql_hosts 文件
vim tdsql_hosts
[consumer]
consumer1 ansible_ssh_host=172.17.16.15

2.执行安装 consumer
ansible-playbook -i tdsql_hosts playbooks/tdsql_consumer.yml

3.启动消费者服务
在 consumer 的机器上,使用下面命令启动消费者服务
cd /data/application/consumer/bin/
./binlogconsumermgn --zklist 172.17.16.5:2118,172.17.16.6:2118,172.17.16.12:2118 --zkrootpath /tdsqlzk --kafkazklist 172.17.16.5:2118,172.17.16.6:2118,172.17.16.12:2118 --kafkazkrootpath /kafka --dev eth0



##########################
安装ES  elk
##########################
1.配置tdsql_hosts 文件(不能与 chitu 同一台机器)
vim tdsql_hosts

[es]
es1 ansible_ssh_host=172.17.16.15

2.修改变量文件 vim group_vars/all
es_mem: 2
es_log_days: 7
es_base_path: /data/application/es-install/es

3.执行安装 es
ansible-playbook -i tdsql_hosts playbooks/tdsql_es_single.yml



4.启动命令(在 es 机器上操作):
source /etc/profile

tdsql 用户启动:
su - tdsql
source /etc/profile
cd /data/application/es-install/es/master/tools
nohup ./start-elasticsearch.sh  &
cd /data/application/es-install/es/data/tools
nohup ./start-elasticsearch.sh  &

root 用户启动:
cd /data/application/es-install/logstash/tools
nohup ./start-logstash.sh  &

cd /data/application/es-install/es-cleaner
nohup ./start-es-cleaner.sh &

cd /data/application/es-install/kibana-5.6.4-linux-x86_64/bin/
nohup ./kibana &

5.检测是否正常启动
ps -ef |grep elasticsearch | grep -v 'grep' |wc -l
输出为:4
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
输出为:1


6.es 的验证及相关
输入 es IP 地址,打开 es 前台页面。

http://81.69.232.160