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 -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-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. 說明

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章