Question

Stream Service - JOINING_FAILED - Failed to bind

Hi all,

I am new to Pega 8 and have seen that I am getting some issues with Stream Service. We have a cluster (agent01, user01, and user02 for example) and we are using DSS to set the value of the ports.

  • prconfig/dsm/services/stream/pyport/default
  • prconfig/dsm/services/stream/pybrokerport/default
  • prconfig/dsm/services/stream/pykeeperport/default
  • prconfig/dsm/services/stream/pyjmxport/default

The problem is eventually when we restart the instances we get "ChannelException: Failed to bind to:ourHost:port" because the port is showing as already taken while before that it joined fine. Consequently stream service is then down.

Some conclusions I have made:

It seems that nodes are fighting for resources since they are all using the same DSS values for the ports. Also it seems like any node is attempting to auto join after a restart as opposed to just agent01.

Because of how everything is setup we are hoping to avoid creating unique prconfig.xml files if possible. I am aware we can set the ports there.

all of that to ask these questions:

  1. Is there an auto join feature or anyway of influencing that process?
  2. Is DSS the right/wrong approach when in a clustered environment?
  3. What influence will setting the (-DNodeType=Stream)have and any ramifications we need to be aware of?

Hoping for an eloquent solution to avoid prconfig but may not exist. Thanks in advance for assistance on this newbie question.

-Ben

***Edited by Moderator: Lochan to update platform capability tags***

Correct Answer
November 24, 2019 - 8:32pm

If you have multiple JVMs running on the same machine then you will have to change the port used by stream on every server.

Ensure the following prconfig settings are unique for each stream node and restart the JVMs:

dsm/services/stream/pyBrokerPort (default9092)

dsm/services/stream/pyKeeperPort (default 2181)

dsm/services/stream/pyJmxPort ( default 9999)

dsm/services/stream/pyPort (default 7003)

 

Comments

Keep up to date on this post and subscribe to comments

November 24, 2019 - 8:32pm

If you have multiple JVMs running on the same machine then you will have to change the port used by stream on every server.

Ensure the following prconfig settings are unique for each stream node and restart the JVMs:

dsm/services/stream/pyBrokerPort (default9092)

dsm/services/stream/pyKeeperPort (default 2181)

dsm/services/stream/pyJmxPort ( default 9999)

dsm/services/stream/pyPort (default 7003)

 

November 24, 2019 - 11:32pm

Adding to above when you set -Dnodetype=stream, the nodes automatically start to add the stream landing page.

For starter try keeping only one node as stream make it stable and then add the other node based on port configurations as suggested above