mirror of
https://github.com/midoks/mdserver-web.git
synced 2026-10-18 23:45:52 +08:00
redis 主从配置识别
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
<div class="bt-w-menu">
|
||||
<p class="bgw" onclick="pluginService('redis');">服务</p>
|
||||
<p onclick="pluginInitD('redis');">自启动</p>
|
||||
<p onclick="pluginConfigTpl('redis',$('.plugin_version').attr('version'));">配置修改[DEV]</p>
|
||||
<p onclick="pluginConfig('redis');">配置修改</p>
|
||||
<p onclick="getRedisConfig($('.plugin_version').attr('version'));">性能调整</p>
|
||||
<p onclick="redisStatus($('.plugin_version').attr('version'));">负载状态</p>
|
||||
|
||||
+66
-12
@@ -71,15 +71,60 @@ 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 getPidFile():
|
||||
file = getConf()
|
||||
content = mw.readFile(file)
|
||||
rep = 'pidfile\s*(.*)'
|
||||
tmp = re.search(rep, content)
|
||||
return tmp.groups()[0].strip()
|
||||
|
||||
def status():
|
||||
data = mw.execShell(
|
||||
"ps aux|grep redis |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'")
|
||||
|
||||
if data[0] == '':
|
||||
pid_file = getPidFile()
|
||||
if not os.path.exists(pid_file):
|
||||
return 'stop'
|
||||
|
||||
# data = mw.execShell(
|
||||
# "ps aux|grep redis |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'")
|
||||
|
||||
# if data[0] == '':
|
||||
# return 'stop'
|
||||
return 'start'
|
||||
|
||||
def contentReplace(content):
|
||||
service_path = mw.getServerDir()
|
||||
content = content.replace('{$ROOT_PATH}', mw.getRootDir())
|
||||
content = content.replace('{$SERVER_PATH}', service_path)
|
||||
content = content.replace('{$SERVER_APP}', service_path + '/redis')
|
||||
content = content.replace('{$REDIS_PASS}', mw.getRandomString(10))
|
||||
return content
|
||||
|
||||
|
||||
|
||||
def initDreplace():
|
||||
|
||||
@@ -298,13 +343,15 @@ def getRedisConfInfo():
|
||||
conf = getServerDir() + '/redis.conf'
|
||||
|
||||
gets = [
|
||||
{'name': 'bind', 'type': 2, 'ps': '绑定IP(修改绑定IP可能会存在安全隐患)'},
|
||||
{'name': 'port', 'type': 2, 'ps': '绑定端口'},
|
||||
{'name': 'timeout', 'type': 2, 'ps': '空闲链接超时时间,0表示不断开'},
|
||||
{'name': 'maxclients', 'type': 2, 'ps': '最大输入时间'},
|
||||
{'name': 'databases', 'type': 2, 'ps': '数据库数量'},
|
||||
{'name': 'requirepass', 'type': 2, 'ps': 'redis密码,留空代表没有设置密码'},
|
||||
{'name': 'maxmemory', 'type': 2, 'ps': 'MB,最大使用内存,0表示不限制'}
|
||||
{'name': 'bind', 'type': 2, 'ps': '绑定IP(修改绑定IP可能会存在安全隐患)','must_show':1},
|
||||
{'name': 'port', 'type': 2, 'ps': '绑定端口','must_show':1},
|
||||
{'name': 'timeout', 'type': 2, 'ps': '空闲链接超时时间,0表示不断开','must_show':1},
|
||||
{'name': 'maxclients', 'type': 2, 'ps': '最大输入时间','must_show':1},
|
||||
{'name': 'databases', 'type': 2, 'ps': '数据库数量','must_show':1},
|
||||
{'name': 'requirepass', 'type': 2, 'ps': 'redis密码,留空代表没有设置密码','must_show':1},
|
||||
{'name': 'maxmemory', 'type': 2, 'ps': 'MB,最大使用内存,0表示不限制','must_show':1},
|
||||
{'name': 'slaveof', 'type': 2, 'ps': '同步主库地址','must_show':0},
|
||||
{'name': 'masterauth', 'type': 2, 'ps': '同步主库密码', 'must_show':0}
|
||||
]
|
||||
content = mw.readFile(conf)
|
||||
|
||||
@@ -313,6 +360,9 @@ def getRedisConfInfo():
|
||||
rep = "^(" + g['name'] + ')\s*([.0-9A-Za-z_& ~]+)'
|
||||
tmp = re.search(rep, content, re.M)
|
||||
if not tmp:
|
||||
if g['must_show'] == 0:
|
||||
continue
|
||||
|
||||
g['value'] = ''
|
||||
result.append(g)
|
||||
continue
|
||||
@@ -331,7 +381,7 @@ def getRedisConf():
|
||||
|
||||
def submitRedisConf():
|
||||
gets = ['bind', 'port', 'timeout', 'maxclients',
|
||||
'databases', 'requirepass', 'maxmemory']
|
||||
'databases', 'requirepass', 'maxmemory','slaveof','masterauth']
|
||||
args = getArgs()
|
||||
conf = getServerDir() + '/redis.conf'
|
||||
content = mw.readFile(conf)
|
||||
@@ -383,5 +433,9 @@ if __name__ == "__main__":
|
||||
print(getRedisConf())
|
||||
elif func == 'submit_redis_conf':
|
||||
print(submitRedisConf())
|
||||
elif func == 'config_tpl':
|
||||
print(configTpl())
|
||||
elif func == 'read_config_tpl':
|
||||
print(readConfigTpl())
|
||||
else:
|
||||
print('error')
|
||||
|
||||
@@ -25,6 +25,10 @@ EXEC={$SERVER_PATH}/redis/bin/redis-server
|
||||
CLIEXEC="{$SERVER_PATH}/redis/bin/redis-cli -p $REDISPORT$REDISPASS"
|
||||
PIDFILE={$SERVER_PATH}/redis/redis_6379.pid
|
||||
|
||||
echo $REDISPASS
|
||||
echo $REDISPORT
|
||||
echo $CLIEXEC
|
||||
|
||||
mkdir -p {$SERVER_PATH}/redis/data
|
||||
|
||||
redis_start(){
|
||||
@@ -38,18 +42,19 @@ redis_start(){
|
||||
redis_stop(){
|
||||
if [ ! -f $PIDFILE ]
|
||||
then
|
||||
echo "$PIDFILE does not exist, process is not running"
|
||||
echo "$PIDFILE does not exist, process is not running"
|
||||
else
|
||||
PID=$(cat $PIDFILE)
|
||||
echo "Stopping ..."
|
||||
$CLIEXEC shutdown
|
||||
while [ -x /proc/${PID} ]
|
||||
do
|
||||
echo "Waiting for Redis to shutdown ..."
|
||||
sleep 1
|
||||
done
|
||||
echo "Redis stopped"
|
||||
rm -rf $PIDFILE
|
||||
PID=$(cat $PIDFILE)
|
||||
echo "Stopping ..."
|
||||
$CLIEXEC shutdown save 2>/dev/null
|
||||
while [ -x /proc/${PID} ]
|
||||
do
|
||||
echo "Waiting for Redis to shutdown ..."
|
||||
sleep 1
|
||||
done
|
||||
echo "Redis stopped"
|
||||
kill -9 $PID
|
||||
rm -rf $PIDFILE
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
daemonize yes
|
||||
pidfile {$SERVER_PATH}/redis/redis_6379.pid
|
||||
|
||||
loglevel notice
|
||||
logfile {$SERVER_PATH}/redis/data/redis.log
|
||||
databases 16
|
||||
|
||||
timeout 0
|
||||
tcp-keepalive 0
|
||||
|
||||
bind 127.0.0.1
|
||||
port 6379
|
||||
requirepass {$REDIS_PASS}
|
||||
|
||||
################################ SNAPSHOTTING #################################
|
||||
|
||||
save 900 1
|
||||
save 300 10
|
||||
save 60 10000
|
||||
stop-writes-on-bgsave-error yes
|
||||
rdbcompression yes
|
||||
rdbchecksum yes
|
||||
dbfilename dump.rdb
|
||||
dir {$SERVER_PATH}/redis/data/
|
||||
|
||||
################################# REPLICATION #################################
|
||||
|
||||
slave-serve-stale-data yes
|
||||
slave-read-only yes
|
||||
|
||||
repl-disable-tcp-nodelay no
|
||||
slave-priority 100
|
||||
|
||||
# 填写主库信息
|
||||
#slaveof 127.0.0.1 6379
|
||||
#masterauth master_pwd
|
||||
|
||||
################################## SECURITY ###################################
|
||||
|
||||
|
||||
################################### LIMITS ####################################
|
||||
maxclients 10000
|
||||
#maxmemory-samples 3
|
||||
maxmemory 218mb
|
||||
maxmemory-policy volatile-ttl
|
||||
|
||||
############################## APPEND ONLY MODE ###############################
|
||||
|
||||
|
||||
#appendonly no
|
||||
# appendfsync always
|
||||
#appendfsync everysec
|
||||
# appendfsync no
|
||||
#no-appendfsync-on-rewrite no
|
||||
|
||||
auto-aof-rewrite-percentage 100
|
||||
auto-aof-rewrite-min-size 64mb
|
||||
|
||||
################################ LUA SCRIPTING ###############################
|
||||
|
||||
lua-time-limit 5000
|
||||
|
||||
################################## SLOW LOG ###################################
|
||||
|
||||
|
||||
slowlog-log-slower-than 10000
|
||||
slowlog-max-len 128
|
||||
|
||||
############################### ADVANCED CONFIG ###############################
|
||||
|
||||
hash-max-ziplist-entries 512
|
||||
hash-max-ziplist-value 64
|
||||
|
||||
list-max-ziplist-entries 512
|
||||
list-max-ziplist-value 64
|
||||
|
||||
set-max-intset-entries 512
|
||||
|
||||
zset-max-ziplist-entries 128
|
||||
zset-max-ziplist-value 64
|
||||
|
||||
activerehashing yes
|
||||
|
||||
client-output-buffer-limit normal 0 0 0
|
||||
client-output-buffer-limit slave 256mb 64mb 60
|
||||
client-output-buffer-limit pubsub 32mb 8mb 60
|
||||
|
||||
hz 10
|
||||
|
||||
aof-rewrite-incremental-fsync yes
|
||||
Reference in New Issue
Block a user