New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
High Availability & Scaling #1678
Comments
In a call with a customer, they mentioned they had used the following for building their own Node-RED "high availability & scaling" Although unlikely to be useful given our architecture, thought it worth at least sharing. |
Thoughts on horizontally scaling Node-RED in FlowForge environment
Also need to think about logging from the different replicas |
Any flow that ends up being hosted on multiple pods will need to be carefully written to ensure that they are either totally stateless or that ALL state is stored in a backend system. Will need to consider how this would work with the persistent context, especially with the cache that was added to support synchronous |
Continuing design work and planning during 1.6 with a goal to have something clearly defined for delivery in 1.7. |
From my perspective, a first version of High Availability (HA) and Scaling (let's call it HA Instances) comes with certain restrictions:
Later, when we see there is a certain customer need, we can work on how to resolve identified restrictions. (In my opinion, points one and three could potentially be resolved with sufficient time and testing. However, for point two, I'm currently lacking a feasible approach, especially in terms of scaling. In this case, I believe an approach for automatic failover would be more appropriate.) Related FeatureUser StoryAs a customer of FlowForge, Assumption
|
Info about: Load Balancing with Shared Subscriptions - MQTT Client at HiveMQ: |
Regarding scaling: as a manufacturing customer, I want to read out thousands of tags of data, be it e.g. from one or multiple OPC-UA servers, Modbus controllers or an MQTT broker, in order to support optimization of my entire fleet of assets or my processes. When creating a node red flow, I want to configure the logic once, but configure it for thousands of input data tags, potentially across multiple edge deployment sites, and hence across multiple deployments. E.g. having something similar to an app.yaml per deployment would help me manage my data at scale. |
@DasGermanPhysicist thank you for your insightful commentary regarding scaling in the realm of manufacturing. On this note, I'd like to inquire further about your views on the concept of snapshots. A snapshot, as you may know, is a point-in-time backup of a Node-RED instance, capturing:
These snapshots can also be pushed to devices connected to the instance. (More about this here: Snapshots Documentation). Is there any aspect of this functionality that you think could be enhanced to provide a more streamlined user experience? I genuinely value your opinion and would love to get more insights on your experience with FlowForge. Please feel free to connect with me on LinkedIn to share your experiences and thoughts. Understanding your needs and requirements better would be of utmost importance for us to deliver an improved and tailored experience. Looking forward to hearing from you. |
Hi @DasGermanPhysicist I'm curious to understand also if Environment Variables could act here as your "app.yml"? These are configurable for each Instance/Device of Node-RED within FlowForge. Enables a single build of a flow, then deployment out to each device customised by their respective Environment Variables. Documentation: https://flowforge.com/docs/user/envvar/#environment-variables |
@joepavitt env vars would absolutely suffice, if they can be changed at scale. E.g. how would one change the env vars on 1000 devices according to a pattern (e.g. opc-ua tag names all follow the pattern <device_name>_piston_temp etc.)? |
@MarianRaphael I have not yet played around with flowforge snapshots. However, for me it would be important to have deployment groups, e.g. a test/dev group and a production group, and I would require to target these groups with different snapshots. I did not know that env vars were captured on snapshot / application level. I assumed that different devices would have different env vars, as they describe the specific environment the device is in (and the flow will be in once it is deployed to the specific device). |
MVP for HA in the 1.8 release (see follow-up issues) |
Description
Regular request from customers, offering scaling and high availability of Node-RED instances on FlowForge.
First steps would require multiple instances running the same flows, which crosses over with #1492
Significant technical challenges around state management across instances
The text was updated successfully, but these errors were encountered: