server redundancy

General topics regarding OPC Foundation and communication technology in general.

Moderator: Support Team

Post Reply
kp85
Sr. Member
Sr. Member
Posts: 16
Joined: 02 Sep 2011, 19:30

server redundancy

Post by kp85 »

hi

I wonder if in your example of multiple server if there is one that supports redundancy! and how to implement such a server
Last edited by kp85 on 07 Feb 2013, 11:00, edited 1 time in total.

User avatar
Support Team
Hero Member
Hero Member
Posts: 3064
Joined: 18 Mar 2011, 15:09

Re:server redundancy

Post by Support Team »

Hello,

Before I can explain how to configure redundancy with the Unified Automation products, I need to explain the OPC UA concepts for redundancy.

OPC UA defines two main modes for server redundancy, non-transparent and transparent. Non-transparent has the sub modes Cold, Warm and Hot.

In the non-transparent case, all servers in the redundant set have their own Server URI and Endpoint URLs. Every server in the redundant set provides a list of the other redundant servers in the set (Server URI) and the sub mode (Cold, Warm or Hot). With this feature a client need to know only one server and can find the other available servers through the information in the server object (Objects -> Server -> ServerRedundancy). The advantage of non-transparent redundancy is that it is easy to support on the server side. The disadvantage is that the client needs to do something to benefit from redundancy. But it would be easy to implement a generic support in the client with the information provided by the server.

In the transparent case, all servers in the redundant set have the same Server URI and Endpoint URLs. The servers are running in a cluster with the same IP-Address. A client cannot connect to a specific server but he can request the list of available server and their status in Objects -> Server -> ServerRedundancy. The advantage of transparent redundancy is that the client needs to know nothing about redundancy to benefit for the redundant servers. The disadvantage is the higher effort on the server side.

The C++ Server SDK from Unified Automation supports both main modes for server redundancy, non-transparent and transparent. For transparent redundancy an additional module is needed that is not part of the standard SDK. It is available on request. The non-transparent configuration can also be used in the UaGateway V1.2.

Non-Transparent redundancy can be configured in the ServerConfig.xml file. See example below. In addition you should configure both servers to register with the Local Discovery Server (LDS) on the other computer. It is possible to configure more than two servers.

Code: Select all

  <!--Provides the redundancy settings for the server-->
  <RedundancySettings>
    <!--Redundancy support options are None, Cold, Warm, Hot and Transparent. Transparent requires special module. -->
    <RedundancySupport>Hot</RedundancySupport>
    <!--List of server URIs for the servers in the NonTransparent redundant set.--> 
    <ServerUri>urn:PC1:UnifiedAutomation:RedundancySample</ServerUri>
    <ServerUri>urn:PC2:UnifiedAutomation:RedundancySample</ServerUri>
  </RedundancySettings>

  <!--Discovery configuration
      Configuration for registration with discovery server(s)-->
  <DiscoveryRegistration>
    <!--Interval in milliseconds for registration with discovery server(s) -->
    <RegistrationInterval>30000</RegistrationInterval>
    <!--List of discovery servers to register with.
        If the list is empty, no registration is executed. 
        Default is opc.tcp://localhost:4840 for the local discovery server.
        Additional remote discovery servers can be added-->
    <Url>opc.tcp://PC1:4840</Url>
    <Url>opc.tcp://PC2:4840</Url>
  </DiscoveryRegistration>
  <!--Discovery configuration end--> 
Best Regards,
Unified Automation Support Team
Last edited by Support Team on 07 Feb 2013, 11:00, edited 1 time in total.
Best regards
Unified Automation Support Team

kp85
Sr. Member
Sr. Member
Posts: 16
Joined: 02 Sep 2011, 19:30

Re:server redundancy

Post by kp85 »

hi

thank you for the clarification. I want to know if the active server and the redundant server can run on the same computer because I board change the xml file but I board not redundant server.
Last edited by kp85 on 07 Feb 2013, 11:00, edited 1 time in total.

User avatar
Support Team
Hero Member
Hero Member
Posts: 3064
Joined: 18 Mar 2011, 15:09

Re:server redundancy

Post by Support Team »

You can run both redundant servers on the same computer.

But they need to have different ports and different Server URIs.

If you use the default ServerConfig.xml file, the Server URI is created from the computer name. You must change the URI in the configuration to be unique for every server e.g. by adding something unique at the end.


Best Regards,
Unified Automation Support Team
Last edited by Support Team on 07 Feb 2013, 11:00, edited 1 time in total.
Best regards
Unified Automation Support Team

kp85
Sr. Member
Sr. Member
Posts: 16
Joined: 02 Sep 2011, 19:30

Re:server redundancy

Post by kp85 »

hi
I board modify the ServerConfig.xml file as you have told me I board but not redundant server and also I would like if you have an example ServerConfig.xml file to show me?
Last edited by kp85 on 07 Feb 2013, 11:00, edited 1 time in total.

kp85
Sr. Member
Sr. Member
Posts: 16
Joined: 02 Sep 2011, 19:30

Re:server redundancy

Post by kp85 »

hello I would like to know if you have a sample configuration file for a redundant server on the same machine with two different ports in c + + because I change my configuration XML file but I board not redundant server.
Last edited by kp85 on 07 Feb 2013, 11:00, edited 1 time in total.

User avatar
Support Team
Hero Member
Hero Member
Posts: 3064
Joined: 18 Mar 2011, 15:09

Re:server redundancy

Post by Support Team »

Here are sample snippets for the XML configuration.
You need to replace MyPC in all places with your computer name.

Server Instance information (original):

Code: Select all

  <!--Server instance information defined for the server installation.
      [NodeName} can be used as placeholder for the computer name. -->
  <ServerUri>urn:[NodeName]:UnifiedAutomation:UaDemoserver</ServerUri>
  <ServerName>OpcDemoServer@[NodeName]</ServerName>
  <!--Server instance information end-->
Server Instance information (Server1):

Code: Select all

  <!--Server instance information defined for the server installation.
      [NodeName} can be used as placeholder for the computer name. -->
  <ServerUri>urn:MyPC:UnifiedAutomation:UaDemoserver:Server1</ServerUri>
  <ServerName>OpcDemoServer_1@MyPC</ServerName>
  <!--Server instance information end-->
Server Instance information (Server2):

Code: Select all

  <!--Server instance information defined for the server installation.
      [NodeName} can be used as placeholder for the computer name. -->
  <ServerUri>urn:MyPC:UnifiedAutomation:UaDemoserver:Server2</ServerUri>
  <ServerName>OpcDemoServer_2@MyPC</ServerName>
  <!--Server instance information end-->
Endpoint configuration (original):

Code: Select all

  <UaEndpoint>
    <SerializerType>Binary</SerializerType>
    <!-- URL of the Endpoint 
         This URL is used for Discovery and to open the Endpoints in the UA stack if no StackUrl ist configured.
         [NodeName] can be used as placeholder for the computer name. -->
    <Url>opc.tcp://[NodeName]:4841Url>
Endpoint configuration (Server 1):

Code: Select all

  <UaEndpoint>
    <SerializerType>Binary</SerializerType>
    <!-- URL of the Endpoint 
         This URL is used for Discovery and to open the Endpoints in the UA stack if no StackUrl ist configured.
         [NodeName] can be used as placeholder for the computer name. -->
    <Url>opc.tcp://MyPC:50501</Url>
Endpoint configuration (Server 2):

Code: Select all

  <UaEndpoint>
    <SerializerType>Binary</SerializerType>
    <!-- URL of the Endpoint 
         This URL is used for Discovery and to open the Endpoints in the UA stack if no StackUrl ist configured.
         [NodeName] can be used as placeholder for the computer name. -->
    <Url>opc.tcp://MyPC:50502</Url>
Redundancy settings (same for both servers)

Code: Select all

  <!--Provides the redundancy settings for the server-->
  <RedundancySettings>
    <!--Redundancy support options are None, Cold, Warm, Hot and Transparent. Transparent requires special module. -->
    <RedundancySupport>Hot</RedundancySupport>
    <!--List of server URIs for the servers in the NonTransparent redundant set. 
    <ServerUri>urn:MyPC:UnifiedAutomation:UaDemoserver:Server1</ServerUri>
    <ServerUri>urn:MyPC:UnifiedAutomation:UaDemoserver:Server2</ServerUri>-->
  </RedundancySettings>
Best regards
Unified Automation Support Team

rpatel010
Jr. Member
Jr. Member
Posts: 1
Joined: 09 Jul 2015, 23:40

Re: server redundancy

Post by rpatel010 »

I am trying to setup non-transparent redundancy and this is very helpful.

Can anyone shed some lights on what do we need to do on client end?

Any help is greatly appreciated.

User avatar
Support Team
Hero Member
Hero Member
Posts: 3064
Joined: 18 Mar 2011, 15:09

Re: server redundancy

Post by Support Team »

Hi,

In version 1.03 of OPC UA Part 4 the description of client behavior for the different redundancy modes was enhanced a lot. You can download the specification from the OPC Foundation website also as non-member:
https://opcfoundation.org/developer-too ... -services/

Version 1.03 is a release candidate at the moment but the final release will be available this month.

You can find the details in chapter 6.4.2.4.

Best Regards,
Unified Automation Support Team

User avatar
Support Team
Hero Member
Hero Member
Posts: 3064
Joined: 18 Mar 2011, 15:09

Re: server redundancy

Post by Support Team »

Hi,

Transparent redundancy requires first of cluster software to be able to run more than one network node with the same IP-address. On Windows, this can be done with the Network Load Balancing (NLB) feature of Windows Server.

In addition, the OPC UA servers in a transparent redundant set need to synchronize all Sessions and Subscriptions created by clients and all related status information between each other. This synchronization is handled by an additional SDK module that is not included in the normal SDK license.

The additional module handles most of the synchronization but there is additional customizing and integration effort necessary to fully support transparent redundancy. Please contact sales@unifiedautomation.com if you are interested in this module and the necessary integration support.

The additional module provides the synchronization functionality that is necessary for NonTransparent redundancy with mode HotPlusMirrored but this option was not requested by a customer yet and is therefore not completed.

Best Regards,
Unified Automation Support Team

nikhilmv
Full Member
Full Member
Posts: 8
Joined: 20 May 2019, 06:27

Re: server redundancy

Post by nikhilmv »

Do we have server redundancy for C# package as well?

User avatar
baldo
Hero Member
Hero Member
Posts: 25
Joined: 19 Nov 2019, 12:15

Re: server redundancy

Post by baldo »

Do we have server redundancy for C# package as well?
Yes, but only Non-transparent redundancy.

User avatar
Support Team
Hero Member
Hero Member
Posts: 3064
Joined: 18 Mar 2011, 15:09

Re: server redundancy

Post by Support Team »

Hello,

yes that is correct, the C# .NET SDK hhas only the option for non-transparent redundancy, which is (sinple spoken) just the announcement of other (alternative) servers and their Endpoints. The client can find this information in server address space, read out, and (in case of failure) connect to the alternative. But all "initiative" (intelligence/logic for failover) has to be implemented on the client side.
Best regards
Unified Automation Support Team

Post Reply