TDSQL赤兔运营平台创建实例卡死不动问题分析解决
作者:我在听风想你
大家好,这次给大家带来的问题解决方法,还是在实战中研究出来的,非常实用,下面我们不说废话,直接上干货。
我们在客户现场遇到的问题是这样的(由于安全原因,未能截图,请谅解),客户会定期会针对DB与PROXY进行扩容,为产出更多的实例供应用系统使用(DB与Proxy扩容步骤将会在最后也发给大家),但是在每次扩容完成后创建实例的时候,都会卡在70%左右不动。一般来说一个实例的正常创建时间在几分钟左右,但是70%一卡就是十几二十分钟,甚至二三十分钟都不会更进一步,我们也只能在到达一定时间之后,点击删除任务,再次尝试。 这个问题一到我这里,我首先就会想创建实例的流程。在上一期的文章中也有提到,实例的创建是赤免运营平台以jason格式通过http形式传参给OSS API,OSS调用创建实例的函数,然后在zookeeper创建job,通知manager(包括scheduler和manager)创建实例,manager在创建实例前要检查资源是否够,并且lock 资源后再创建资源。各位手中如果有环境资源的话可以去尝试一下,在赤兔平台的实例创建流程到达70%那一块时,已经lock住资源开始创建了,也可以去查看一下安装实例的日志:
#cd /data/home/tdsql/tdsqlinstall/log/
#vim pkginstall.log.开头日志
#vim shell_pkginstall开头日志
查看error记录或者看相应时间的记录,可以看出问题出在scheduler机器上,这个工作到了scheduler后便没有该有的记录了,于是再去看看scheduler的日志,发现日志非常多,几乎每个小时都会产生一个sys_scheduler开头的日志,大小不会超过955MB,然后看一下创建时间覆盖我们创建实例的时间段的日志,正好是最后一个,大小还未达到955MB,我便猜测可能是磁盘满了这个时间段的日志写不进去了。接着看一下磁盘的使用情况,发现已经达到了100%,于是清理一下时间比较久的日志,腾出一些空间来。返回赤兔平台删除卡住的任务重新创建,该问题解决。
schedur日志增长逻辑:在赤兔操作较频繁情况下,/目录磁盘使用会达到100%,导致实例创建Hang住。当前/data/scheduler_log/sys_scheduler日志增长量与增长频率为每天增加26G左右,每天日志将占磁盘容量近30%。
日志增长逻辑:大致按每1小时递增一个sys_scheduler文件,每个大小不会超过1G,当到达954MB左右时,将会自动生成新sys_scheduler文件,后缀从‘当前日期.0’开始递增,步长为1。当天上限一般不会超过30G。
网关组扩容:
在主控机上添加newproxy.yml脚本
到tdsql_install/playbooks目录下
# vim newproxy.yml
添加如下内容:
- name: install newproxy beginning
hosts: newproxy
remote_user: root
gather_facts: false
roles:
- tdsql_beginning
- name: install proxy_module server
hosts: newproxy
remote_user: root
gather_facts: false
roles:
- tdsql_db_module
(1)修改tdsql_hosts文件内容
在ansible路径下的tdsql_hosts文件中添加类似如下内容
[newproxy]
newproxy1 ansible_ssh_host=1.1.1.1 <------------这里就写要添加的新的proxy机器的ip地址
newproxy2 ansible_ssh_host=2.2.2.2 <------------这里就写要添加的新的proxy机器的ip地址
(2)后台安装proxy
执行前确保新增的proxy机器的时间和集群中其它机器的时间同步和ansible机器到目标的免密登录
执行安装新proxy
# ansible-playbook -i tdsql_hosts playbooks/newproxy.yml
(3)前台上报proxy机器和网关组扩容
前台上报新增proxy机器
前台网关组扩容
扩容成功后验证:
后台验证 新增proxy机器上执行 # ps –ef|grep proxy
DB资源扩容:
(1)修改newdb.yml文件内容
在ansible的路径下有一个newdb.yml文件
# cat tdsql_newdb.yml
- name: install db beginning <--------这一块是初始化机器
hosts: tdsql_newdb
remote_user: root
gather_facts: false
roles:
- tdsql_beginning
- name: install db_module server <--------这一块是推db包到机器上
hosts: tdsql_newdb
remote_user: root
gather_facts: false
roles:
- tdsql_db_module
- name: install hdfs_single on db <--------这一块是安装单点hdfs的客户端(2选1)
hosts: tdsql_newdb
remote_user: root
gather_facts: false
roles:
- hdfs_on_db_single
- name: install hdfs on db <--------这一块是安装高可用hdfs的客户端(2选1)
hosts: tdsql_newdb
remote_user: root
gather_facts: false
roles:
- tdsql_hdfs_on_db
根据实际的情况,如果没有部署hdfs的话,就删掉第3和第4块内容
如果部署的是hdfs单点架构的话,就删掉第4块内容
如果部署的是hdfs高可用架构的话,就删掉第3块内容
(2)修改tdsql_hosts文件内容
在ansible路径下的tdsql_hosts文件中添加类似如下内容
[tdsql_newdb]
tdsql_newdb1 ansible_ssh_host=1.1.1.1 <------------这里就写要添加的新的db机器的ip地址
tdsql_newdb2 ansible_ssh_host=2.2.2.2
tdsql_newdb3 ansible_ssh_host=3.3.3.3
(3)后台安装db
执行前确保新增的db机器的时间和集群中其它机器的时间同步
执行安装新db
ansible-playbook -i tdsql_hosts playbooks/tdsql_newdb.yml
(4)前台上报db机器资源
TDSQL赤兔运营平台创建实例卡死不动问题分析解决相关推荐
- PySide2 基础入门-创建实例窗口(详细解释)
PySide2 基础入门-创建实例窗口(详细解释) python 3.7 / Pyside2 (如果使用pyQt5,将Pyside2 直接替换PyQt5即可)首先我们在Qt Designer中画好界面 ...
- 自己挖的坑自己填--docker创建实例出现Waiting for SSH to be available…
在之前使用Docker for Windows Installer.exe直接安装,通过docker-machine-driver-vmwareworkstation.exe实现docker和VM的共 ...
- 【Kotlin】Kotlin 构造函数 ( 主构造函数 | 主构造函数声明属性 | init 初始化代码块 | 次构造函数 | 构造函数委托 | 调用构造函数创建实例对象 )
文章目录 I . 主构造函数 II . 主构造函数声明属性 III . init 初始化代码块 IV . 主构造函数参数 和 成员变量访问方式 V . 主构造函数 可见性 设置 VI . 次构造函数 ...
- 27、Python 面向对象(创建类、创建实例对象、访问属性、内置类属性、对象销毁、类的继承、方法重写、基础重载方法、运算符重载、类属性与方法、下划线双下划线)
27Python面向对象(Python2) Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. ...
- Oracle 11g中创建实例
1.打开"所有程序" -> "Oracle -OraDb11g_home1" -> "配置移植工具" -> "D ...
- linux oracle新建监听,linux 下 oracle图形界面(需配置监听,创建实例)
摘要:oracle 图形界面配置监听,创建实例,以下都是我安装是的截图,按步骤一定可以安装成功! CentOS6.7_x64_minimal_desktop的虚拟机一台(安装oracle需要图形界面, ...
- rails4 ajax 例子,Ajax和Rails 4:创建实例变量并更新视图而不刷新
我有一个部分的coaching_notes索引和一个用于创建备注的表单.我想创建一个教练笔记,并进行部分更新而不刷新页面.我收到一个未知动作错误:CoachingNotesController无法找到 ...
- 阿里云ECS开放批量创建实例接口,实现弹性资源的创建
摘要: 为了更方便的实现弹性的资源创建,方便用户一次运行多台ECS按量实例来完成应用的开发和部署,阿里云开放了ECS的批量创建实例接口RunInstances,可以单次最多创建100台实例,避免重复调 ...
- ECS开放批量创建实例接口RunInstances
摘要: 为了更方便的实现弹性的资源创建,方便您一次运行多台ECS按量实例来完成应用的开发和部署,我们开放了ECS的批量创建实例接口RunInstances.和目前的CreateInstance相比,R ...
最新文章
- C语言 | 编程实现3
- java内部类为什么会持有外部类的引用_为什么内部类持有外部类的引?
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建
- 面试突击32:为什么创建线程池一定要用ThreadPoolExecutor?
- 听说,那谁谁谁是同性恋?
- 在周二正式发售前 新款MacBook Pro已开始向客户发货
- java操作浏览器_java selenium 操作浏览器实例
- deepin安装windows虚拟机_Deepin Linux V20系统通过安装wine实现运行windows程序
- 请慎重你的选择,到底想要的是什么:一次误检的经历
- 统计通话次数和时间的软件_通话时间统计app下载-通话时间统计下载 2.2.2 安卓版 - 河东软件园...
- 丹尼尔·惠灵顿(Daniel Wellington)选择一洽的理由
- 阿里开源互动游戏引擎Eva.js
- android svg 线条动画教程,SVG技术入门:线条动画实现原理
- css中“~”(波浪号)、“,”(逗号)、 “ + ”(加号)和 “ ”(大于号)是什么意思?
- 怎么彻底删除users下的文件夹_什么工具可以有效清理C:\Users\用户名\AppData目录下的文件?...
- STM32F4 IAP实现总结
- android 白色圆点,Android通知图标是一个白色圆圈
- C++:重定义:符号重定义:变量重定义(二):解决变量重定义(const static)
- 51单片机实战教程之C语言基础(五 C语言函数及其定义)
- 利用Windows 计划任务定时将本地文件复制到共享文件夹