ADS Load Balancing does not work as expected

Hello,

When trying to use ADS load Balancing (client connectConfig) with the following parameters :

server02*ads*discoveryNetwork : eth0;224.7.8.9|7100

server02*ads*enableConnectConfig : True

server01*ads*enableConnectConfig : True

server01*ads*discoveryNetwork : eth0;224.7.8.9|7100

server01*ads*connectConfig*.active : server01|14002,server02|14002

server02*ads*connectConfig*.active : server01|14002,server02|14002

server02*ads*disableLocalRedirect: False

server01*ads*disableLocalRedirect: False

server01*ads*logDiscoveryEvents: True
server02*ads*logDiscoveryEvents: True
*ads*connectConfig*.numStandby : 0

We use 2.6.1.L1 ADS and ADH binaries

When connecting with several RFA clients (as well as Eikon) we get the following message in the dataBody of the refresh message :

<dataBody>
<elementList flags="0x8 (RSSL_ELF_HAS_STANDARD_DATA)">
<elementEntry name="ConnectionConfig" dataType="RSSL_DT_VECTOR">
<vector flags="0x3 (RSSL_VTF_HAS_SET_DEFS|RSSL_VTF_HAS_SUMMARY_DATA)" countHint="0" containerType="RSSL_DT_ELEMENT_LIST">
<elementSetDefs>
<elementSetDef setId="0">
<elementSetDefEntry name="Hostname" dataType="RSSL_DT_ASCII_STRING" />
<elementSetDefEntry name="Port" dataType="RSSL_DT_UINT" />
<elementSetDefEntry name="LoadFactor" dataType="RSSL_DT_UINT" />
<elementSetDefEntry name="ServerType" dataType="RSSL_DT_ENUM" />
<elementSetDefEntry name="SystemID" dataType="RSSL_DT_ASCII_STRING" />
</elementSetDef>
</elementSetDefs>
<summaryData>
<elementList flags="0x8 (RSSL_ELF_HAS_STANDARD_DATA)">
<elementEntry name="NumStandbyServers" dataType="RSSL_DT_UINT" data="0"/>
</elementList>
</summaryData>
</vector>
</elementEntry>
</elementList>
</dataBody>

As you can see there no server information, which make our RFA clients crash with the following error :

RSSL_Adapter: (Severity) Information: RSSL Channel closing on connection "Default::Connection_XTRA_RSSL server01:14002" due to "connection config decoding error"

Same if we connect to server02.

Any ideas ?

Regards,

Yannick


Tagged:

