蓝鲸Influxdb节点迁移
Influxdb是一个开源分布式时序、事件和指标数据库,使用 Go 语言编写,无需外部依赖。该组件在蓝鲸的功能定位是存储蓝鲸监控处理后的时序指标数据,在社区版属于单节点,在企业版属于双节点,由etcd+tsdbproxy+influxdb组成双写的架构。
在某企业的生产环境上,由于监控纳管的节点比较多,influxdb读写数据频繁,造成influxdb运行节点的机器内存不足,经常造成服务异常,因此,决定将influxdb节点迁移到内存充足的机器上,保证蓝鲸平台稳定运行。
前期准备
- 迁移方案的确定与测试,通过测试验证整理出升级步骤详情;
- 评估迁移的影响范围和风险,建立应对措施和回退方案;
- 申请变更窗口,安排相关人员,保证迁移后验证蓝鲸功能正常;
迁移方案
模块迁移属于蓝鲸运维工程师的必备技能之一,这里先讲解一下模块迁移的一般方法和思路:
- 若是迁移模块至新机器,需先初始化新机器环境,配置中控机到新机器免密,在新机器安装并启动consul服务
- 停止旧机器模块服务,删除$INSTALL_PATH/.intall_module的模块标签,停止相关计划任务
- 修改install.config模块定义文件,同步脚本和src文件
- 在目标迁移机器安装相应的模块,这里可以参考蓝鲸集成安装服务的脚本$CTRL_DIR/bk_install逻辑判断安装和初始化的步骤本$CTRL_DIR/bk_install逻辑判断安装和初始化的步骤
- 判断其它服务对迁移模块的依赖,这里可以参考架构图模块之间的依赖关系或查找其它模块的配置文件依赖,如这里以匹配job模块为例:grep -i job /data/src/*/support-files/templates/*,重新渲染依赖的模块配置文件,重启依赖的服务
- 若是迁移至新机器,判断迁移的模块是否需要连接mysql,判断方法同上,若有则initdata mysql授权
这里我需要迁移的目标机器已是蓝鲸原有的服务器,且迁移的是数据库,所以实际的迁移步骤会稍有不同,以下是迁移步骤详情:
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数据库批量自动发布
蓝鲸Influxdb节点迁移相关推荐
- mongoDB 从单节点迁移到分布式集群 遇到的问题
mongoDB 从单节点迁移到分布式集群 遇到的问题: 1.linux 环境下limit 的设置问题: 错误: $ ps -ef|grep mongod -bash: fork: re ...
- Linode跨节点迁移:从Tokyo到Fremont
背景 上一篇博客交代了如何在 Linode 上搭建邮件服务器,并配置好各种协议.记录来投入实际使用. 由于实践过程中,曾经尝试使用明文协议与服务器交流数据,可能泄露了账号.密码信息,造成之后被攻击发送 ...
- 超详细的ceph节点迁移(mon和mgr)
ceph节点迁移 前置知识 ceph组件 mon.mgr.osd.rgw 其中非常重要且有数据存储的为mon和osd组件 对于mon和osd来说,迁移比较麻烦,但是对于其他组件来说因为是无状态的,因此 ...
- 【ES实战】ES集群节点迁移与缩容补充说明
[ES实战]ES集群节点迁移与缩容补充说明 [ES实战]ES集群节点迁移与缩容 文章目录 [ES实战]ES集群节点迁移与缩容补充说明 1.集群的现状分析和集群的规划 2.集群健康关注点,变化关注点 3 ...
- k8s集群-master节点迁移
1,在新机器上安装k8s master ,执行好kubelet init 2, 将旧mtaser 的 /var/lib/etcd/ /var/lib/kubelet /etc/kubernetes ...
- 如何纳管与定义多云?
犹如一种潮流,现在无人不在谈云,更甚于早些年的虚拟化.在各大IT厂商和互联网企业的推波助澜之下,用户争相建云和上云,几年下来即使一个规模不大的企业或单位也可能同时管理着"多朵云". ...
- 数据存储加密和传输加密_将时间存储网络应用于加密预测
数据存储加密和传输加密 I'm not going to string you along until the end, dear reader, and say "Didn't achie ...
- 大脑神经图_我们的大脑如何理解图
大脑神经图 To learn from something, we first have to understand it. With AI, this isn't always so easy. 要 ...
- 优酷蓝鲸近千节点的Redis集群运维经验总结
http://www.infoq.com/cn/news/2016/08/youku-Redis-nosql Redis是时下比较流行的Nosql技术.在优酷我们使用Redis Cluster构建了一 ...
最新文章
- K8S-网络模型、POD/RC/SVC YAML 语法官方文档
- MFC(ActiveX编程,孙鑫C++第十八讲笔记整理)
- java mcrypt encrypt_PHP mcrypt_encrypt加密,使用java解密
- dubbo超时重试和异常处理
- ImportError: No module named setuptools 解决方法
- 这些元器件基础知识都不懂,怎么混电子圈!
- 搞懂开源框架设计思想真的这么重要吗?终获offer
- 软件工程质量管理体系要求_软件质量管理| 软件工程
- python竞赛之路_Python机器学习及实践:从零开始通往Kaggle竞赛之路 PDF高清完整版...
- HTML在线visio进行简单布局,visio2007教程
- ConcurrenHashMap源码(JDK1.7)
- 2022年内蒙古医院三基考试传染病学考前冲刺题及答案
- Guake Terminal ── linux下完美帅气的终端 (转)
- Freeswitch 默认配置
- winform 打印快递电子面单_隐私电子面单demo
- 基于CQRS的架构在答题PK小游戏中的实践案例
- HTML CSS xmind总结
- ECharts(三)
- Contour 学习笔记(二):使用级联功能实现蓝绿部署和金丝雀发布
- Threes.js入门篇之5 - 场景操纵器Trackball
热门文章
- 运营电影网站的一点个人心得
- DFS+回溯 求解 密室逃脱(蓝桥杯,迷宫问题)超级详细
- Python 调用source命令导出环境变量
- acer计算机配置,acer电脑设置u盘启动方法
- 第十八届全国大学智能汽车竞赛报名信息统计:山东赛区报名队伍
- 挖掘城市ip_用文化创意挖掘城市文脉,“哈舅”助力打造城市文化IP
- C++函数返回引用和值问题
- GTAV智能驾驶源码详解(一)——制作数据集
- 方舟编译器只能编译Java_方舟编译器的安装和编译Helloword
- python传入参数的几种方法_python传递参数方式小结