Providing failover access to an application through ingress

Hello. I am using a local kubernetes installation.
Currently I am using NodePort + an external duplicate haproxy server (with keepalived ) to provide access to services. I do not think that this is the right decision, because. it is limited by the number of NodePorts and has a number of other disadvantages.

I plan to switch to providing access to applications through ingress, but I don’t understand how to do it correctly.

One of the options that I think is to make A record with round robin dns to all nodes of ingress controllers with a service, for example:

CNAME k8s-node-1.local
CNAME k8s-node-2.local
CNAME k8s-node-3.local

But it’s also far from the best solution.

How is it generally recommended to provide access to applications through ingress in order to provide high fault tolerance from the reverse proxy side?

Thank you for your time.