LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

High Availability for LabVIEW-application

Hi,

 

We've created a server-application in LabVIEW that is now running on a Windows-PC. The application is mission-critical and is only visible on the LAN. As we restart each PC/server minimally once per month, this will result in unwanted downtime of the application.

How can we avoid unwanted downtime of our labview-application because of automatic updates.

However we still require patch management.

First I thought of deploying the application to a cRIO or a Linux Server.  cRIO and linux has some drawbacks for our application(no SQL Server communication functionality (ODBC, ADO), less storage/performance, less active directory integration). But the main thing is that the system will always be on our company network and although it is linux, it will also require security patching. (And live kernel patching is complex)

Another solution would be to keep working in Windows, and  completely rewrite the code so that I can run 2 instances of the application and that we have have high availability and that one can take over from the other.

 

Do you guys have any smart suggestions?

Thomas.

 

0 Kudos
Message 1 of 6
(1,546 Views)

Without seeing your application I would consider a cRIO configuration which would send the data back to a storage application on a PC. The cRIO application could utilize storage on the cRIO if the PC is not available, and then transmit that data once a connection has been re-established. I would also consider putting it on a separate network and having two network cards in the PC (one for the local network and one for the company network), thus keeping it off of the company network but allowing the data to be accessible from and stored on the company network.

Message 2 of 6
(1,534 Views)

You don't really specify what you mean with high availability. On one hand you make it look like it is unacceptable that there will be short downtimes because of system restarts that might be caused by software updates to either your application or OS. On the other hand your solution to create two applications that can run alternatingly so you can run the one while updating the second doesn't sound like it would do anything about the OS updates and restarts at all.

 

And I would guess that if you can guarantee proper functionality of your application, that the downtime caused by having to shutdown your application and restart a new version of it, should be a minor factor compared to having to restart your PC (potentially multiple times) during an OS upgrade. So your proposed solution only fixes a minor aspect of your problem, which makes me wonder how well you have assessed your problem.

 

If you really need seamless availability of your services you would have to look into dynamic network routing and management with at least one backup hardware system to which you can divert all the traffic while you do maintenance on the other. And then of course also do any necessary data synchronization between the two systems if you have anything stored outside of the database. This is done on large scale in every modern data center nowadays, but it's not easy to setup and neither trivial to operate. It also requires specialized network infrastructure that can do managed data routing.

Rolf Kalbermatter  My Blog
DEMO, Electronic and Mechanical Support department, room 36.LB00.390
0 Kudos
Message 3 of 6
(1,452 Views)

Hi, thanks for the suggestions. I guess I didn't explain my possible suggestions clear enough, as there is a misunderstanding. I dind't want to suggest to run 2 indentical applications on 1 Pc, so that I could update 1 application and leave the other running. I meant to suggest that a 2 complete identical backend-systems are running (PC + software) and that a load-balancer in front of the application is determining to which backend the client-calls are routed. This way, we can take 1 system down for maintenance if we forward all client calls to the 2nd backend.

But this is indeed a very high-end option.

0 Kudos
Message 4 of 6
(1,429 Views)

does server application imply TCP?

 

what about running two little rpi's (any small linux box) with keepalived and haproxy?  that way if one of the backend servers goes down and even one rpi goes down you're still running....

 

 

0 Kudos
Message 5 of 6
(1,418 Views)

@ThomasV wrote:

Hi,

 

We've created a server-application in LabVIEW that is now running on a Windows-PC. The application is mission-critical and is only visible on the LAN. As we restart each PC/server minimally once per month, this will result in unwanted downtime of the application.

How can we avoid unwanted downtime of our labview-application because of automatic updates.

However we still require patch management.

First I thought of deploying the application to a cRIO or a Linux Server.  cRIO and linux has some drawbacks for our application(no SQL Server communication functionality (ODBC, ADO), less storage/performance, less active directory integration). But the main thing is that the system will always be on our company network and although it is linux, it will also require security patching. (And live kernel patching is complex)

Another solution would be to keep working in Windows, and  completely rewrite the code so that I can run 2 instances of the application and that we have have high availability and that one can take over from the other.

 

Do you guys have any smart suggestions?

Thomas.

 


  1. Well... Desktop Windows is NOT really intended for "mission critical" applications...
  2. That being said the best way to prevent Windows from auto-updating is to NOT connect it to the internet
    1. If Windows can't get the updates then it won't have to reboot to install
    2. This is what we do in our lab. No reason an ALT or long term test needs to be connected to the internet to begin with...
  3. Next best is to use the Windows Professional and then you can make it stop auto-updating by setting it up to be "managed" like you have an IT department that is going to push the updates. 

 

========================
=== Engineer Ambiguously ===
========================
0 Kudos
Message 6 of 6
(1,389 Views)