GatewayWorker分布式部署
配置三台服务器start_gateway.php start_businessworker.php中的registerAddress为['192.168.1.1:1236','192.168.1.2:1236','192.168.1.3:1236']。
设备A 连接接了192.168.1.1 会随机分配 businessworker 1,2,3台来处理信息进行bindUid 绑定
而192.168.1.1 在发送信息 isUidOnline,sendToUid 都是失败了
//第一台192.168.1.1
//start_gateway.php
$gateway_package = new Gateway("tcp://0.0.0.0:8090");
$gateway_package->name = 'GatewayPackage1';
$gateway_package->count = 4;
$gateway_package->lanIp = '192.168.1.1';
$gateway_package->registerAddress = ['192.168.1.1:1236','192.168.1.2:1236','192.168.1.3:1236'];
$gateway_package->startPort = 9566;
$gateway_package->pingInterval = 30;
$gateway_package->pingNotResponseLimit = 2;
// bussinessWorker 进程
$worker = new BusinessWorker();
// worker名称
$worker->name = 'YourAppBusinessWorker1';
// bussinessWorker进程数量
$worker->count = 4;
$worker->registerAddress = ['192.168.1.1:1236','192.168.1.2:1236','192.168.1.3:1236'];
//第二台192.168.1.2
//start_gateway.php
$gateway_package = new Gateway("tcp://0.0.0.0:8090");
$gateway_package->name = 'GatewayPackage2';
$gateway_package->count = 4;
$gateway_package->lanIp = '192.168.1.2';
$gateway_package->registerAddress = ['192.168.1.1:1236','192.168.1.2:1236','192.168.1.3:1236'];
$gateway_package->startPort = 9566;
$gateway_package->pingInterval = 30;
$gateway_package->pingNotResponseLimit = 2;
// bussinessWorker 进程
$worker = new BusinessWorker();
// worker名称
$worker->name = 'YourAppBusinessWorker2';
// bussinessWorker进程数量
$worker->count = 4;
$worker->registerAddress = ['192.168.1.1:1236','192.168.1.2:1236','192.168.1.3:1236'];
//第三台192.168.1.3
//start_gateway.php
$gateway_package = new Gateway("tcp://0.0.0.0:8090");
$gateway_package->name = 'GatewayPackage3';
$gateway_package->count = 4;
$gateway_package->lanIp = '192.168.1.3';
$gateway_package->registerAddress = ['192.168.1.1:1236','192.168.1.2:1236','192.168.1.3:1236'];
$gateway_package->startPort = 9566;
$gateway_package->pingInterval = 30;
$gateway_package->pingNotResponseLimit = 2;
// bussinessWorker 进程
$worker = new BusinessWorker();
// worker名称
$worker->name = 'YourAppBusinessWorker3';
// bussinessWorker进程数量
$worker->count = 4;
$worker->registerAddress = ['192.168.1.1:1236','192.168.1.2:1236','192.168.1.3:1236'];
tcp连接192.168.1.1:8090 bussinessWorker 是随机分配 1,2,3 台服务器来进行绑定 bindUid 绑定uid
可是这样绑定不上 是我的配置有问题还是bindUid 不能互通 ABC 台服务器 可以是B上线 A在根据绑定信息发送指令就不行了
你方向搞错了,register只要一台,business多台就可以了····
麻烦看一下我的分布式配置对吗
1、注意多机部署时以下端口不要被服务器安全组阻挡:
①、Register服务监听的端口要可以被其它内网服务器访问(为了安全,register要监听内网ip不能让其被外网访问);
②、start_gateway.php中如果$gateway->startPort=2300; $gateway->count=4;,则2300 2301 2302 2303四个端口需要被设置成能被其它服务器访问,也就是起始端口$gateway->startPort到$gateway->startPort + $gateway->count - 1这 $gateway->count个端口要设置成能被其它内网服务器访问。
内网端口都开放了 在分配的时候是随机的 是不是要固定一下路由 ip1过来的就是ip处理 是不是就能解决上线bindUid 失败的问题
理论上应该是能互通的, 你客户端有心跳发送没有, 是不是服务端主动给踢掉线了