-
-
Notifications
You must be signed in to change notification settings - Fork 16
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
In case of sync protocol such as OPCUA / Modbus OIBus becomes a single point of failure. How to mitigate that? #171
Comments
This may not be accurate, but this is how I see it. SPOF can be caused by 2 things:
Problem with the application Problem with the hardware running the application |
osisoft doc: Hot, warm, and cold failover modes To determine which mode to use, consider how much data you can afford to lose and how much workload your system can handle. Be prepared to experiment, and consult your data source documentation and vendor as needed. UniInt provides three levels of failover: cold, warm and hot. Higher ("hotter") levels preserve more data in the event of failover, but impose increasing workload on the system. Hot failover Warm failover Cold failover |
Since we rewrote OPCUA, it is no longer a SPOF. However, we still have Modbus and MQTT. These failover modes requires the redundancy solution I mentioned in my second description (for hardware failure). Do you have any specific requirements from clients? |
no, I start thinking about this and collect ideas but we did not decide working on this yet. |
If I remember correctly, the OPC HDA server at the client had limitation for the number of clients (if you killed OIBus, you had to wait a few minutes to be able to connect to it again). So, the cold failover could be a real use case. The failover will require continuous interaction between the master and backup instances. I think, we can implement this interaction in such a way to support all 3 failover type:
It may require a small refactor at some South implementation to properly follow the same flow: connect to target server in connect() and get data in onScan() It also requires a synchronization between the master and backup. I'm thinking about the lastCompletedAt value, but there can be other informations too. |
Any decision regarding this issue? |
not yet. We wait for a customer case before engaging this. In the meantime, we should add some additional tests to the backend. |
No description provided.
The text was updated successfully, but these errors were encountered: