诊断运维¶
HA状态查看¶
首先查看神通HA服务进程是否有在运行
查看数据库服务是否有在进行
ps aux | grep oscarha
服务在运行的状态下查询当前服务器是主机还是备机
oscarha -Q
当前服务器是主机的状态下:
查看共享盘有没有挂载上
df - h
查看浮动IP有没有挂载上
ip addr
若HA服务有启动但是资源没有挂上,查看日志确定问题点,日志文件在$SZ_OSCAR_HOME/log/ 文件夹下
日志分析¶
神通HA服务进程运行过程中每一次命令执行的结果都会打印到日志文件中,实施人员可以通过查看日志定位问题点进行处理。 日志文件存放在$SZ_OSCAR_HOME/log/文件夹下。 如果开启了详细日志信息的选项(HA_DETAIL_LOG=TRUE),日志文件会大大增加,但可以更加精确的定位到问题点。
详细内容可以参考错误列表
错误列表¶
| 错误码 | 详情 |
|---|---|
| ERR_INT_INVALID_PARA | 内部参数无效 |
| ERR_OS_MEMORY_FAILURE | 内存操作失败 |
| ERR_OS_FILE_FAILURE | 文件操作失败,%s,%s,系统错误码是:%d |
| ERR_OS_SOCKET_FAILURE | SOCKET操作失败,%s,系统错误码是:%d |
| ERR_OS_TIME_FAILURE | 时间操作失败,%s |
| ERR_OS_THREAD_FAILURE | 线程操作失败, %s |
| WRN_OS_THREAD_FAILURE | 线程操作失败, %s |
| ERR_OS_EXECUTE_CMD_FAILURE | 系统脚本命令执行失败 |
| ERR_OS_START_UDPSERVER_FAILURE | 创建UDP监听失败 |
| ERR_OS_START_TCPSERVER_FAILURE | 创建TCP监听失败 |
| ERR_OS_NO_SPACE | 磁盘空间不足 |
| ERR_OS_QUERY_SERVICE_FAILURE | 查询服务是否正在运行失败 |
| ERR_CFG_GET_CFG_ATTR_FAILURE | 获取ha参数配置失败 |
| ERR_ELOG_FILE_DROP_FAILUER | 日志文件删除失败 |
| ERR_PT_INVALID_TIME | 时间值无效 |
| ERR_PT_INVALID_BOOL | 布尔值无效 |
| NTC_SC_HA_SWITCH_START | 'PRODECT_NAME_STR'HA双机热备检测切换调度开始 |
| NTC_SC_HA_ERROR | %s |
| ERR_SC_HA_ERROR | 'PRODECT_NAME_STR'HA双机热备检测信息,%s |
| WRN_SC_HA_ERROR_ERRNO | %s, errno=%d, strerror=%s |
| NTC_HA_CONFIG_PARAM | %s = %s |
| WRN_HA_VOTE_DISK_BLOCK | %s,block id=%d |
| 原因 | 输出内容 | 定位问题点 |
|---|---|---|
| 主函数流程 | ||
| fork()函数创建子进程失败, 通过fork()创建子进程失败, 内存空间不足 | ||
| 子进程正常退出,父进程准备退出, 子进程正常退出,父进程准备退出, 正常信息打印流程,不需要定位 | ||
| ha.conf 设置节点信息错误, 配置参数中的?NODE_ID?只能是1或者2,并且两个节点的id不能重复! | NODE_ID设定值超出规定 | |
| 初始化仲裁盘失败, 初始化仲裁盘失败, 指定路径下仲裁盘不存在或权限不足 | ||
| 初始化仲裁盘成功, 初始化仲裁盘成功, 正常信息打印流程,不需要定位 | ||
| 读取设定的HA文件失败,文件:sConfigPath不存在或不具备访问权限,请输入正确的配置文件路径或设置访问权限! | 指定路径下配置文件不存在或文件权限不足 | |
| 读取HA文件参数失败, 获取配置参数失败! | 1.指定路径下配置文件不存在 2.环境变量指向不正确 | |
| ha.conf 参数sHA_SERVER_ENABLE=FALSE | 如果要开启HA服务,请修改配置! | ha.conf 参数HA_SERVER_ENABLE=TRUE |
| ha.conf 参数NODE_ID设置不为1或者2 | 配置参数中的?NODE_ID?只能是1或者2,并且两个节点的id不能重复! | ha.conf 参数NODE_ID设置为1或者2 |
| ha.conf DISK_HEARTBEAT_INTERVAL值设定过小。仲裁盘磁盘心跳时间间隔, 配置参数中的?DISK_HEARTBEAT_INTERVAL?最小值为200,当前配置参数值小于200,已经自动调整为200! | 发生错误后的业务流程,不作为实际问题的定位信息 | |
| ha.conf DISK_HEARTBEAT_INTERVAL值设定过大。仲裁盘磁盘心跳时间间隔, 配置参数中的?DISK_HEARTBEAT_INTERVAL?最大值为60000,当前配置参数值大于60000,已经自动调整为60000! | 发生错误后的业务流程,不作为实际问题的定位信息 | |
| ha.conf中请求卸载资源失败最大次数DISK_HEARTBEAT_OFFLINE_MAXNUM 设定值过小, 配置参数中的?DISK_HEARTBEAT_OFFLINE_MAXNUM?最小值为10,当前配置参数值小于10,已经自动调整为10! | 发生错误后的业务流程,不作为实际问题的定位信息 | |
| ha.conf中请求卸载资源失败最大次数DISK_HEARTBEAT_OFFLINE_MAXNUM 设定值过大, 配置参数中的?DISK_HEARTBEAT_OFFLINE_MAXNUM?最大值为3600,当前配置参数值大于3600,已经自动调整为3600! | 发生错误后的业务流程,不作为实际问题的定位信息 | |
| 启动心跳主线程 | ||
| 分配读写vote disk的缓冲区失败, posix_memalign内存分配失败, 内存空间不足 | ||
| ha.conf 两个节点的id配置重了,或者同一个机器上启动了多个ha实例使用了同一块仲裁盘, 本节点的心跳块被篡改,无法进行继续执行仲裁功能,卸载资源后退出HA。原因可能是两个节点上的`NODE_ID`配置重复,或者有其它进程修改了仲裁盘,请检查确认。 | 修改ha.conf文件中的ID参数,多实例的情况下查看是否用了同一块仲裁盘(查看配置文件) | |
| 对方节点网络发生故障, 发现对方节点掉线, 重启对方节点 | ||
| 主机无访问配置网关, 当前主节点与网关不通, “ping -c 1 -w 超时时间 网关” 命令中返回的丢包数是0%,其中超时时间和 网关为配置参数中指定的值 | ||
| 本机可以ping通网关, 本节点可以连通网关,准备抢主, 正常信息打印流程,不需要定位 | ||
| 主机无访问配置网关、本机也无法访问配置网关, 本节点同样无法连通网关,不做任何操作, “ping -c 1 -w 超时时间 网关” 命令中返回的丢包数是0%,其中超时时间和 网关为配置参数中指定的值 | ||
| 没有活跃的主,没有其它节点发起选主请求,自己准备选主, 没有活跃的主,没有其它节点发起选主请求,自己准备选主, 正常信息打印流程,不需要定位 | ||
| 详细日志, 本机将延迟选主,优先备机选主,备机剩余优先选主次数?=?%d? | 正常信息打印流程,不需要定位 | |
| 详细日志, 备机优先次数耗尽,主机将自由选主, 正常信息打印流程,不需要定位 | ||
| 详细日志, 资源检测失败,准备转换成备机, 正常信息打印流程,不需要定位 | ||
| 本节点心跳监测线程 | ||
| 本机心跳长时间没有变化,心跳线程可能被阻塞,当前节点有挂载资源,请求转为备机,防止脑裂, 本机心跳长时间没有变化,心跳线程可能被阻塞,当前节点有挂载资源,请求转为备机,防止脑裂, 自身心跳超时时间+资源卸载超时时间必须小于心跳超时选举时间,因为如果自身心跳出现问题,对方在超过“心跳超时选举时间”后会发起选举转换为主,自己一定要在这段时间内卸载掉资源,否则可能会出现脑裂的情况。 | ||
| 本机心跳块数据长时间没有发生变化且本机没有挂载资源, 本机心跳长时间没有变化,心跳线程可能被阻塞,当前节点没有挂载资源,保持当前状态不变, 正常信息打印流程,不需要定位 | ||
| 主节点挂载共享资源时间超过规定的时间, 加载资源超时, 查看参数配置是否正确、共享磁盘能否正常挂载(可进行手动挂载测试)、共享IP是否能正常挂载 | ||
| 主节点挂载共享资源时间超过规定的时间,重启当前节点, 卸载资源超时,重启服务器, resourceManager脚本stop失败 | ||
| 主节点挂载共享资源时间超过规定的时间,用户设置禁止重启, 卸载资源超时。由于用户配置禁止重启,跳过重启服务器步骤。 | 正常信息打印流程,不需要定位 | |
| oscarha接收到挂载资源的请求, 收到加载资源请求, 正常信息打印流程,不需要定位 | ||
| 挂载资源时检测浮动ip是否在线, 检测浮动ip是否已经在线, 正常信息打印流程,不需要定位 | ||
| 挂载资源时检测浮动ip在线, 浮动ip已经在线,继续挂载资源可能会导致脑裂或者网络冲突,停止加载资源, 浮动ip已经使用 | ||
| 挂载资源检查后属于可以挂载的状态,开始挂载共享资源, 执行加载资源操作, 正常信息打印流程,不需要定位 | ||
| 切换主机资源加载失败, 加载资源失败, resourceManager脚本start失败 | ||
| 切换主机资源加载成功, 加载资源成功, 正常信息打印流程,不需要定位 | ||
| 当前结点已经挂载上共享资源了, 资源已经是加载状态,不需要再执行加载操作, 正常信息打印流程,不需要定位 | ||
| oscarha接收到卸载资源的请求, 收到卸载资源请求, 1.系统没有运行数据库 2. 系统没有挂载浮动IP 3.系统没有挂载上共享硬盘 4.心跳长时间没有变化 | ||
| oscarha开始卸载共享资源, 执行卸载资源操作, 正常信息打印流程,不需要定位 | ||
| 切换主机资源卸载失败, 卸载资源失败,重启服务器, resourceManager脚本stop失败 | ||
| 切换主机资源卸载失败,用户设置服务器禁止重启, 卸载资源失败。由于用户配置禁止重启,跳过重启服务器步骤。 | 正常信息打印流程,不需要定位 | |
| 切换主机资源卸载成功, 卸载资源成功, 正常信息打印流程,不需要定位 | ||
| 当前结点并没有挂载上任何共享资源, 资源未加载,不需要执行卸载操作, 正常信息打印流程,不需要定位 | ||
| 主机检测共享资源是否正常,其中包括数据库服务是否正常运行,共享磁盘是否挂载,浮动ip是否存在本机网络, 检测资源失败, 当某一个共享资源出现问题后重置指示变量并卸载共享资源 | ||
| 资源监测线程异常退出,重新创建, 仲裁盘资源操作线程异常退出, 发生错误后的业务流程,不作为实际问题的定位信息 | ||
| 网络监测线程 | ||
| 无法访问配置网关, 未连接到用户可访问网络环境, “ping -c 1 -w 超时时间 网关” 命令中返回的丢包数是0%,其中超时时间和 网关为配置参数中指定的值 | ||
| 发送线程异常退出,重新创建, 磁盘心跳线程异常退出,重新创建, 发生错误后的业务流程,不作为实际问题的定位信息 | ||
| 接收线程异常退出,重新创建, 磁盘心跳监测线程异常退出,重新创建, 发生错误后的业务流程,不作为实际问题的定位信息 | ||
| 资源监测线程异常退出,重新创建, 资源操作管理线程异常退出,重新创建, 发生错误后的业务流程,不作为实际问题的定位信息 | ||
| 业务网络检测线程异常退出,重新创建, 网络监测线程异常退出,重新创建, 发生错误后的业务流程,不作为实际问题的定位信息 | ||
| 外部传入oscarha退出协议信号, 检测到退出信号,oscarha退出运行, 正常信息打印流程,不需要定位 | ||
| 资源检测模块 | ||
| 当前系统没有查询到双机热备监测的数据库运行pid | 获取数据库进程号失败, 1.系统没有运行该数据库2.执行下行脚本返回空值ps -ef | grep 产品名| grep "\-o" | grep -w -i 数据库名称 | grep -v grep (产品名和数据库名称都在ha.conf中) | |
| 获取数据库运行状态为未运行或者查找系统不存在pid | 检测到数据库未运行, 1./etc/init.d/数据库名.db文件异常 2. 获取数据库进程号失败行同 | |
| 当前服务器不存在浮动ip | 检测到浮动ip不存在, 检测到本机ip列表中不存在浮动ip | |
| 当前服务器不存在配置磁盘或者磁盘未挂载或者未挂载到配置中挂载点, 检查到指定磁盘未挂载到指定挂载路径, 1.指定的磁盘未挂在到系统中 2. 指定的磁盘没有挂载到指定的盘符下 | ||
| 数据库、磁盘、浮动ip中有检测失败项, 资源加载失败,切换失败, 数据库,浮动ip,磁盘中有检测失败项 | ||
| 切换主机时卸载资源失败, 共享资源卸载失败, resourceManager脚本stop失败 | ||
| 子网掩码长度转换失败, 子网掩码长度转换失败, 网络问题 | ||
| 仲裁盘模块 | ||
| 打开仲裁盘失败, 打开仲裁盘失败, 1.心跳线网络连接异常 2. 心跳线网线或者网卡问题 3. 网络配置问题 4. 心跳线配置端口被占用 | ||
| 仲裁盘循环冗余校验码(CRC)检验失败, 仲裁盘crc校验失败, 仲裁盘循环冗余校验码(CRC)检验失败,可尝试重新初始化仲裁盘 | ||
| 仲裁盘块校标记校验失败, 仲裁盘块标记校验失败, 仲裁盘块校标记校验失败,可尝试重新初始话仲裁盘 | ||
| 节点读取仲裁盘文件数据失败, 读取仲裁盘失败, 指定路径下仲裁盘不存在或权限不足 | ||
| 仲裁盘文件路径错误, 打开仲裁盘失败, 指定路径下仲裁盘不存在或权限不足 | ||
| 往仲裁盘写入节点信息失败, 写入仲裁盘失败, 指定路径下仲裁盘不存在或权限不足 |