Question for OPCUA minimal failover time


I use ignition to connect to a OPC UA server with configure its failover as shown in below snapshot.
The target is to swapping OPC UA connection from PRIMARY to FAILOVER endpoint within 2 seconds.
But from below snapshot, it spend 36 seconds to switch from PRIMARY to FAILOVER and vice versa. (The Chinese characters means that the remote server forced to disconnect the existing connection (I killed the remote OPCUA sever process to force its failover switch))

Even I change the keep alive time interval and timeout value to 1000 ms. The switch time in the log is still 5 seconds. So is there any way to shorten the switch time of OPC UA server? or is its minimal failover time 5 seconds?

BTW, the method to force switch is: run two OPCUA server process, kill the process of the OPCUA server that connected to ignition.

You’re at the minimum failover time. The failover check only occurs every 5 seconds. It’s not influenced by any of the keep alive settings, but you were on the right track by lowering those.

2 seconds probably isn’t realistic. When you lower the keep alive timeout and allowance to 1 you’re at risk of failing over just because a keep alive read request wasn’t serviced in time, which we see happen e.g. with Kepware somewhat often.


Really appreciate your quick comments. So it seems that the OPCUA failover feature of Ignition can’t meet our requirement.

In fact, the OPCUA server is provided by a PLC devices.
If we connect the PLC devices with Ignition through the Ethernet (the way in Config->Opcua->Device). Could it meet our requirement for failover switch within 2 seconds per your experience?

Devices in Ignition have no failover concept at all. It would have to be completely transparent.

What kind of device is it?

It’s Siemens S7-1500. Do you mean that we need to implement the failover manually with the Ethernet way?

At the device level, failover needs to be completely transparent to Ignition. All of the drivers get configured for a single hostname or IP address and have no concept of failover. The device will just connect and reconnect to the same hostname it’s configured for.

I don’t know how this would be accomplished with your S7-1500’s. That’s the part that would need to be transparent.


Thanks a lot for your detail comments. We will try to see if there is any workaround to implement the failover switch on PLC device side as Ethernet connection way is transparent.


As you said that the Ignition will check the failover every 5 seconds. So it may not meet our requirement.

Is there API that can do failover manually for OPC UA server?

I only saw system.opc.setServerEnabled() to enable and disable it.
With this way, as we use a lot OPC tags, maybe we need to use derived tags to distinguish the primary/bakcup per their different OPC UA server name.

If it could provide API for manual failover, then it’s no need to use derived tags as the the OPC UA server name is still same.

Sorry, there’s no API for this.

Thanks for your confirmation.