Cluster management
- Last UpdatedMar 24, 2025
- 2 minute read
- PI System
- PI Web API 2023 SP1 Patch 1
- Developer
PI Web API is designed to be clustered behind web load balancers. You can use the load balancer of your choice.
You should consider the following points when configuring a cluster:
Cluster configuration
-
Configuration Store
To prevent configuration mismatches across the cluster nodes, We recommend that all nodes share a common configuration store in PI AF. This configuration is performed during installation by choosing the same PI AF server and choosing identical Instance Names across all installations. By sharing the configuration store, all nodes in the PI Web API cluster are guaranteed to have identical configurations.
-
SSL certificates
You must configure appropriate SSL Certificates.
Simple load balancers (such as DNS, Windows Server Network Load Balancing software load balancing, and Azure Load Balancer) require that each node in the cluster be configured with an identical SSL certificate. The SSL certificate must match the DNS name of the load balancer's public endpoint address, which might mean that local interactions with PI Web API appear to have a certificate name mismatch.
Advanced load balancers such as the F5 LTM, which do full request proxying, can set SSL settings at the load balancer level, so that SSL configuration of the individual cluster nodes is less important.
With all load balancers, we recommend that node affinity be retained if possible. It is more efficient when sequential requests from the same user get serviced by the same node.
-
AF SDK caching
It is technically possible for an application to create an element but then be unable to read it. This can happen if the request to create was handled by one node but then the request to read is handled by another that has not updated its cache yet. One way to avoid this is to set up the load balancer so that users are re-rerouted to the same node for repeat requests. You can also use Cache-Control headers. Reading data without writing is generally safe. Writing time-series data is usually safe (unless buffering is enabled on multiple nodes, with one node buffering while others are flowing to the Data Archive).