Pomelo的master服务器高可用 - NetEase/pomelo GitHub Wiki
Pomelo的master服务器高可用(以LordOfPomelo为例)
使用master高可用的方法和步骤
1. 启动和配置zookeeper相关服务
$ zkServer.sh start
- 在
lordofpomelo/game-server目录下执行./scripts/createZKMasterhaNode.js或者./scripts/createZKMasterhaNode.js /pomelo/master都会在zookeeper中创建/pomelo/masterznode. 可以使用$ zkCli.sh和[zk: localhost:2181(CONNECTED) 1] ls /pomelo/master来查看.
2. lordofpomelo相关配置
-
在
lordofpomelo/game-server目录下执行npm install pomelo-masterha-plugin安装master高可用插件. -
创建文件
lordofpomelo/game-server/config/masterha.json, 文件内容为:
{
"masterha":[
{"id": "master-server-1", "host": "127.0.0.1", "port":3006},
{"id": "master-server-1", "host": "127.0.0.1", "port":3007}
]
}
注: 如果是在分布式部署的环境下使用master高可用, 则上面的host应填写相应机器的IP地址, 如: pomelo16.server.163.org, 注意: 这时不要填写127.0.0.1或者localhost.
- 在文件
lordofpomelo/game-server/app.js中添加master高可用相关代码:
...
var masterhaPlugin = require('pomelo-masterha-plugin');
...
// master high availability
app.use(masterhaPlugin, {
zookeeper: {
server: '127.0.0.1:2181',
path: '/pomelo/master'
}
});
...
注: 如果是在分布式部署的环境下使用master高可用, 则上面的server应填写zookeeper服务所在机器的IP地址和端口, 如: pomelo17.server.163.org:2181, 注意: 这时不要填写127.0.0.1:2181或者localhost:2181.
至此, 相关配置就完成了.
3. 启动master高可用服务
- 在目录
lordofpomelo/game-server下执行pomelo start -e production启动game-server服务器集群; 在目录lordofpomelo/game-server下执行./scripts/startMasterhaNode.sh启动master高可用热备节点. 可以使用$ zkCli.sh和[zk: localhost:2181(CONNECTED) 2] ls /pomelo/master/lock来查看, 当前应有的3个master节点. 在目录lordofpomelo/web-server下执行node app.js启动web-server, 这时应可以正常登录并进行游戏.
注: ./scripts/startMasterhaNode.sh文件的内容如下:
#!/usr/bin/env bash
pomelo masterha /config/masterha.json
该文件一定要在目录lordofpomelo/game-server下执行.
4. 检验master高可用服务
-
使用
$ pomelo-cli和monitor@pomelo : all>show servers来查看master服务器状态, 可以看到当前主master服务器的相关信息, 如master-server-1 master 127.0.0.1 3005 4305 14.55 8.93. -
我们使用
$ kill 4305来kill掉当前的主master服务进程. 切换到启动master高可用服务的终端窗口, 可以看到某个master高可用热备节点被提升为主master服务进程的信息, 如server host: 127.0.0.1, port: 3007 now is promoted to master!. 使用$ zkCli.sh和[zk: localhost:2181(CONNECTED) 3] ls /pomelo/master/lock来查看, 当前应有的2个master节点. -
使用
$ pomelo-cli -P 3007和monitor@pomelo : all>show servers来查看master服务器状态, 可以看到当前主master服务器的相关信息, 如master-server-1 master 127.0.0.1 3007 4421 21.18 34.53. 并且, 此时其它服务进程不受任何应用, 用户仍然可以正常进行游戏. -
这时可以在目录
lordofpomelo/game-server下使用pomelo stop -P 3007来关闭game-server服务器集群.
5. 说明
- 具体代码可以参考lordofpomelo的
master分支. - 该功能需要 pomelo@
0.7.2及以上版本, pomelo-masterha-plugin@0.0.4及以上版本支持.