Skip to content

Pomelo的分布式部署方法

DonFang edited this page Feb 25, 2016 · 9 revisions

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函数相关部分.
Clone this wiki locally