# WebDev and Redundancy

**URL:** <https://forum.inductiveautomation.com/t/webdev-and-redundancy/14340>\
**Category:** Ignition\
**Created:** [May 18, 2017, 2:00pm UTC](https://forum.inductiveautomation.com/t/webdev-and-redundancy/14340 "2017-05-18T14:00:25Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![ryanjmclaughlin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryanjmclaughlin/32/4318_2.png) [@ryanjmclaughlin](https://forum.inductiveautomation.com/u/ryanjmclaughlin)\
**Post date:** [May 18, 2017, 2:00pm UTC](https://forum.inductiveautomation.com/t/webdev-and-redundancy/14340/1 "2017-05-18T14:00:25Z")

</div>

I am setting up redundancy with Ignition, but I am also using WebDev. We have various uses, one of which would be a client posting data to WebDev which is then parsed into tags.

How would I need to handle this with redundancy? Does WebDev respect the Master/Backup or can the external client hit either node?

---

<div class="post-metadata">

**Author:** ![zackscriven](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/zackscriven/32/7213_2.png) [@zackscriven](https://forum.inductiveautomation.com/u/zackscriven)\
**Post date:** [May 31, 2017, 7:16pm UTC](https://forum.inductiveautomation.com/t/webdev-and-redundancy/14340/2 "2017-05-31T19:16:22Z")

</div>

Great question.

It would be nice if we can establish a domain name that either gateway would respond to depending on the master/backup status, instead of the hard coded IP address, which I am guessing won’t work in the failover scenario, unless you scripted that on whatever application you are hitting Ignition from. Ex. try the backup if the master times out.

---

<div class="post-metadata">

**Author:** ![Kyle\_Chase](https://avatars.discourse-cdn.com/v4/letter/k/9de0a6/32.png) [@Kyle\_Chase](https://forum.inductiveautomation.com/u/Kyle_Chase)\
**Post date:** [June 1, 2017, 5:30am UTC](https://forum.inductiveautomation.com/t/webdev-and-redundancy/14340/3 "2017-06-01T05:30:57Z")

</div>

You could either add the logic to your application, where you configure each address of the webdev systems, and pass through them as requests fail. The other option would be placing a load balancer in front of the servers. We use nginx.

---

<div class="post-metadata">

**Author:** ![ryanjmclaughlin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryanjmclaughlin/32/4318_2.png) [@ryanjmclaughlin](https://forum.inductiveautomation.com/u/ryanjmclaughlin)\
**Post date:** [June 1, 2017, 12:01pm UTC](https://forum.inductiveautomation.com/t/webdev-and-redundancy/14340/4 "2017-06-01T12:01:09Z")

</div>

> [@Kyle\_Chase](#):
>
> We use nginx

Thanks Kyle! Are you able to provide nginx config docs if we went this route?

Also, if I configure the app with logic to use both servers, and for some reason the app executes against the current "Backup" gateway will that cause problems? Will tag/db writes still work or do I have to first ensure the gateways is currently the master before posting data? If this is the case would you suggest checking [http://ignition/main/data/status/redundancy](http://ignition/main/data/status/redundancy) prior to executing any request against webdev?

PS - There appears to be a bug in 7.9.2 that I cannot expose the status pages to not require a login... gateways settings page wont let me set the role list to blank.

---

<div class="post-metadata">

**Author:** ![Kyle\_Chase](https://avatars.discourse-cdn.com/v4/letter/k/9de0a6/32.png) [@Kyle\_Chase](https://forum.inductiveautomation.com/u/Kyle_Chase)\
**Post date:** [June 2, 2017, 7:18am UTC](https://forum.inductiveautomation.com/t/webdev-and-redundancy/14340/5 "2017-06-02T07:18:47Z")

</div>

Give me a couple days, I am out camping atm. Ill post some working nginx stuff, including ssl encrypting with ACME certs.

---

<div class="post-metadata">

**Author:** ![cody.tamaki](https://avatars.discourse-cdn.com/v4/letter/c/b487fb/32.png) [@cody.tamaki](https://forum.inductiveautomation.com/u/cody.tamaki)\
**Post date:** [September 21, 2017, 11:40pm UTC](https://forum.inductiveautomation.com/t/webdev-and-redundancy/14340/6 "2017-09-21T23:40:28Z")

</div>

I’m working on something similar with NGINX at the moment so I can post my config files when I get that all finished up.

---

<div class="post-metadata">

**Author:** ![ryanjmclaughlin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryanjmclaughlin/32/4318_2.png) [@ryanjmclaughlin](https://forum.inductiveautomation.com/u/ryanjmclaughlin)\
**Post date:** [January 10, 2018, 5:15pm UTC](https://forum.inductiveautomation.com/t/webdev-and-redundancy/14340/7 "2018-01-10T17:15:36Z")

</div>

Hey @Kyle_Chase let me know if you ever get a chance to post your nginx scripts. I’m looking to set something like this up soon. Not sure if I should go this route or HAProxy…

---

<div class="post-metadata">

**Author:** ![Kyle\_Chase](https://avatars.discourse-cdn.com/v4/letter/k/9de0a6/32.png) [@Kyle\_Chase](https://forum.inductiveautomation.com/u/Kyle_Chase)\
**Post date:** [January 10, 2018, 11:05pm UTC](https://forum.inductiveautomation.com/t/webdev-and-redundancy/14340/8 "2018-01-10T23:05:30Z")

</div>

So I gave up quickly on nginx. For a proper HA solution, you would have to pay for nginx. I then turned to HAProxy. Let me dig up the script and I will let you know what I come up with.

Nginx with LetsEncrypt works great though.

---

<div class="post-metadata">

**Author:** ![Kyle\_Chase](https://avatars.discourse-cdn.com/v4/letter/k/9de0a6/32.png) [@Kyle\_Chase](https://forum.inductiveautomation.com/u/Kyle_Chase)\
**Post date:** [January 10, 2018, 11:08pm UTC](https://forum.inductiveautomation.com/t/webdev-and-redundancy/14340/9 "2018-01-10T23:08:31Z")

</div>

As a starting point though, you can use [https://ignition/main/system/gwinfo](https://ignition/main/system/gwinfo), and check for “RedundantNodeActiveStatus=Active” to determine which server is active.

---

<div class="post-metadata">

**Author:** ![ryanjmclaughlin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryanjmclaughlin/32/4318_2.png) [@ryanjmclaughlin](https://forum.inductiveautomation.com/u/ryanjmclaughlin)\
**Post date:** [January 10, 2018, 11:37pm UTC](https://forum.inductiveautomation.com/t/webdev-and-redundancy/14340/10 "2018-01-10T23:37:27Z")

</div>

HAProxy doesn’t seem bad, script would be great to help jumpstart. I got some rough load balancer quotes for the fancy stuff and we were approaching 6 figures for two sites!!

---

<div class="post-metadata">

**Author:** ![Kyle\_Chase](https://avatars.discourse-cdn.com/v4/letter/k/9de0a6/32.png) [@Kyle\_Chase](https://forum.inductiveautomation.com/u/Kyle_Chase)\
**Post date:** [January 11, 2018, 4:32am UTC](https://forum.inductiveautomation.com/t/webdev-and-redundancy/14340/11 "2018-01-11T04:32:47Z")

</div>

Ok, I have HAProxy up and running for both load balancing and automatic certificate renewal. However, its complicated. Let me see if I can make this easy to understand.

---

<div class="post-metadata">

**Author:** ![ryanjmclaughlin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryanjmclaughlin/32/4318_2.png) [@ryanjmclaughlin](https://forum.inductiveautomation.com/u/ryanjmclaughlin)\
**Post date:** [August 18, 2018, 1:21am UTC](https://forum.inductiveautomation.com/t/webdev-and-redundancy/14340/12 "2018-08-18T01:21:50Z")

</div>

Re-kindling this. We are finally trying to get load balancing setup for WebDev. I like the HAProxy idea, but our IT folks want to use Windows NLB. Would this be capable of doing the necessary routing?

---

<div class="post-metadata">

**Author:** ![GreggCavazos](https://avatars.discourse-cdn.com/v4/letter/g/90db22/32.png) [@GreggCavazos](https://forum.inductiveautomation.com/u/GreggCavazos)\
**Post date:** [June 24, 2019, 6:09pm UTC](https://forum.inductiveautomation.com/t/webdev-and-redundancy/14340/13 "2019-06-24T18:09:05Z")

</div>

@ryanjmclaughlin did you get this to work, we are working in implementing redundancy to our servers, but have the same issue, we have some data handling thru webdev APIs.

I am not sure if your IT department will let us use something like HAProxy, I was also thinking about having a timed script that updates the IP of the Master to a DB, not sure if it will work though, working in the lab setup to test it.

---

<div class="post-metadata">

**Author:** ![ryanjmclaughlin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryanjmclaughlin/32/4318_2.png) [@ryanjmclaughlin](https://forum.inductiveautomation.com/u/ryanjmclaughlin)\
**Post date:** [June 24, 2019, 6:25pm UTC](https://forum.inductiveautomation.com/t/webdev-and-redundancy/14340/14 "2019-06-24T18:25:38Z")

</div>

No, we are still waiting on the need and are hoping we can replace the need for WebDev with Perspective in the distant future.

---

<div class="post-metadata">

**Author:** ![Deville\_Xavier](https://avatars.discourse-cdn.com/v4/letter/d/df705f/32.png) [@Deville\_Xavier](https://forum.inductiveautomation.com/u/Deville_Xavier)\
**Post date:** [September 8, 2022, 7:16am UTC](https://forum.inductiveautomation.com/t/webdev-and-redundancy/14340/15 "2022-09-08T07:16:37Z")

</div>

Hi, any updates about the WebDev or HAProxy solution ?
