Pomelo的分佈式部署方法(以LordOfPomelo爲例)

Pomelo的分佈式部署(以LordOfPomelo爲例)

分佈式部署的方法和步驟

1. 系統及應用軟件環境搭建和配置

所有參與分佈式部署的機器:

  • 必須爲同類操作系統(建議爲完全相同的操作系統, 本文所示例的4臺機器的操作系統均爲"Debian GNU/Linux 7.0").
  • 必須都有一個同名的用戶(如:"pomelo"等, 本文所示例的4臺機器均有一個名爲"pomelo"的用戶).
  • Node.js的安裝版本必須完全相同, 安裝的絕對路徑也必須完全相同(本文所示例的安裝絕對路徑爲"/home/pomelo/node-v0.10.21-linux-x64").
  • “lordofpomelo"所放置的絕對路徑也必須完全相同(本文所示例的絕對路徑爲”/home/pomelo/lordofpomelo").
  • 在所有參與分佈式部署的機器上配置ssh登錄選項. 方法爲: 在"~/.ssh"目錄下創建一個名爲"config"的文件(本文所示例的目錄爲"/home/pomelo/.ssh"), 文件內容如下:
Host *
HashKnownHosts no
CheckHostIP no
StrictHostKeyChecking no

上述文件的目的是使得各個機器之間可以進行順暢的ssh登錄. 各選項的含義請參考ssh_config.

2. 全局安裝Pomelo, 安裝lordofpomelo依賴包

$ npm install pomelo -g
$ cd lordofpomelo
$ sh npm-install.sh

詳細的步驟請參考安裝pomeloLordOfPomelo-安裝指南.

3. 修改lordofpomelo中相關配置文件

  • 修改"lordofpomelo/shared/config/mysql.json": 將其中的host的地址修改爲MySql所在機器的IP地址, 注意: 不要填寫"127.0.0.1"或者"localhost". 具體的配置如下所示, 大家可以根據實際情況修改對應配置項:
{
	"development": {
	  "host" : "pomelo3.server.163.org",
	  "port" : "3306",
	  "database" : "Pomelo",
	  "user" : "xy",
	  "password" : "dev"
	},
	"production": {
	  ...
	}
}
  • 修改"lordofpomelo/game-server/config/master.json": 將其中的host的地址修改爲master所在機器的IP地址(即, 將要在哪臺機器上使用pomelo start來啓動game-server服務器集羣), 注意: 不要填寫"127.0.0.1"或者"localhost". 具體的配置如下所示, 大家可以根據實際情況修改對應配置項:
{
    "development":{
        "id": "master-server-1", "host": "pomelo16.server.163.org", "port": 3005
    },
    "production":
    {
        ...
    }  	
}
  • 修改"lordofpomelo/game-server/config/servers.json": 將其中的host的地址修改爲相應服務進程所在機器的IP地址(即, 將要在哪臺機器上運行該服務進程), 注意: 不要填寫"127.0.0.1"或者"localhost". 具體的配置如下所示, 大家可以根據實際情況修改對應配置項:
{
	"development": {
		...
		"area": [
			{"id": "area-server-1", "host": "pomelo16.server.163.org", "port": 3250, "area": 1},
			{"id": "area-server-2", "host": "pomelo18.server.163.org", "port": 3251, "area": 2},
			{"id": "area-server-3", "host": "pomelo19.server.163.org", "port": 3252, "area": 3},
			...
		],
		...
		"gate": [
			{"id": "gate-server-1", "host": "pomelo16.server.163.org", "clientPort": 3014, "frontend": true}
		],
		...
	},
	"production": {
		...
	}
}
  • 修改"lordofpomelo/web-server/public/js/config/config.js": 將其中的GATE_HOSTGATE_PORT修改爲game-server的gate服務進程所在機器的IP地址和端口, 注意: 如果web-servergame-server的gate服務進程在同一臺機器上則可將GATE_HOST配置爲window.location.hostname, 否則配置相應的IP; 該配置應與"lordofpomelo/game-server/config/servers.json"中gate的配置相對應. 具體的配置如下所示, 大家可以根據實際情況修改對應配置項:
...
    IMAGE_URL: 'http://pomelo.netease.com/art/',
    GATE_HOST: 'pomelo16.server.163.org',
    GATE_PORT: 3014
...

上述步驟都完成後就可以在master所在機器(本文所示例的是"pomelo16.server.163.org")的lordofpomelo/game-server目錄下使用pomelo start命令啓動game-server服務器集羣; 在lordofpomelo/game-server目錄下使用pomelo stop命令停止game-server服務器集羣了. 在另外一臺機器(本文所示例的是"pomelo17.server.163.org"; 當然也可以和上面的master在同一臺機器上)的lordofpomelo/web-server目錄下使用命令node app.js來啓動web-server; 由於web-server是無狀態的web服務器, 則可以通過kill/Ctrl+c來停止.

4. 說明

  • 在分佈式部署中, 啓動/停止各應用服務器的代碼可以參考lordofpomelo/game-server/node_modules/pomelo/lib/master/starter.js中的sshrun函數相關部分.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章