本插件用于为eggjs提供poemlo管理功能(pomelo-cli web版本)
- 支持 pomelo-cli 全部命令
- 支持多个 Master 连接
egg-pomelo 版本 | egg 2.x
$ npm i egg-pomelo --save
// config/plugin.js
exports.pomelo = {
enable: true,
package: 'egg-pomelo',
};
// {app_root}/config/config.default.js
exports.pomelo = {
client: {
master: [{
alias:'myTestMaster',
host: '127.0.0.1',
port: 3005,
username: 'admin',
password: 'admin',
},
{
host: '192.168.0.12',
port: 3005,
username: 'admin',
password: 'admin',
},
],
},
};
egg-pomelo 通过 masterName 来区分命令在哪一个 Pomelo Master 上运行。 master命令规则如下:
let masterName = `${host}-${port}`;
上面配置项的 masterName 分别为:
- 127.0.0.1-3005
- 192.168.0.12-3005
请到 config/config.default.js 查看详细配置项说明。
/** 运行命令
*
* @param {string} cmd 命令对象
* @param {string} context 上下文(服务器名称)
* @param {string} masterName 连接的那一台Master
*
* @return {{status:boolean},{data:object}} data 返回数据
*/
async runAction(cmd, context = 'all', masterName = '');
- masterName,执行命令的目的Master,masterName 规则参见
例子:
// get servers
const ret = await this.app.pomelo.runAction('show servers', 'all','myTestMaster');
// get handler
const retHandler = await this.app.pomelo.runAction('show handler', 'chat-1','127.0.0.1-3005');
运行字符串脚本
/** 在指定的node 上执行脚本字符串
*
* @param {string} script 脚本内容
* @param {string} context 执行上下文 serverId
* @param {string} masterName 连接的那一台Master
*/
async execStr(script, context, masterName = '');
- masterName,执行命令的目的Master,masterName 规则参见
例子:
await this.app.pomelo.execStr('var cpus = os.cpus();result = util.inspect(cpus,true,null);','chat-1','127.0.0.1-3005');
执行 egg-pomelo 管理命令
/** 运行 egg-pomelo 管理命令
* run egg-pomelo manager command
*
* @param {string} cmd 命令对象
*
* @return {{status:boolean},{data:object}} data 返回数据
*/
async runMgrCmd(cmd);
例子:
const ret = await this.app.pomelo.runMgrCmd('getMasters');
- getMasters, 获取当前拥有的master列表。
consts.COMANDS_ALL = [
[ 'command', ' description' ],
[ '?', ' symbol for help' ],
[ 'help', ' display the help' ],
[ 'quit', ' quit pomelo-cli' ],
[ 'kill', ' kill all servers' ],
[ 'exec', ' exec script files' ],
[ 'get', ' equal to app.get(key) ' ],
[ 'set', ' equal to app.set(key, value)' ],
[ 'add', ' add server to pomelo clusters' ],
[ 'stop', ' stop server. Takes serverId as argument' ],
[ 'show', ' show infos like : user, servers, connections, connectionInfo' ],
[ 'use', ' use another server. Takes serverId as argument' ],
[ 'enable', ' enable an admin console module or enable app settings' ],
[ 'disable', ' disable an admin console module or disable app settings' ],
[ 'addCron', ' add cron for server' ],
[ 'removeCron', ' remove cron for server' ],
[ 'blacklist', ' add blacklist for frontend server' ],
[ 'run', ' run script in server' ],
[ 'execStr', ' exec script String' ],
[ 'systemInfo', ' show server systeminfo' ],
[ 'nodeInfo', ' show node info' ],
[ 'monitorLog', ' get Log' ],
];
- update readme;
- 规范化 masterName 命名规则
- execStr add master support
- 增加多个Master连接功能;
- 使用 sex-pomelo-admin 1.0.7;
- 实现确保多个命令并行执行时,返回数据顺序正确;
- 使用 sex-pomelo-admin 1.0.6
- 支持 show connectionInfo 命令
- 使用 sex-pomelo-admin 1.0.5
- 增加语法提示功能
- 增加 monitorLog,systemInfo,nodeInfo 功能接口
- 实现基本功能
请到 egg-pomelo issues 异步交流。