Forum Discussion

Roland00's avatar
Roland00
Icon for Altocumulus rankAltocumulus
Feb 23, 2026

DNS topology not distributing as expected

We have many pools that use topology with servers in two different datacenters. Originally, we configured regions that didn't really reflect the location. The app teams told us how they wanted the LDNS servers mapped to the pool members and we a topology rule for each pool member.

As time went on, I decided to model our regions and records so new topology based apps would be easier to manage. I created two new regions that reflected the DNS servers' locations and then topology rules that mapped each region to their respective datacenter. The idea is that we would no longer need to create records for each app.

I didn't want to introduce any changes to how the existing topology apps were distributing traffic, so my assumption was that a lower order and lower score would prevent any conflicts. 

Based on the snippet below, a DNS request from 10.1.1.1 for legacy.domain.com would match rule 1 and rule 3. Rule 1 has 10.1.1.100 with a score of 100 and rule 3 has 10.2.2.100 with a score of 10. I expected that rule 1 would 'win' since it has a higher score and every request from that server would point to 10.1.1.100. But it appears to be doing some kind of weighted ratio instead. 

I was under the impression that GTM would select the server with the highest score all the time, unless it was unavailable. I looked through the topology docs and found the examples very confusing and didn't see anything that matches my scenario. Any feedback or explanation would be apprciated.

gtm server DC1_SERVER {
    addresses {
        10.1.1.100 {
            device-name DC1_SERVER_vs 
        }
    }
    datacenter DC1
gtm server DC2_SERVER {
    addresses {
        10.2.2.100 {
            device-name DC2_SERVER_vs 
        }
    }
    datacenter DC2
gtm pool a legacy.domain.com_pool {
    alternate-mode global-availability
    load-balancing-mode topology
    members {
        DC1_SERVER_vs {
            member-order 0
        }
        DC2_SERVER_vs {
            member-order 1
        }
    }
    monitor https
}
gtm region REGION1_LEGACY {
    region-members {
        subnet 10.1.1.1/32 { }
        subnet 10.2.2.1/32 { }
    }
}
gtm region REGION2_LEGACY {
    region-members {
        subnet 10.1.1.2/32 { }
        subnet 10.2.2.2/32 { }
    }
}
gtm region DC1_DNS_NEW {
    region-members {
        subnet 10.1.1.1/32 { }
        subnet 10.1.1.2/32 { }
    }
}
gtm region DC2_DNS_NEW {
    region-members {
        subnet 10.2.2.1/32 { }
        subnet 10.2.2.2/32 { }
    }
}
gtm topology ldns: region /Common/REGION1_LEGACY server: subnet 10.1.1.100/32 {
    order 1
    score 100
}
gtm topology ldns: region /Common/REGION2_LEGACY server: subnet 10.2.2.100/32 {
    order 2
    score 100
}
gtm topology ldns: region /Common/DC1_DNS_NEW server: datacenter /Common/DC1 {
    order 3
    score 10
}
gtm topology ldns: region /Common/DC2_DNS_NEW server: datacenter /Common/DC2 {
    order 4
    score 10
}

 

To make things a easier to organize and manage, I decided create regions

 

No RepliesBe the first to reply