Pomelo的master服务器高可用(以LordOfPomelo为例)

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启动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-climonitor@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 3007monitor@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. 说明

标签:无
palmtoy 在 2013-11-14 17:37发布
palmtoy 在 2013-11-15 09:39重新编辑 分享到 weibo
6 回复
#1 py8765 2013-11-14 17:39 回复
#2 halfblood 2013-11-14 17:57 回复

赞……

#3 numbcoder 2013-11-14 17:58 回复

牛逼!enter image description here

#4 w3hacker 2013-11-15 08:45 回复

赞~

#5 roytan 2013-11-15 12:27 回复

好的,空了来试一试,thanks

#6 {1} hjp20061013 2013-11-15 16:16 回复

master服务器高可用的需求不多吧,我都重来没这个需求@palmtoy

palmtoy 2013-11-18 09:40 回复

在有些基于Pomelo框架开发的大规模网络应用服务器集群中会有使用这个功能的需求. 例如一个master服务器需要连接200个(或以上)应用服务器的场景, 我们的另一个项目"网易消息推送平台"就需要这个功能来保证master服务器的高可用.

回到顶部