2016-11-29 13 views
6

Я пытаюсь реализовать это solution (на Win10 x64), но почему-то все узлы SocketCluster отказываются общаться друг с другом.подключающиеся серверы socketcluster

enter image description here

Сотис моя дворняжка. Конфигурация:

  • 1 StateServer [7777]
  • 1 BrokerServer [8888]
  • 2 SocketCluster серверы, работающие на портах [8000, 8001]
  • 1 LoadBalancer [2000], чтобы разделить Trafic между 2 узлы.

Я заверил, что и государство, и брокер Северов слушают: (?)

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

Из того, что я понял до сих пор, BrokerServer вместе с SocketCluster узлы все должны подключиться к StatusServer

Я мог бы успешно подключить BrokerServer к StateServer, но всякий раз, когда я пытаюсь подключиться к любому из сервисов SocketCluster, он сообщает об ошибках «socket hung».

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 } 
+0

Я столкнулся с той же проблемой в linux с последними версиями версий состояния, брокерских и сокетов-кластеров. Вы нашли какое-нибудь обходное решение? – nagamanojv

+0

ну, как только я переключился на Ubuntu, все приступило к работе. Не протестировали последнее репо. – Alexus

+0

Я сейчас на ubuntu. Это не работает. Не знаю, что случилось. – nagamanojv

ответ

1

Оказалось, что масштабирование кластера по горизонтали не работает должным образом на ОС Windows пока (с использованием текущей версии V.1.2. 1). Оба SocketCluster узлы не сообщают withe brokerServer почему-то.

1

Вы случайно используете эти экземпляры в контейнерах Docker?

На основании вывода журнала, который вы получаете с сервера состояния (адрес не определен), похоже, что экземпляр scc-state не может определить IP-адреса ваших экземпляров. Это может произойти по нескольким причинам. Например, запуск экземпляра внутри контейнера Docker может затенять реальный IP-адрес этого экземпляра. Также возможно, что запуск SCC в Windows может вызвать аналогичные проблемы.

Решение этой проблемы заключается в установке переменной среды SCC_INSTANCE_IP при запуске каждого экземпляра. Эта переменная среды должна содержать IP-адрес экземпляра, который могут использовать другие экземпляры для подключения к нему (при использовании Docker вы можете использовать docker inspect, чтобы найти IP-адрес частной сети конкретного контейнера).

SCC_INSTANCE_IP может быть либо частным IP-адресом, общедоступным IP-адресом, либо именем хоста.