question

Upvotes

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


treprfarfa-apiload
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
11.3k 25 8 14

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?

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes

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

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvote
50k 125 44 62

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.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes

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

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.