The Problem
I am trying to configure several web farms (for different sites) following the NLB+ARR architecture. Let's say I have 6 VMs:
- ARR+NLB cluster of 2 VMs. It receives traffic and forwards it to content servers. URL rewrite rules with HTTP Host header conditions are used to route requests to correct content servers.
- Site 1 Content Servers: 2 VMs. Hosting http://www.mysite1.com/
- Site 2 Content Servers: 2 VMs. Hosting http://www.mysite2.com/
Everything works fine, I have tested that I have high availability on both tiers.
Now, for a reason Site 2 must work in active/passive mode, so that only 1 VM receives traffic, while the other one is for failover. In a way, I want something similar to the NLB's single host mode, but for the ARR.
How can this be achieved?
Workarounds
I have tried several indirect approaches to achieve the desired behavior.
- Load balancing algorithm. Tried setting round and robin weights to 1/0. The problem is that you can't set 0. It must be at least 1. You can set 4 billion + smth / 1, but I am not sure if this guarantees no random request ever goes to the second node.
- Host Name to Server Affinity. In advanced settings of Host Name Affinity, I can configure only 1 server to be allocated to Site 2. It works, but the problem is that the routing tables are not synchronized between the 2 ARR VMs. So, from time to time ARR1 affinitizes traffic to one node, while ARR2 to the other, which is not active/passive.
- Host Name Affinity + NLB Single Host. As a modification of the previous approach, I can also switch the NLB to single host mode to resolve the routing table sync issue. The problem in this case is that I am switching off ARR load balancing for Site 1 as well.
- Host Name Affinity + NLB Single Host + 2 IP Addresses. If I add the second IP address to the previous solution, create 2 NLB clusters working in different modes, everything should work just fine. The problem is that I don't want to pay for the second public IP.
None of the solutions is perfect.
The image of the ideal solution
I would really like to know a way to put the ARR into single host mode like it can be done for the NLB. And have it synchronize routing between nodes.
Anyone knows how to do that? Or knows alternative approaches?