"""GreatSQLHA入口"""import fcntlimport socketimport timeimport sysfrom vipha import *from handler import *from global_vars.Class_global_vars import *from config import varsdef main():vip_work = vipha()work = Worker(vip_work)work.vars_init(vars["log_level"], vars) #初始化 参数已经进入 global全局参数logger = global_var.get_global_vars("logger")sleeptime = global_var.get_global_vars("sleeptime")work.check_vars(vars) #做参数检查,检查参数的合法性检查的是vars用户参数lock_file = Nonestat_file = None##以下做文件锁避免多次调用启动try:hostname = socket.gethostname()lock_file = global_var.get_global_vars("lock_file")lock_file_fd = open(lock_file,"w+",encoding = 'utf-8') #文件锁文件#监控文件stat_file = global_var.get_global_vars("stat_file")stat_file_fd = open(stat_file, "w+", encoding = 'utf-8')stat_file_fd.seek(0, 0)stat_file_fd.write("1")stat_file_fd.flush()global_var.set_global_vars("stat_file_fd", stat_file_fd)except Exception as e:logger.error("lock_file:{} create error.\nexcept:{}" . format(lock_file, e))sys.stdout.flush()exit(-1)try:lock_file_fd.write(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))lock_file_fd.flush()fcntl.lockf(lock_file_fd, fcntl.LOCK_EX | fcntl.LOCK_NB)except Exception as e:logger.error("write lock_file:{} fail.\nexcept:{}" . format(lock_file, e))sys.stdout.flush()exit(-1)n = 0while 1: ##大循环检查#检查stat_file状态,以决定后续VIP是否需要漂移#0=>关闭VIP, 1=>维持不变, 2=>启动VIP#自动恢复,设定为20*sleeptime秒,一般监控在1分钟内即可触发报警#循环检查20次if n == 20:stat_file_fd.seek(0, 0)if stat_file_fd.read(1).strip() != '1':stat_file_fd.seek(0, 0)stat_file_fd.write("1")stat_file_fd.flush()logger.warning("stat_file reset to '1' atfer 20*sleeptime")n = 0logger.info("="*30 + "GreatSQLHA stat check loop begin" + '='*30)stat = work.check_stat()vip_stat = work.check_vip(stat)work.set_vip(vip_stat)time.sleep(sleeptime)#本次检查结果不为1(可能状态发生变化了),则重试检查几次,确认不会发生误判stat_file_fd.seek(0, 0)if stat_file_fd.read(1).strip() != '1':n += 1return##程序开始if __name__ == '__main__':main()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型