Influxdb是一个开源分布式时序、事件和指标数据库,使用 Go 语言编写,无需外部依赖。该组件在蓝鲸的功能定位是存储蓝鲸监控处理后的时序指标数据,在社区版属于单节点,在企业版属于双节点,由etcd+tsdbproxy+influxdb组成双写的架构。
在某企业的生产环境上,由于监控纳管的节点比较多,influxdb读写数据频繁,造成influxdb运行节点的机器内存不足,经常造成服务异常,因此,决定将influxdb节点迁移到内存充足的机器上,保证蓝鲸平台稳定运行。
模块迁移属于蓝鲸运维工程师的必备技能之一,这里先讲解一下模块迁移的一般方法和思路:
这里我需要迁移的目标机器已是蓝鲸原有的服务器,且迁移的是数据库,所以实际的迁移步骤会稍有不同,以下是迁移步骤详情:
Step1:备份需要迁移节点的数据库,并将备份目录拷贝至新节点,备份命令如下:
for i in `ls /data/bkee/public/influxdb/data`;do influxd backup -host 127.0.0.1:8088 -database $i /data/backup/influxdb_$(date +%Y-%m-%d);done
influxd backup -host 127.0.0.1:8088 /data/backup/influxdb_meta
Step2:迁移influxdb角色
停止需要迁移的influxdb节点;
systemctl stop influxdb
systemctl disable influxdb
清理crontab(influxdb tsdbproxy)
修改中控机install.config(删除旧节点,在新节点添加influxdb),在新节点安装influxdb服务;
cd /data/install
./bkeec stop bkdata #停止监控数据写入
./bkeec sync common
./bkeec sync influxdb
直接ssh新节点直接安装influxdb
. /data/install/control.rc
. /data/install/install.rc
install_influxdb (如没计划任务手动添加crontab)
start_influxdb
start_tsdbproxy
检查influxdb服务解析是否正常
先删除旧机器/data/bkee/etc/consul.d/influxdb.json
中控机./bkeec update consul
dig influxdb.service.consul是否正常
Step3:还原数据到迁移后的数据库
进入新节点同步过去的influxdb备份文件目录
for db in $(ls *.rp_* | sed 's/\.rp_.*//' | sort -u); do influxd restore -database $db -datadir /data/bkee/public/influxdb/data /data/backup/influxdb_$(date +%Y-%m-%d); done
influxd restore -metadir /data/bkee/public/influxdb/meta /data/backup/influxdb_meta
Step4:重新渲染依赖模块、重启服务
在中控机下执行:
source /data/install/utils.fc
./bkeec render bkdata
./bkeec render tsdbproxy
./bkeec stop bkdata
./bkeec start bkdata
./bkeec stop tsdbproxy
./bkeec start tsdbproxy
另外,还需要验证注册在etcd集群的influxdb节点
ssh $ETCD_IP
endpoint=http://192.168.102.171:2379,http://192.168.102.173:2379,http://192.168.102.174:2379 #这里是三如ETCD的IP
查看注册的两个节点
etcdctl --endpoints $endpoint get /backends/local/url
etcdctl --endpoints $endpoint get /backends/local1/url
如果是错误节点URL,配置指向新节点的URL
etcdctl --endpoints $endpoint set /backends/local1/url http://192.168.102.175:5260 #新节点influxdb的IP
Step5:验证数据写入
influx -host influxdb.service.consul -port 5260 -precision rfc3339 #在influxdb新节点执行
select * from "_internal"."monitor"."write" order by "time" desc limit 2
针对于蓝鲸平台的变更操作,需要在变更后仔细检查平台每项功能,保证平台服务正常,按照整理的checklist逐项检查,如平台后台服务、SaaS基本功能等。
蓝鲸模块迁移是蓝鲸运维必不可少的技能,理解蓝鲸架构和安装脚本原理才能更好掌握模块迁移的方法,一定要在测试环境先验证自己的方法步骤,才能避免正式环境迁移出错。
作者:何立彰
﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Oracle数据迁移后归档文件暴增怎么办?
Docker的操作详解
Docker的安装及架构介绍
什么是容器的本质?
使用sqlplus进行Oracle数据库批量自动发布