GatewayWorker分布式部署 报错

web0376

当前是2台服务器,一个做为 Register服务(该服务器同时也运行Gateway进程和BusinessWorker进程),Register服务的端口为1238,gatewy 端口:2346,用的nginx 映射443 用在小程序,本机IP 172.17.178.205,可以正常启动并使用,小程序访问一切正常
 
当准备另分布式部署时,内网IP  172.17.178.206,启动的时候,register 服务就提示
 
Register auth timeout (172.17.178.206). See http://wiki.workerman.net/Error4 for detail
 
我看这个文档说有可能端口被占用了,但是这个 1238 端口是我随便写的一个
 
下面是 Register服务器的代码

start_gateway.php
 
// gateway 进程,这里使用Text协议,可以用telnet测试 
$gateway = new Gateway("websocket://0.0.0.0:2346");

// gateway名称,status方便查看
$gateway->name = 'vip';
// gateway进程数
$gateway->count = 16;
// 本机ip,分布式部署时使用内网ip
$gateway->lanIp = '172.17.178.205';
// 内部通讯起始端口,假如$gateway->count=4,起始端口为4000
// 则一般会使用4000 4001 4002 4003 4个端口作为内部通讯端口  
$gateway->startPort = 2900; 
// 服务注册地址
$gateway->registerAddress = '172.17.178.205:1238';

// 心跳间隔 
$gateway->pingInterval = 30;

$gateway->pingNotResponseLimit = 0;
start_register.php
 
// 自动加载类
require_once __DIR__ . '/../../vendor/autoload.php';

// register 必须是text协议
$register = new Register('text://172.17.178.205:1238');

// 如果不是在根目录启动,则运行runAll方法
if(!defined('GLOBAL_START'))
{
    Worker::runAll();
}
 
start_businessworker.php
// 自动加载类
require_once __DIR__ . '/../../vendor/autoload.php';

// bussinessWorker 进程
$worker = new BusinessWorker();
// worker名称
$worker->name = 'YourAppBusinessWorker';
// bussinessWorker进程数量
$worker->count = 4;
// 服务注册地址
$worker->registerAddress = '172.17.178.205:1238';

// 如果不是在根目录启动,则运行runAll方法
if(!defined('GLOBAL_START'))
{
    Worker::runAll();
}

 
以下是准备分布式部署的代码,只有2个文件,删除了start_register.php
 
start_gateway.php

// gateway 进程,这里使用Text协议,可以用telnet测试 
$gateway = new Gateway("websocket://0.0.0.0:2346");

// gateway名称,status方便查看
$gateway->name = 'vip';
// gateway进程数
$gateway->count = 8;
// 本机ip,分布式部署时使用内网ip 
$gateway->lanIp = '172.17.178.206';
// 内部通讯起始端口,假如$gateway->count=4,起始端口为4000
// 则一般会使用4000 4001 4002 4003 4个端口作为内部通讯端口  
$gateway->startPort = 2900; 
// 服务注册地址
$gateway->registerAddress = '172.17.178.205:1238';

// 心跳间隔 
$gateway->pingInterval = 30;

$gateway->pingNotResponseLimit = 0;
start_businessworker.php
 
// bussinessWorker 进程
$worker = new BusinessWorker();
// worker名称
$worker->name = 'YourAppBusinessWorker';
// bussinessWorker进程数量
$worker->count = 4;
// 服务注册地址
$worker->registerAddress = '172.17.178.205:1238';

// 如果不是在根目录启动,则运行runAll方法
if(!defined('GLOBAL_START'))
{
    Worker::runAll();
}

 

阅读 2493
1个回答

walkor

报错里有url地址,里面有说明,已经解释的很详细,自己看下就知道了

  • 宋国杰 2019-01-10

    这个文档看不了了 连接挂掉了 求解决方法啊