Answers

  • It seems that ADS did not discover each other, so there is no server information in the Login's refresh message payload.

    Please verify if the value in the discoveryNetwork parameters are correct. Also, could you try to change the hostname in *ads*connectConfig*.active to actual IP address?

    I cannot replicate the crash with RFA C++ 8.0 version. Which version of RFA are you using?

  • Among the different client we tested, we used a RFA 8 JAVA client.

    The discoveryNetwork parameter looks fine, indeed we see multicast UDP packets sent in both directions.

    Also when we use *ads*logDiscoveryEvents: True, we can see UDP packets sent in the logs).

    A netstat -gn shows that we correctly listen on the multicast address.

    We also used the IP addresses.. same result

    Yannick

  • I have tested the above configurations with my ADS servers. After changing eth0;224.7.8.9|7100 to mdhnet;224.7.8.9|7100, the configurations work fine. I can get the list of servers in the login refresh. mdhnet is defined in the /etc/networks file. My servers are in 192.168.27 network.

    /etc/networks

    mdhnet          192.168.27


    Login Refresh

     <elementList flags="0x8 (RSSL_ELF_HAS_STANDARD_DATA)">
    <elementEntry name="ConnectionConfig" dataType="RSSL_DT_VECTOR">
    <vector flags="0x3 (RSSL_VTF_HAS_SET_DEFS|RSSL_VTF_HAS_SUMMARY_DATA)" countHint="0" containerType="RSSL_DT_ELEMENT_LIST">
    <elementSetDefs>
    <elementSetDef setId="0">
    <elementSetDefEntry name="Hostname" dataType="RSSL_DT_ASCII_STRING" />
    <elementSetDefEntry name="Port" dataType="RSSL_DT_UINT" />
    <elementSetDefEntry name="LoadFactor" dataType="RSSL_DT_UINT" />
    <elementSetDefEntry name="ServerType" dataType="RSSL_DT_ENUM" />
    <elementSetDefEntry name="SystemID" dataType="RSSL_DT_ASCII_STRING" />
    </elementSetDef>
    </elementSetDefs>
    <summaryData>
    <elementList flags="0x8 (RSSL_ELF_HAS_STANDARD_DATA)">
    <elementEntry name="NumStandbyServers" dataType="RSSL_DT_UINT" data="0"/>
    </elementList>
    </summaryData>
    <vectorEntry index="3" action="RSSL_VTEA_SET_ENTRY" flags="0x0">
    <elementList flags="0x2 (RSSL_ELF_HAS_SET_DATA)">
    <elementEntry name="Hostname" dataType="RSSL_DT_ASCII_STRING" data="192.168.27.13"/>
    <elementEntry name="Port" dataType="RSSL_DT_UINT" data="14002"/>
    <elementEntry name="LoadFactor" dataType="RSSL_DT_UINT" data="65279"/>
    <elementEntry name="ServerType" dataType="RSSL_DT_ENUM" data="0"/>
    <elementEntry name="SystemID" dataType="RSSL_DT_ASCII_STRING" data="Default"/>
    </elementList>
    </vectorEntry>
    <vectorEntry index="4" action="RSSL_VTEA_SET_ENTRY" flags="0x0">
    <elementList flags="0x2 (RSSL_ELF_HAS_SET_DATA)">
    <elementEntry name="Hostname" dataType="RSSL_DT_ASCII_STRING" data="192.168.27.14"/>
    <elementEntry name="Port" dataType="RSSL_DT_UINT" data="14002"/>
    <elementEntry name="LoadFactor" dataType="RSSL_DT_UINT" data="65279"/>
    <elementEntry name="ServerType" dataType="RSSL_DT_ENUM" data="0"/>
    <elementEntry name="SystemID" dataType="RSSL_DT_ASCII_STRING" data="Default"/>
    </elementList>
    </vectorEntry>
    </vector>
    </elementEntry>
    </elementList>

    If this doesn't solve the problem, please attach the ADS log files and TREP configuration files in the response.

  • Hi,

    Thank you for your answer, but we unfortunately can't make it work. Do you use 2.6.1.L1 binary versions ?
    I replaced eth0 by mdhnet and we have the same behavior. (We tried mdhnet with both interfaces ==> TREP backbone and LAN backbone).

    Here the conf part :

    mkdperf05.1*ads*serverId : 11777
    mkdperf05.3*ads*serverId : 11888
    mkdperf06.1*ads*serverId : 11666
    mkdperf06*ads*discoveryNetwork : mdhnet;224.7.8.9|7100
    mkdperf06*ads*enableConnectConfig : True
    mkdperf05*ads*enableConnectConfig : True
    mkdperf05*ads*discoveryNetwork : mdhnet;224.7.8.9|7100
    mkdperf05*ads*connectConfig*.active : mkdperf05|14002,mkdperf06|14002
    mkdperf06*ads*connectConfig*.active : mkdperf05|14002,mkdperf06|14002
    mkdperf06*ads*disableLocalRedirect: False
    mkdperf05*ads*disableLocalRedirect: False
    mkdperf05*ads*logDiscoveryEvents: True
    mkdperf06*ads*logDiscoveryEvents: True
    *ads*connectConfig*.numStandby : 0

    And the log part :

    ...


    <mkdperf05.1.ads.connectConfig.Default: Debug: Mon Jul 04 14:37:44 2016> Finish DNS callback, initialize discovery channel. <END>

    Nothing special more in the log (just service UP, licence things etc..)

    Yannick

  • Hello,

    Thanks for the reply. Unfortunately we cannot make it work.
    W replaced ethX by mdhnet (modifying mdhnet by the LAN backbone and the TREP backone network address, both won't make it work).

    Do you use 2.6.1.L1 in your tests ?

    Here for the conf part :

    mkdperf05.1*ads*serverId : 11777
    mkdperf05.3*ads*serverId : 11888
    mkdperf06.1*ads*serverId : 11666
    mkdperf06*ads*discoveryNetwork : mdhnet;224.7.8.9|7100
    mkdperf06*ads*enableConnectConfig : True
    mkdperf05*ads*enableConnectConfig : True
    mkdperf05*ads*discoveryNetwork : mdhnet;224.7.8.9|7100
    mkdperf05*ads*connectConfig*.active : mkdperf05|14002,mkdperf06|14002
    mkdperf06*ads*connectConfig*.active : mkdperf05|14002,mkdperf06|14002
    mkdperf06*ads*disableLocalRedirect: False
    mkdperf05*ads*disableLocalRedirect: False
    mkdperf05*ads*logDiscoveryEvents: True
    mkdperf06*ads*logDiscoveryEvents: True
    *ads*connectConfig*.numStandby : 0

    Here for the log part :

    <mkdperf05.1.ads.connectConfig.Default: Debug: Mon Jul 04 14:37:44 2016> Finish DNS callback, initialize discovery channel. <END>

    (Nothing special to signal in the logs. Service Up, Licence things etc..)

    Yannick