Pomelo的分布式部署方法

技术文档网 2021-06-11
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函数相关部分.

相关文章

  1. 硅谷互联网公司的开发流程

    开发流程包括这么几个阶段: OKR 的设立; 主项目及其子项目的确立; 每个子项目的生命周期; 主项目的生命周期; 收尾、维护、复盘。 第一点,OKR 的设立 所有项目的起始,都应该从 Ro

  2. RESTful-表述性状态转移风格

    REST英文全拼:Representational State Transfer 面向资源编程 资源指的就是一类数据 产品表->就是产品资源 最重要的是如何表示一个资源 地址即

  3. 稳定性思考

    产品功能线 0-1: 当系统从无到有的时候,首要考虑的是研发效率,功能快速迭代,满足快速增长的业务需求 1-10 系统已经搭建起来,此时考虑的是系统的稳定性。 可用性:1.隔离:区分出核心和非核心功能

  4. Supervisor守护队列发邮件

    安装 CentOS: yum -y install supervisor Debien/Ubuntu适用:apt-get install supervisor 配置 修改主配置文件:vim /et

  5. 安装libsodium,让服务器支持chacha20等加密方式

    用chacha20加密方式需要安装libsodium 注意:libsodium从1.0.15开始就废弃了aes-128-ctr yum install wget m2crypto git libsod

随机推荐

  1. 硅谷互联网公司的开发流程

    开发流程包括这么几个阶段: OKR 的设立; 主项目及其子项目的确立; 每个子项目的生命周期; 主项目的生命周期; 收尾、维护、复盘。 第一点,OKR 的设立 所有项目的起始,都应该从 Ro

  2. RESTful-表述性状态转移风格

    REST英文全拼:Representational State Transfer 面向资源编程 资源指的就是一类数据 产品表->就是产品资源 最重要的是如何表示一个资源 地址即

  3. 稳定性思考

    产品功能线 0-1: 当系统从无到有的时候,首要考虑的是研发效率,功能快速迭代,满足快速增长的业务需求 1-10 系统已经搭建起来,此时考虑的是系统的稳定性。 可用性:1.隔离:区分出核心和非核心功能

  4. Supervisor守护队列发邮件

    安装 CentOS: yum -y install supervisor Debien/Ubuntu适用:apt-get install supervisor 配置 修改主配置文件:vim /et

  5. 安装libsodium,让服务器支持chacha20等加密方式

    用chacha20加密方式需要安装libsodium 注意:libsodium从1.0.15开始就废弃了aes-128-ctr yum install wget m2crypto git libsod