9

我正在尝试实现这个解决方案(在 Win10 x64 上),但由于某种原因,所有 SocketCluster 节点都拒绝相互通信。

在此处输入图像描述

所以这是我的cur。配置:

  • 1 个状态服务器 [7777]
  • 1 个代理服务器 [8888]
  • 2 个 SocketCluster 服务器在端口 [8000, 8001] 上运行
  • 1 LoadBalancer [2000] 在 2 个节点之间划分流量。

我确保 State 和 Broker 服务器都在监听:

  TCP    [::]:7777              [::]:0                 LISTENING
  TCP    [::]:8888              [::]:0                 LISTENING

从我目前所了解BrokerServer的情况来看,SocketCluster节点应该都连接到StatusServer(?)

我可以成功连接BrokerServerStateServer,但是每当我尝试连接任何SocketCluster服务时,它都会报告“套接字挂起”错误。

StateServer

SC Cluster State Server is listening on port 7777
Sever d08298c6-523f-4c1b-9fcc-efd4e92fab22 at address undefined on port 8888 joined the cluster
Client 10612bde-514f-40d3-9340-7179a1901376 at address undefined joined the cluster
Cluster state converged to active:["ws://[undefined]:8888"]

SocketCluster实例:

{ SocketProtocolError: Socket hung up
    at Emitter.SCSocket._onSCClose (C:\Users\Alex\AppData\Roaming\npm\node_modules\sc-cluster-broker-client\node_modules\socketcluster-client\lib\scsocket.js:596:15)
    at Emitter.<anonymous> (C:\Users\Alex\AppData\Roaming\npm\node_modules\sc-cluster-broker-client\node_modules\socketcluster-client\lib\scsocket.js:285:12)
    at Emitter.emit (C:\Users\Alex\AppData\Roaming\npm\node_modules\sc-cluster-broker-client\node_modules\component-emitter\index.js:131:20)
    at Emitter.SCEmitter.emit (C:\Users\Alex\AppData\Roaming\npm\node_modules\sc-cluster-broker-client\node_modules\sc-emitter\index.js:28:26)
    at Emitter.SCTransport._onClose (C:\Users\Alex\AppData\Roaming\npm\node_modules\sc-cluster-broker-client\node_modules\socketcluster-client\lib\sctransport.js:175:30)
    at WebSocket.wsSocket.onerror (C:\Users\Alex\AppData\Roaming\npm\node_modules\sc-cluster-broker-client\node_modules\socketcluster-client\lib\sctransport.js:104:12)
    at WebSocket.onError (C:\Users\Alex\AppData\Roaming\npm\node_modules\sc-cluster-broker-client\node_modules\ws\lib\WebSocket.js:452:14)
    at emitOne (events.js:96:13)
    at WebSocket.emit (events.js:188:7)
    at WebSocket.EventEmitter.emit (C:\Users\Alex\AppData\Roaming\npm\node_modules\socketcluster\node_modules\sc-domain\index.js:12:31)
  name: 'SocketProtocolError',
  message: 'Socket hung up',
  code: 1006 }
4

2 回答 2

2

Are you running those instances in Docker containers by any chance?

Based on the log output that you're getting from the state server (address undefined), it looks like the scc-state instance cannot figure out your instances' IP addresses. This can happen for several reasons. For example, running an instance inside a Docker container can obscure that instance's real IP address. It's also possible that running SCC on Windows could cause similar problems.

The solution to this problem is to set an SCC_INSTANCE_IP environment variable when launching each instance - This environment variable should hold the IP address of the instance which other instances can use to connect to it (if using Docker, you can use the docker inspect command to find the private network IP address of a specific container).

SCC_INSTANCE_IP can be either a private IP address, public IP address or a hostname.

于 2017-12-30T21:18:57.423 回答
1

事实证明,水平扩展集群在 Windows 操作系统上还不能正常工作(使用当前版本 v.1.2.1)。由于某种原因,两个SocketCluster节点都没有与 通信。brokerServer

于 2016-12-05T08:02:09.167 回答