macrosan后端流程
2024-07-25 16:44:35 2 举报
登录查看完整内容
仅限于macrosan内部使用,泄露必究
作者其他创作
大纲/内容
san_interface.py
N
回退到之前的角色previous_role
Y
主节点pxc容器正常,以加入主pxc方式恢复从节点pxc容器
START
1.8.1 挂载数据盘的文件系统(诸多过程)
2.4.2 发送rebuildContainer类型消息至后端
判断服务器版本及初始化(容器启动、主备角色、中间件启动)
解析结果为ipJson,调用set_ip.sh脚本配置IP
已初始化流程
HeartServer类继承quartz.Job执行定时任务
初始化node_list
添加全局信息(默认账户、dnsIP等)到Redis(db3)
发送'update_manager_node'消息到后端
1.4.3.2 设置ntp客户端set_ntp_client.sh -s
1.21 ms.jar启动完成
repair_method_A()
主节点处理选择一个节点去接收2口和3口(前端IP漂移处理)
主节点跳过自己的心跳检测
notify_node.py 2
salve
Main.java
恢复pxc初始化repair_init()
1.16 发送InitSuccess消息到Web端
new NodeHeart()构造函数默认设置lastHeart = System.currentTimeMillis(); onlineState = HeartBeat.STATE_ONLINE; 【在线】 heartLostCount = 0; lostState = HeartBeat.STATE_NOT_LOST; 【未丢失】 interval = 0;
当前节点是否为主?(exist_vip)
notify_node.py 1
加入集群成功后,启动各节点心跳定时任务HeartBeat.startHeartJar();
rebuild etcd集群
本节点加入主节点set_pxc_cluster.sh --join ${join_node}
tomcat、ps_read、prometheus相关启动
发送update_slave消息到后端
1.4.3 exec_unInit_process() 未初始化——自动部署流程
1.4.4 syslogconf.sh定时日志(actionlog\\es_gc)配置
主节点创建新线程,心跳丢失处理:(1)离线节点server_state置0(redis)(2)离线节点swarm集群的处理(3)通知管理服务器节点下线(4)通知管理服务器更新eth4状态(5)BMC重启离线节点
notify_fault.py
备节点升级为主节点updateMaster()
ms_moss项目
从节点恢复pxc处理repair_method_A() \"${master_uuid}\"
节点丢失状态false并超时600s丢失?
检查等进程存在?
本节点与主节点在同一swarm集群
获取mgt网口mgt_eth
master
设置配置文件state=slave
initState=0?
1.5 start_socket.sh -s
set_pxc_cluster.sh --init获取、存取swarm_token
1.1 分区、格式化、挂载
HeartServer.outerLostReduceHandle(nodeUUID);
自动化部署中,删除mgt容器,重建tomcat容器
是否已部署init_state=0?
WAIT
检查状态值获取
initNodeHeart()
reform_mount.py
检查状态state值是否为NO_INIT?
之前是否为主previous_role=master?
集群是否脑裂?
1.4.3.8 启动Redis 6379+6380 start_redis.py其中管理节点重启后,需重新从主redis获取新weaddr并进行数据同步
nginx进程是否存在?
redis数据库2号库(REDIS_SYSINFO_INDEX): swarm_join_cmd、系统各种配置项8号库(REDIS_NODEINFO_INDEX): 存储心跳IP
notify_stop.py
pxc可用性检查set_pxc_cluster.sh span style=\
tomcat容器是否存在?
map_stat=0?
检查版本标志与IP类型
脚本调用后端font color=\"#323232\
MsCloudUtils.java
心跳丢失超过600秒处理:如果该节点属于主备备,则重新选择节点构成主备备及dns配置
mgt容器是否存在?
eth4判断vip是否在该节点?
管理系统Web
设置检查状态为ONLINE
恢复主pxc容器
1.4.2 alias脚本alias_cfg.sh
1.3.3.1 ip_init() 阻塞后调用ms_cloud的IpService
是
是否Non-Primary?
后端发送updateEthSpeed消息到Web
1.14 主备降级处理
执行systool.py脚本py systool.py mgt_eth v4
获取state值,是否为master?
检查pxc容器存在与否(exist_pxc)
节点前后在线状态比对是否一致?
主节点降级为备节点updateSlave()
MossSystemUtils.java
notify_work.py
1.9 启动前端网口UpBusinessPort()
1.17 备份主从切换时未完成的任务等
1.4.3.4 心跳网口状态检测未检测到心跳eth4时循环等待
HeartBeat.getInstance().initNodeHearts();
1.10 处理DNS问题(指定节点数=节点列表数redis db8)serverNodeOnlineDNS()
后端发送testConnect消息到Web服务器连通检查
未初始化——自动部署流程
pxc正常存在;情况1:master的worm_token存在且与自身相同情况2:master的swarm_token获取不到
后端moss.jar
获取webaddr,set_ntp_client.sh
是否已部署map_state=0?
mysql/pxc是否存在?
Python API(config.py)
while等待ms.jar启动、start_socket.sh
设置map_state=1
校验网口状态
1.2.1 启动worm_clock.jar
2.1 处理该类型消息 configIp()
心跳丢失的处理
IPv4/IPv6下kill掉nginx相关进程
common_scripts.sh
HeartBeat.getInstance().checkNodeHeart();检查各节点心跳
主节点与本节点swarm_token是否相同
clearEnv.sh
脑裂情况
check_slaveNode_pxc()检查其他节点的pxc是否是正常,正常则恢复pxc,此外检查本节点是否在新master的swarm集群中
获取本节点pxc状态
1.4.3.7 非master节点离开docker swarm网络
addetcd集群
sed命令
1.1 循环直到连接上vip
END
ms_moss 后端启动流程
1.4 向Redis存储HEART_IP
mysql_status为Primary?
ms_moss 脚本执行部分流程
预设IP
获取stat值e是否为master?
clearEnvEthDwon.sh
1.4.3.3 pxc数据卷数据备份backup_pxc.sh -b
keepalived检测,执行notify_master脚本
主节点pxc状态是否为Primary?(master_mysql_status)
1.19 多区域处理
ManagementService.java
设置配置文件state值为master
当前节点pxc是否正常?(exist_right_pxc、swarm)
服务器版本升级成管理节点updateManagerNode()
1.22.1 后端调用脚本配置网关 IpService.configGateWay
HeartBeat.getInstance().heartBeat(node_uuid);
是否存在ms.jar?
主节点创建新线程,心跳恢复处理:(1)上线节点server_state置1(redis)(2)通知管理服务器节点上线(3)通知恢复节点的处理DNS(4)通知恢复节点处理pxc(join_pxc_cluster)......
当前节点pxc容器与swarm网络是否正常?
本节点docker加入主节点所在swarm网络
FormMapInfo.java
1.5.1 启动ms.jar socket服务
arp删除heart_ip节点
发送restoreHeart消息至后端
1.12 设置所有节点前端口和前端包状态(redis db2)
1.2 start_worm_clock.sh
1.4.1 绑定IP与Port
InitState=0
1.20 启动NFS网关服务
更新网口速率
直到管理系统配置IP完成,利用mgtIp与管理口掩码,计算管理系统IP
Java API(PublicConfig.setProperty)
1.3 拷贝文件与bmc口账户创建、eth网口配置
1.4.3 exec_Init_process()已初始化流程
之前是否为备previous_role=slave?
获取本机pxc状态(self_mysql_status)
从节点恢复pxc处理repair_method_A()
当前节点是否为主?
notify_mananer.py 1
关闭tomcat、redis、ps_read容器
1.13 重启后的pxc节点创建和管理节点安装webapps
发送heartsevercheck通知到管理服务器web
FINISH
设置状态为WAIT
NodeService.java
1.4.3.5 While循环等待判断master是否启动;ping不通vip情况下启动keepalived、重建pxc集群 set_pxc_cluster.sh --init
1.8.1 后端HeartVip11113、11114端口监听
1.4.6 pxc数据备份,每日备份
更新node状态update_node_state(1)
notify_mananer.py 2
1.7 snmp、jaxb初始化
是否为主节点?
HeartBeat.getInstance()即new HeartBeat()单例对象
EcNodeService.java
(后端)心跳检测定时任务——Heartbeat\\HeartServer
新加节点同步路由
容器初始化成功,创建了新tomacat需要update_manager
1.8 执行未初始化流程
2.3 Web端接收InitSuccess消息
1.8 执行已初始化流程
restart_ms.py
HeartServerCheck.startHeartCheck();开启心跳检查定时任务(任务设置、添加到线程池、执行任务、移除任务)
check_moss_env.py
发送'update_master'消息至后端包
管理系统迁移过程 ,重新创建启动tomcat
1.4 reform_mount.py
ms_cloud项目
初始化告警服务
HeartServer.outerRecovHandleServer(nodeUUID);
1.3.3.4 启动容器node_exporter:9101、prometheus_write:9091
1.13 节点心跳定时任务
set_prometheus.py
bond_create_eth12.sh
1.4.3.1 启动docker并检查容器镜像 执行restore_mgt.sh -recover脚本
master端vip心跳服务初始化与监听(11111~11114)
1.22 收到Web端modifyDefaultGateway消息
定时任务
1.moss_start_check_envir.sh -s
1.4.4 py take_over.py export_local
IpService.java
检查eth4口checkEth4
恢复本节点pxc容器
纳管服务
DiskHealthAlarm.java
1.3 初始化worm时钟检查
当前节点是主or从?(row_state)
1.4.5 将repair_pxc.sh加入定时任务,每隔2min执行该脚本
reset_eth_name.py
reset_public.py
当前节点为从,查看主节点pxc状态
主节点初始化心跳服务端MasterService.masterStartTask();
map_state==InitState
repair_method_B()
主节点swarm_token是否存在?
filesystem_add.py
获得本节点的swarm_token
1.12 启动定时检测与告警任务
相关进程检查
1.15 执行dump文件的监控备份脚本
ONLINE
上线检查
1.3.3.2 主节点启动redis,ping方式确认主节点可用,主从启动keepalive
Java API(MsCloudUtils.setConfigValueByName)
Web端处理heartsrvercheck消息
当前节点是否与主节点在同一swarm网络?
非脑裂情况
bond_create_eth_sync.sh
1.2 初始化redis(6379连接池)
是否为server服务器版本?
1.18 配置DNS的resolve.conf文件setResolveFile()
脚本 主备切换过程(keepalive实现)——切换为slave主节点
check_slaveNode_pxc() \"bootstrap\"检查其他节点的pxc是否是正常,正常则恢复pxc,此外检查本节点是否在新master的swarm集群中
1.4.3.6 While循环等待主节点产生ping vip检查主节点是否存在
initState!=2?
kill掉nginx相关进程
Main主类入口
1.23 重构容器(pxc集群、tomcat、ntp、redis)
1.8.2 主或从节点Redis复制与备份设置
form_mapinfo.py
operation_lun.py
1.4.5.1 检查pxc集群状态,先主后从检查,可处理脑裂、swarm等问题
1.1 启动后端网口11113,11114监听
调用后端ifRestartKA(),判断是否重启keepalived.(1)不重启情况(返回值为nothing):>aip不在该节点>其余节点pxc状态非alive(2)重启情况(返回值为restart):
脚本 主备切换过程(keepalive实现)——切换为master主节点
notify_node.py
掉线检查
启动mq、MS_Cloud.jar、ES、update_state.sh
NettySend.heartServerCheck();心跳服务检测任务
master_vip是否还在该主机?
2.4 处理该类型消息 SetNodeInitState() -> 启动定时器InitTimer
启动/重建redis容器、执行 start_iam.py 2
DatabaseUtils.java
repair_pxc.sh 定时任务
1.11 设置所有节点前端口和前端包状态(redis db2)
优先查看主节点状态(mysql_status)
返回configIp消息
\"nohup java -jar $ms_jar socketStart server >/dev/null 2>&1 &\"
1.6 获取节点角色role_state
SocketServerThread.java
1.5 初始化redis(6380连接池)
设置节点相关信息到redis(db2)
OFFLINE
SocketAction.java
1.11 启动ETCD startEtcd()
InitState=1
1.3.3.3 新增节点初始化
返回结果fallback?
lost检查
更新node状态update_node_state(2)
返回mosSystemModifyGateway消息
发送configIp消息到Web,同步获取返回值
2.2 GUI配置完网络后调用Web端\"/moss_init/initialization\"接口(MOSS系统初始化)
2.4.1 (1)设置初始化状态InitStat=2(2)配置默认网关 mosSystemModifyGateway
softlink_disk_detect.py
1.24 由于重启tomcat后端Netty连接不上Web端Netty
check_info.py
节点不进行恢复,等待主节点先恢复
从节点同步redis数据
auto_addlun.py
mod_eth0ip.sh
0 条评论
回复 删除
下一页