腾讯官网部署地址:https://cloud.tencent.com/privatecloud/document/78770048931491840/78770052742017024
腾讯云文档
赤兔管理平台:统一运维管理平台,是DBA使用最多的图形化界面。
OSS:http协议操作接口,如果多个机器用一个赤兔管理,也是通过OSS来对接的。
scheduler/manager:运维管理模块,负责高可用切换,资源调度等。
Zookeeper:决策模块,保存集群元数据,提供配置维护、选举决策、路由同步等。
SQL引擎(Proxy):计算节点,负责权限管理。SQL转发,读写分离等。
数据节点(Set):部署MySQL数据库服务,并包含Agent状态监控模块
tdsql规划机器的时候分为4个角色
1)管理节点:包含zk、keeper(manager/scheduler)、oss、monitor、chitu一共需要3或5台机器(取决zk数量)
2)DB节点:包含db和proxy,如果是1主2备的话,需要3*n台机器
3)大数据节点:包含hdfs和kafka,需要3台机器,后续可扩容,整体容量要求是预估数据总容量的10倍以上。
4)其它节点:es、consumer、lvs
6台机器 操作系统centos7.6
组件 | 192.168.16.21 | 192.168.16.22 | 192.168.16.23 | 192.168.16.24 | 192.168.16.25 | 192.168.16.26 |
---|---|---|---|---|---|---|
zk | Y | Y | Y | Y | Y | Y(observer) |
scheduler | Y | Y | ||||
oss | Y | Y | ||||
chitu&clouddba | Y | Y | ||||
monitor | Y | Y | ||||
metadb | Y | Y | Y | |||
db | Y | Y | Y | |||
proxy | Y | Y | Y | |||
lvs | Y | Y | ||||
hdfs | Y | |||||
intercity | Y |
tdsql_full_install_ansible_10.3.14.1.0_D002.zip
# 每台主机分别设置主机名 hostname td21 hostname td22 hostname td23 hostname td24 hostname td25 hostname td26
# 每台主机都执行 vim /etc/hosts 192.168.16.21 td21 192.168.16.22 td22 192.168.16.23 td23 192.168.16.24 td24 192.168.16.25 td25 192.168.16.26 td26
rpm -q ntp (查询软件包是否被安装) yum install ntp -y systemctl start ntpd ## 启动 systemctl enable ntpd ##开机自启 chrony 配置完成后命令 chronyc sources -v
vim /etc/ntp.conf #注释掉原有配置的 #server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst #添加如下配置: server ntp.aliyun.com iburst
systemctl restart ntpd ntpq -p #查看当前服务器与上层 ntp 的状态
主控机就是规划中ansible模块所在的机器,其它所有机器都是受控机。在此将192.168.16.21作为主控机。
ssh-keygen -f ~/.ssh/id_rsa -N '' ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.16.21 ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.16.22 ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.16.23 ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.16.24 ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.16.25 ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.16.26
3、解压安装包,在主控机上安装ansible
#解包 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 (修改网卡名和数据库密码) --- #修改zk部署的数量,1、3或者5,修改为5 zk_num: 6 #改为5 #修改网卡信息,通过ifconfig查看网卡名称 netif_name: ens33 #修改tdsql账号的明文密码 tdsql_pass: a+complex+123456 #填入tdsql系统在zk上的根路径,一般不进行改动 zk_rootdir: /tdsqlzk2 #下面的配置先不改动 metadb_ip: 10.120.109.204 metadb_port: 15001 metadb_ip_bak: 10.120.109.205 metadb_port_bak: 15001 metadb_user: hanlon metadb_password: hanlon 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: K2JatUv5llBbMrske/k2YbqC oc_secret_pass: LGhVs0v5nVxcOLQie/k9bb2I clouddba_metadb_pass: h5Wyg2Xy sh -x encrypt.sh
[envcheck] mac1 ansible_ssh_host=192.168.16.21 mac2 ansible_ssh_host=192.168.16.22 mac3 ansible_ssh_host=192.168.16.23 mac4 ansible_ssh_host=192.168.16.24 mac5 ansible_ssh_host=192.168.16.25 mac6 ansible_ssh_host=192.168.16.26 #zk数量必须为奇数,1,3,5 [zk] zk1 ansible_ssh_host=192.168.16.21 zk2 ansible_ssh_host=192.168.16.22 zk3 ansible_ssh_host=192.168.16.23 zk4 ansible_ssh_host=192.168.16.24 zk5 ansible_ssh_host=192.168.16.25 zk6 ansible_ssh_host=192.168.16.26 [scheduler] scheduler1 ansible_ssh_host=192.168.16.21 scheduler2 ansible_ssh_host=192.168.16.22 [oss] oss1 ansible_ssh_host=192.168.16.21 oss2 ansible_ssh_host=192.168.16.22 [chitu] chitu1 ansible_ssh_host=192.168.16.21 chitu2 ansible_ssh_host=192.168.16.22 [monitor] monitor1 ansible_ssh_host=192.168.16.21 monitor2 ansible_ssh_host=192.168.16.22 [db] db1 ansible_ssh_host=192.168.16.24 db2 ansible_ssh_host=192.168.16.25 db3 ansible_ssh_host=192.168.16.26 [proxy] proxy1 ansible_ssh_host=192.168.16.24 proxy2 ansible_ssh_host=192.168.16.25 proxy3 ansible_ssh_host=192.168.16.26 [hdfs] hdfs1 ansible_ssh_host=192.168.16.23 [lvs] lvs1 ansible_ssh_host=192.168.16.23 lvs2 ansible_ssh_host=192.168.16.24 #不按照的可删除 [kafka] kafka1 ansible_ssh_host=10.240.139.35 kafka2 ansible_ssh_host=10.120.109.204 kafka3 ansible_ssh_host=10.120.109.205 [consumer] consumer1 ansible_ssh_host=10.58.110.23 [es] es1 ansible_ssh_host=10.58.110.23 #上面的kafka consumer es配置可删除 [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
安装zk: #使用tdsql安装的zk sh -x encrypt.sh ansible-playbook -i tdsql_hosts part1_site.yml
执行脚本之后,环境检查不通过,原因是服务器内存低于5G,需要扩大内存之后,重新执行ansible-playbook -i tdsql_hosts part1_site.yml
zk按照报错,可能是因为节点数量为偶数,无法执行安装脚本,需要将zk的安装数量改为5,修改tdsql_hosts文件和ansible变量,并重新执行,observer节点扩容之后再配置
修改为奇数节点之后,zk集群安装成功,后面需要扩容zk集群,添加observer节点
执行成功
zk的配置:
网页访问安装chitu模块的机器地址,进行chitu初始化
任意访问一台
http://192.168.16.21/tdsqlpcloud
集群配置
点击开始创建
创建失败,可能是上面上报资源的有问题,重新配置试试,改成一主一备
网关和db都改为2个节点
还是一样的报错,无法创建,此安装包跟生产实际用的安装包有所区别,无法自动生成proxy机型,需要自己创建proxy机型
添加之后,重新还是按照一主两备进行创建实例
点击初始化
点击开始安装
选择任意一个网关列表的地址进行测试连接
mysql -utdsqlpcloud -h192.168.16.24 -P15193 -p'123456'
测试mysql连接无误,将连接账号密码写入到 group_vars/all 文件中
[root@td21 tdsql_full_install_ansible]# cat group_vars/all --- zk_num: 5 netif_name: ens33 tdsql_pass: a+complex+123456 zk_rootdir: /tdsqlzk2 metadb_ip: 192.168.16.24 #主库IP metadb_port: 15193 #主库端口 metadb_ip_bak: 192.168.16.25 #从库IP metadb_port_bak: 15193 #从库端口 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
执行报错,根据报错提示发现tdsql_hosts文件中没有配置es地址,需要添加es地址
添加之后,再次执行成功
#找到安装了 scheduler 的服务器并执行: [root@td21 tdsql_full_install_ansible]# cat tdsql_hosts | grep scheduler [scheduler] scheduler1 ansible_ssh_host=192.168.16.21 scheduler2 ansible_ssh_host=192.168.16.22 # ssh 192.168.16.21 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机器上拷贝2个文件到未初始化的chitu机器上,并删除未初始化chitu机器上的crontab,如下: 192.168.16.21 已初始化chitu 192.168.16.22 未初始化chitu (1)在21机器上,拷贝文件到22机器上 scp -p /data/website/tdsqlpcloud/www/config/database.php 192.168.16.22:/data/website/tdsqlpcloud/www/config/ scp -p /data/website/tdsqlpcloud/www/config/install.lock 192.168.16.22:/data/website/tdsqlpcloud/www/config/ (2)删除22机器上nginx用户的crontab [root@localhost bin]# ssh 192.168.16.22 [root@localhost ~]# cp -a /var/spool/cron/nginx /data/tools/nginx_cron_bak [root@localhost ~]# rm -f /var/spool/cron/nginx (3)测试,登录22的chitu http://192.168.16.22/tdsqlpcloud
由于磁盘前面已经添加并格式化过,这里不用操作了 #需要安装hdfs的服务器修改主机名[必须修改,因为我们的主机名存在 - 线 需要改成没有特殊符号的] #修改 tdsql_hosts 文件,将需要安装hdfs服务的服务器添加上去,这里就添加3台hdfs vim tdsql_hosts 新增hdfs配置: [hdfs] hdfs1 ansible_ssh_host=192.168.16.23 #之前已添加修改 #安装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是单节点的,所在机器是192.168.16.23
#执行安装
ansible-playbook -i tdsql_hosts hdfs_single.yml
在hdfs所在机器192.168.16.23上执行
#切换到tdsql用户 su tdsql #初始化HDFS: #用tdsql用户在hdfs1机器上,格式化namenode hdfs namenode -format #用tdsql用户在hdfs1机器上,启动namenode和datanode cd /data/home/tdsql/hadoop-3.2.1/bin hdfs --daemon start namenode hdfs --daemon start datanode #附:用tdsql用户关闭hdfs进程 hdfs --daemon stop datanode hdfs --daemon stop namenode
(7)在hdfs集群下查看/tdsqlbackup路径 用tdsql用户执行以下命令 su - tdsql #查看/tdsqlbackup目录是否已经被自动创建,权限是否是:tdsql supergroup hadoop fs -ls / #如果目录不在或者权限不对,用下面命令修改: hadoop fs -mkdir /tdsqlbackup hadoop fs -chown tdsql.supergroup /tdsqlbackup
检查HDFS端口并补充到 group_vars/all 文件中
ssh_port: 9870 hdfs_datadir: /data2/hdfs,/data3/hdfs,/data4/hdfs
如果有HDFS,但是没有配置HDFS监控,到"“集群管理->集群设置”中设置“HDFS服务列表”",如图
如果是3节点的hdfs架构,如上图所示填写namenode节点(一般2个)的50070端口
生产环境不能用单节点hdfs,单节点架构的hdfs的端口号是9870
添加的列表为:192.168.16.23:9870
#准备工作: #1、修改tdsql_hosts文件。增加新zk节点信息 [zk] zk1 ansible_ssh_host=192.168.16.21 zk2 ansible_ssh_host=192.168.16.22 zk3 ansible_ssh_host=192.168.16.23 zk4 ansible_ssh_host=192.168.16.24 zk5 ansible_ssh_host=192.168.16.25 zk6 ansible_ssh_host=192.168.16.26 #2、在所有tdsql集群服务器上增加host配置(包括新zk也要添加host解析):vim /etc/hosts 添加要扩容的zk服务器信息。 [root@td21 tdsql_full_install_ansible]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.16.21 td21 192.168.16.22 td22 192.168.16.23 td23 192.168.16.24 td24 192.168.16.25 td25 192.168.16.26 td26 #初始化新扩容的zk服务器 #注意:新增单独服务器zk扩容需要重新初始化,OS系统需要做时间同步、配置yum源、免密。(原有TDSQL集群扩容zk无需重新初始化)
#(1)登入ansible机器重新创建一个tdsql_newzk文件添加新增zk服务器ip信息 #添加的内容与tdsql_hosts文件里的一致 [newdb] tdsql_newdb1 ansible_ssh_host=192.168.16.26 # vim tdsql_hosts [newdb] <------勿修改 tdsql_newdb1 ansible_ssh_host=192.168.16.26 <-------初始化zk1ip
#在ansible的路径下有一个tdsql_newdb.yml文件 # cat tdsql_newdb.yml - name: install newdb begining hosts: newdb remote_user: root gather_facts: false roles: - beginning #以上tdsql_newdb.yml文件里的hosts处:tdsql_newdb名字要与创建的tdsql_newzk文件第一行一致,与tdsql_hosts文件里的名字也要与tdsql_newdb一致 #只需要保留初始化机器模板即可
(3)后台初始化zk机器
执行前确保新增的zk机器的时间和集群中其它机器的时间同步
执行初始化新的zk机器
ansible-playbook -i tdsql_newzk tdsql_newdb.yml
(4) 将原zk节点定时任务拷贝到新初始化zk机器上
1、新版本定时任务文件路径/etc/crontab
在老的zk上拷贝定时任务到新的zk机器上
*/3 * * * * /bin/bash /server/scripts/check_supervisor_alive.sh
2、老版本定时任务crontab -l 查看即可
将原zk信息先备份
zk备份的工具在scheduler的bin目录下,scheduler机器上执行:
cd /data/application/scheduler/bin ./backupZkInfo
验证备份成功:
在执行备份命令的scheduler机器上执行:
cd /data/zkbak/zkbackup/ ll
在扩容zk节点服务器上创建目录
mkdir -p /data/application/ /data/tools/ /data/home/tdsql/
4.5 在扩容zk节点服务器上检查并安装JDK——已存在JDK忽略此步。
在已安装zk服务器上找到目录/data/home/tdsql/jdk_x86.zip
scp /data/home/tdsql/jdk_x86.zip root@192.168.16.26:/data/home/tdsql/
在扩容zk服务器上操作:
cd /data/home/tdsql unzip jdk_x86.zip chown -R tdsql:users /data/home/tdsql/jdk chmod +x -R /data/home/tdsql/jdk source /etc/profile
在scheduler服务器上设置免切
cd /data/application/scheduler/bin/ ./manual_set add_mnoswitch noshard all 1 24
查看免切设置是否成功,返回一个时间戳(免切到期时间)
./manual_set list_mnoswitch noshard all date-d @时间戳
或者登陆赤兔设置实例一切免切
扩容zk服务器:
在已有zk服务器上进入cd /data/application并找到zookeeper.tar.gz安装包
拷贝到新zk服务器上。
scp zookeeper.tar.gz root@192.168.16.26:/data/application/
新zk上解压安装包:
tar -zxvf zookeeper.tar.gz cd /data/application/zookeeper mkdir data;mkdir log
从已有zk服务器拷贝配置文件到扩容zk服务器上
scp /data/application/zookeeper/conf/zoo.cfg root@192.168.16.26:/data/application/zookeeper/conf/ scp /data/application/zookeeper/data/myid root@192.168.16.26:/data/application/zookeeper/data/
给扩容zk服务器zk目录添加权限
cd /data/application/ chown -R tdsql:users zookeeper
检测配置文件里的数据路径和日志路径是否正确
grep "Dir" /data/application/zookeeper/conf/zoo.cfg
修改myid和zoo.cfg文件
注意:在不用的节点上修改不同的myid值,修改的zoo.cfg文件中的参数都是一样的。
在新zk服务器上操作:
cd /data/application/zookeeper/data/ vim myid #将5修改为6(如果是一键部署安装三节点的zk集群,如果是第四台zk不管这里是何值都修改为4,第五台就改成5,依次类推) cd /data/application/zookeeper/conf/ vim zoo.cfg #加上新添加的zk服务器信息。 #注:集群内所有zk服务器需要配置新zk信息。数字为myid #将新的zoo.cfg,使用scp命令传送至所有zk节点的相同路径覆盖原文件,每台单独修改也可以 启动新的zk服务,并查看进程和状态,其他原有节点也要重启 cd /data/application/zookeeper/bin ./zkServer.stop ./zkServer.start ./zkServer.status (查看状态是否是observer)
全部完成并确认无误后,删除集群免切状态
cd /data/application/scheduler/bin/
./manual_set delete_mnoswitch noshard all
./manual_set list_mnoswitch noshard all
其他模块配置文件需要加入zk新增节点的IP
#OSS su - tdsql cd /data/application/oss/conf/ vim scheduler.xml cd /data/application/oss/boot ./stop.sh ./start.sh ps -ef |grep oss scheduler # su - tdsql # cd /data/application/scheduler/conf # vim scheduler.xml # vim backupConf.xml # cd /data/application/scheduler/bin #./stop_manager.sh #./start_manager.sh # ps -ef |grep scheduler PROXY 机器(所有实例) # cd /data/tdsql_run/15001/gateway/conf # vim instance_15001.cnf # su - tdsql # cd /data/tdsql_run/15001/gateway/bin #./restart_cgroup.sh instance_15001 # ps -ef |grep 1500x mysqlagent DB机(所有实例) # su -tdsql # cd /data/tdsql_run/4001/mysqlagent/conf # vim mysqlagent_4001.xml # cd /data/tdsql_run/4001/mysqlagent/bin # ./restartreport_cgroup.sh ../conf/mysqlagent_4001.xml ./startreport.sh ../conf/mysqlagent_4001.xml # ps -ef |grep 400x clouddba (一般与chitu混部 不用添加任何信息) 里面配置文件默认zk只有一台,一般是赤兔的第一台 # su - tdsql # cd /data/application/clouddba/conf # vim diagnosis.conf # cd /data/application/clouddba/bin # ./restart.sh ../conf/diagnosis.conf ps -ef |grep diagnosis kafka (无此组件不用测) # cd /data/application/kafka/config # vim consumer.properties 停 # cd/data/application/kafka_2.11-0.10.0.1/bin # ./kafka-server-stop.sh -daemon ../config/server.properties 启 # cd /data/application/kafka_2.11-0.10.0.1/bin # ./kafka-server-start.sh -daemon ../config/server.properties # ps -ef |grep kafka monitor 重启analyze程序 #su - tdsql # cd /data/application/tdsql_analysis/conf/ # vim conf.properties 添加新扩容的zk信息 # cd /data/application/tdsql_analysis/bin # ./restart.sh #ps -ef |grep analysis 重启collector程序 # su - tdsql # cd /data/application/tdsql_collector/conf # vim conf.properties 查看是否有需要添加的zk信息 # cd /data/application/collector/bin # ./restart.sh # ps -ef |grep collector hdfs 检查新的zk节点与hdfs时间是否同步 hdfs节点上操作: su - tdsql cd /data/home/tdsql/hadoop/etc/hadoop/ cp core-site.xml core-site.xml_bak vim core-site.xml 增加新zk信息 参考产品部署手册重启hdfs intercity 组件 intercity增加新扩容zk的信息 cd /data/application/intercity_cluster/conf vim cluster.xml 增加新扩容zk信息,增加完成后,重启intercity cd /data/application/intercity_cluster/bin su - tdsql sh stop_cluster.sh sh start_cluster.sh 检查intercity组件进程是否正常 ps -ef | grep intercity 在intercity组件部署机上增加zk扩容信息 /data/application/oss/config/scheduler.xml文件 然后重启 /data/application/oss/boot ./stop.sh ./start.sh
赤兔前台集群信息中上报新增ZK节点
上报节点之后,稍等一会,查看zk监控即可看到observer节点