The tl;dr problem
The CAS server occasionally gets one or two NAT'ed IP addresses that have several hundred users behind it. That is bad for scalability.
The tl;dr solution
Have the NAT'ed outlook clients connect to more than one DNS name/IP destination. Use this in the load balancer, and the NAT issue is reduced.
More information
A majority of our Exchange customers use RPC/HTTPS and Outlook Anywhere. Many of our clients are grouped in the hundreds behind a single NAT address.
This results in the load balancer sending large NAT'ed user populations to the same CAS server. The CAS server then reaches 100% CPU and is unable to service end users.
My solution
Since there is no way to append cookie load balancing to Outlook Anywhere in a NetScaler, I think it might be good to add more DNS names. I'll explain.
In a given DAG I'm using these DNS names:
- NYCAS01.company.com
- Autodiscover.company.com
- Email.company.com
What if I was able to change it so that I use more DNS names for the bulk of the traffic:
- NYExGroup1.company.com NYExGroup2.company.com NYExGroup2.company.com
- Autodiscover.company.com
- Email.company.com
I would accomplish this by setting the RPC server property on each one of my Exchange databases to that of "NyExGroupX.company.com", and set a corresponding external IP. Of course this means I need to also update my external certificate.
I'm pretty sure this configuration would guarantee that a NAT source such as "SomeLargeCompany" will connect to more than one “group” DNS name. That means the load balancer will be able to use multiple target IPs and distribute traffic more evenly.
Question
Can a CAS server be a member of more than one array?
Can I configure a CAS array with more than one IP?
Is this the right way to deal with this problem?