Pinus的分布式部署方法 - node-pinus/pinus GitHub Wiki
所有参与分布式部署的机器:
- 必须为同类操作系统(建议为完全相同的操作系统, 本文所示例的4台机器的操作系统均为"Debian GNU/Linux 7.0").
- 必须都有一个同名的用户(如:"pinus"等, 本文所示例的4台机器均有一个名为"pinus"的用户).
- Node.js的安装版本必须完全相同, 安装的
绝对路径
也必须完全相同(本文所示例的安装绝对路径为"/home/pinus/node-v0.10.21-linux-x64"). - "lordofpinus"所放置的
绝对路径
也必须完全相同(本文所示例的绝对路径为"/home/pinus/lordofpinus"). - 在所有参与分布式部署的机器上配置
ssh登录选项
. 方法为: 在"~/.ssh"目录下创建一个名为"config"的文件(本文所示例的目录为"/home/pinus/.ssh"), 文件内容如下:
Host *
HashKnownHosts no
CheckHostIP no
StrictHostKeyChecking no
上述文件的目的是使得各个机器之间可以进行顺畅的ssh登录. 各选项的含义请参考ssh_config.
$ npm install pinus -g
$ cd lordofpinus
$ sh npm-install.sh
详细的步骤请参考安装pinus和LordOfPinus-安装指南.
- 修改"lordofpinus/shared/config/mysql.json": 将其中的
host
的地址修改为MySql所在机器的IP地址, 注意: 不要填写"127.0.0.1"或者"localhost". 具体的配置如下所示, 大家可以根据实际情况修改对应配置项:
{
"development": {
"host" : "pinus3.server.163.org",
"port" : "3306",
"database" : "Pinus",
"user" : "xy",
"password" : "dev"
},
"production": {
...
}
}
- 修改"lordofpinus/game-server/config/master.json": 将其中的
host
的地址修改为master
所在机器的IP地址(即, 将要在哪台机器上使用pinus start
来启动game-server
服务器集群), 注意: 不要填写"127.0.0.1"或者"localhost". 具体的配置如下所示, 大家可以根据实际情况修改对应配置项:
{
"development":{
"id": "master-server-1", "host": "pinus16.server.163.org", "port": 3005
},
"production":
{
...
}
}
- 修改"lordofpinus/game-server/config/servers.json": 将其中的
host
的地址修改为相应服务进程所在机器的IP地址(即, 将要在哪台机器上运行该服务进程), 注意: 不要填写"127.0.0.1"或者"localhost". 具体的配置如下所示, 大家可以根据实际情况修改对应配置项:
{
"development": {
...
"area": [
{"id": "area-server-1", "host": "pinus16.server.163.org", "port": 3250, "area": 1},
{"id": "area-server-2", "host": "pinus18.server.163.org", "port": 3251, "area": 2},
{"id": "area-server-3", "host": "pinus19.server.163.org", "port": 3252, "area": 3},
...
],
...
"gate": [
{"id": "gate-server-1", "host": "pinus16.server.163.org", "clientPort": 3014, "frontend": true}
],
...
},
"production": {
...
}
}
- 修改"lordofpinus/web-server/public/js/config/config.js": 将其中的
GATE_HOST
和GATE_PORT
修改为game-server的gate服务进程
所在机器的IP地址和端口, 注意: 如果web-server
与game-server的gate服务进程
在同一台机器上则可将GATE_HOST
配置为window.location.hostname
, 否则配置相应的IP; 该配置应与"lordofpinus/game-server/config/servers.json"中gate
的配置相对应. 具体的配置如下所示, 大家可以根据实际情况修改对应配置项:
...
IMAGE_URL: 'http://pinus.netease.com/art/',
GATE_HOST: 'pinus16.server.163.org',
GATE_PORT: 3014
...
上述步骤都完成后就可以在master
所在机器(本文所示例的是"pinus16.server.163.org")的lordofpinus/game-server
目录下使用pinus start
命令启动game-server
服务器集群; 在lordofpinus/game-server
目录下使用pinus stop
命令停止game-server
服务器集群了. 在另外一台机器(本文所示例的是"pinus17.server.163.org"; 当然也可以和上面的master
在同一台机器上)的lordofpinus/web-server
目录下使用命令node app.js
来启动web-server
; 由于web-server
是无状态的web服务器, 则可以通过kill
/Ctrl+c
来停止.
- 在分布式部署中, 启动/停止各应用服务器的代码可以参考
lordofpinus/game-server/node_modules/pinus/lib/master/starter.js
中的sshrun
函数相关部分.