Hi Jairton,

Usually, for applications with high multiuser query volume or with high volume data ingestion concurrently with high query volume, it is recommended the use of a compute node (see here for more details).

The application would connect to the compute nodes (via JDBC, for example) and the compute nodes connect to data nodes through ECP (Enterprise Cache Protocol), which is "mirror aware" and therefore knows which data node is active or passive.

You can connect each application to their own set of compute nodes, having a K8s service to load balance this set of compute nodes and taking advantage of the cache from similar queries (see here for more details).

However, if you need to connect directly to the data nodes, I followed @Bob Kuszewski approach of deploying another pod to check the mirror status of every IRIS mirror pair on a periodic basis and then set the intersystems.com/mirrorRole label to primary or backup accordingly, on the data nodes. Apparently it worked smoothly.

You can find all information here: https://github.com/kuszewski/iris-k3s/tree/main/mirror-labeler

Just remembering that this is still an unofficial code/workaround.
If you want, I'm happy to share with you the yaml that I used, containing everything from setting up IRIS Cluster to deploying the mirror labeler together with RBAC and the K8s service itself.

I'll set up a meeting with you to further discuss the options here.