pull/504/head
Mr Chen 2 years ago
parent 37431a76b6
commit fbef641839
  1. 3
      plugins/keepalived/index.html
  2. 40
      plugins/keepalived/index.py
  3. 2
      plugins/keepalived/info.json
  4. 15
      plugins/keepalived/scripts/chk.sh
  5. 2
      plugins/keepalived/scripts/chk_mysql.sh
  6. 32
      plugins/keepalived/tpl/keepalived.mysql.conf
  7. 49
      plugins/keepalived/tpl/keepalived.mysql.note.conf
  8. 2
      plugins/mysql/conf/my5.5.cnf
  9. 2
      plugins/mysql/conf/my5.6.cnf
  10. 2
      plugins/mysql/conf/my5.7.cnf
  11. 2
      plugins/mysql/conf/my8.0.cnf

@ -4,7 +4,8 @@
<div class="bt-w-menu">
<p class="bgw" onclick="pluginService('keepalived');">服务</p>
<p onclick="pluginInitD('keepalived');">自启动</p>
<p onclick="pluginConfig('keepalived');">配置修改</p>
<!-- <p onclick="pluginConfig('keepalived');">配置修改</p> -->
<p onclick="pluginConfigTpl('keepalived',$('.plugin_version').attr('version'));">配置修改</p>
<!-- <p onclick="getRedisConfig($('.plugin_version').attr('version'));">性能调整</p> -->
<!-- <p onclick="redisStatus($('.plugin_version').attr('version'));">负载状态</p> -->
<!-- <p onclick="pluginLogs('keepalived','','run_log');">日志</p> -->

@ -71,6 +71,31 @@ def getArgs():
tmp[t[0]] = t[1]
return tmp
def checkArgs(data, ck=[]):
for i in range(len(ck)):
if not ck[i] in data:
return (False, mw.returnJson(False, '参数:(' + ck[i] + ')没有!'))
return (True, mw.returnJson(True, 'ok'))
def configTpl():
path = getPluginDir() + '/tpl'
pathFile = os.listdir(path)
tmp = []
for one in pathFile:
file = path + '/' + one
tmp.append(file)
return mw.getJson(tmp)
def readConfigTpl():
args = getArgs()
data = checkArgs(args, ['file'])
if not data[0]:
return data[1]
content = mw.readFile(args['file'])
content = contentReplace(content)
return mw.returnJson(True, 'ok', content)
def status():
data = mw.execShell(
@ -85,6 +110,17 @@ def contentReplace(content):
service_path = os.path.dirname(os.getcwd())
content = content.replace('{$SERVER_PATH}', service_path)
content = content.replace('{$PLUGIN_PATH}', getPluginDir())
# 网络接口
ethx = mw.execShell("route -n | grep ^0.0.0.0 | awk '{print $8}'")
if data[1]!='':
# 未找到
content = content.replace('{$ETH_XX}', 'eth1')
else:
#
content = content.replace('{$ETH_XX}', ethx[0])
return content
@ -270,5 +306,9 @@ if __name__ == "__main__":
print(getConf())
elif func == 'run_log':
print(runLog())
elif func == 'config_tpl':
print(configTpl())
elif func == 'read_config_tpl':
print(readConfigTpl())
else:
print('error')

@ -1,6 +1,6 @@
{
"sort": 7,
"ps": "[<span style='color:red;'>潜龙勿用</span>]优秀的高可用软件",
"ps": "[<span style='color:red;'>内网</span>]优秀的高可用软件",
"name": "keepalived",
"title": "keepalived",
"shell": "install.sh",

@ -0,0 +1,15 @@
#!/bin/bash
# check script bash
curPath=`pwd`
rootPath=$(dirname "$curPath")
SOFT=$1
if [ "$SOFT" == "mysql" ];then
bash ${rootPath}/chk_mysql.sh
else
echo "you should use [chk.sh mysql] exp ."
fi

@ -4,7 +4,7 @@ date +'%Y-%m-%d %H:%M:%S'
echo "start check mysql status ..."
counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)
if [ "${counter}" -eq 0 ]; then
echo "check mysql is down, stop keepalive"
echo "check mysql is down, stop keepalive"
systemctl stop keepalived
fi

@ -0,0 +1,32 @@
! Configuration File for keepalived
global_defs {
router_id MYSQL_MHA
}
vrrp_script chk_mysql_port {
script "{$PLUGIN_PATH}/scripts/chk_mysql.sh"
interval 2
weight –5
fall 2
rise 1
}
vrrp_instance VI_1 {
state MASTER
interface {$ETH_XX}
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.10
}
track_script {
chk_mysql_port
}
}

@ -0,0 +1,49 @@
! Configuration File for keepalived
global_defs {
# 路由标识,主从保持一致
router_id MYSQL_MHA
}
#检测mysql服务是否在运行。有很多方式,比如进程,用脚本检测等等
vrrp_script chk_mysql_port {
# 这里通过脚本监测
script "{$PLUGIN_PATH}/scripts/chk.sh mysql"
# 脚本执行间隔,每2s检测一次
interval 2
# 脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 -5
weight –5
# 检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间)
fall 2
# 检测1次成功就算成功。但不修改优先级
rise 1
}
vrrp_instance VI_1 {
# 这里所有节点定义为BACKUP/MASTER
state BACKUP
# 指定虚拟ip的网卡(可能需要手动查看)
# route -n | grep ^0.0.0.0 | awk '{print $8}'
interface {$ETH_XX}
# 路由器标识,MASTER和BACKUP必须是一致的
virtual_router_id 51
# 定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级
priority 99
# 通知间隔秒数(心跳频率)
advert_int 1
# 不抢占模式,在优先级高的机器上设置即可,优先级低的机器可不设置
nopreempt
# 认证信息配置,主从服务器保持一致
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
#虚拟IP(VIP)
192.168.10.10
}
track_script {
chk_mysql_port
}
}

@ -58,7 +58,7 @@ expire_logs_days=7
relay-log=mdserver
relay-log-index=mdserver
#主主互备设置
#多主设置
#auto_increment_offset=2
#auto_increment_increment=2

@ -61,7 +61,7 @@ expire_logs_days=7
relay-log=mdserver
relay-log-index=mdserver
#主主互备设置
#多主设置
#auto_increment_offset=2
#auto_increment_increment=2

@ -62,7 +62,7 @@ expire_logs_days=7
relay-log=mdserver
relay-log-index=mdserver
#主主互备设置
#多主设置
#auto_increment_offset=2
#auto_increment_increment=2

@ -60,7 +60,7 @@ binlog_expire_logs_seconds=2592000
relay-log=mdserver
relay-log-index=mdserver
#主主互备设置
#多主设置
#auto_increment_offset=2
#auto_increment_increment=2

Loading…
Cancel
Save