GTM DNS
11 TopicsRetrieve GTM pool member addresses (Bigrest)
A wide-IP has a pool of servers that are virtual-servers on an LTM. I would like to retrieve the pool member addresses of the virtual servers used in the wide-IP pool using the Bigrest Python library. wide-ip = site.com Pool Name = site_pool Pool Member A = site_a_vs (server = ltm_a) Pool Member B = site_b_vs (server = ltm_b) I can load the wide-IP which provides a poolReference. I can then load the pool, which provides a membersReference. The membersReference provides a serverReference (the LTM) and the vs name. From here, I can load all virtual servers on the server provided by the serverRefence, but unsure how to retrieve only the virtual servers that are relevant to the wide-IP. There is no virtualserver ID provided by the membersReference or ServerReference.25Views0likes0CommentsUse Fully Qualified Domain Name (FQDN) for GSLB Pool Member with F5 DNS
Normally, we define a specific IP (and port) to be used as GSLB pool member. This article provides a custom configuration to be able to use Fully Qualified Domain Name (FQDN) as GSLB pool member--with all GSLB features like health-check monitoring, load balancing method, persistence, etc. Despite GSLB as a mechanism to distribute traffic across datacenters having reached years of age, it has not become less relevant this recent years. The fact that internet infrastructure still rely heavily on DNS technology means GSLB is continuously used due to is lightweight nature and smooth integration. When using F5 DNS as GSLB solution, usually we are dealing with LTM and its VS as GSLB server and pool member respectively. Sometimes, we will add a non-LTM node as a generic server to provide inter-DC load balancing capability. Either way, we will end up with a pair of IP and port to represent the application, in which we sent a health-check against. Due to the trend of public cloud and CDN, there is a need to use FQDN as GSLB pool member (instead of IP and port pair). Some of us may immediately think of using a CNAME-type GSLB pool to accommodate this. However, there is a limitation in which BIG-IP requires a CNAME-type GSLB pool to use a wideIP-type pool member, in which we will end up with an IP and port pair (again!) We can use "static target", but there is "side-effect" where the pool member will always consider available (which then triggers the question why we need to use GSLB in the first place!). Additionally, F5 BIG-IP TMUI accepts FQDN input when we configure GSLB server and pool member. However, it will immediately translate to IP based on configured DNS. Thus, this is not the solution we are looking for Now this is where F5’s BIG-IP power (a.k.a programmability) comes into play. Enter the realm of customization... We all love customization, but at the same time do not want that to be overly complicated so that life becomes harder on day-2 🙃. Thus, the key is to use some customization, but simple enough to avoid unnecessary complication. Here is one idea to solve our FQDN as GSLB pool problem above The customized configuration object includes 1. External health-check monitor: Dynamically resolve DNS to translate FQDN into IP address Perform health-check monitoring against current IP address Result is used to determine GSLB pool member availability status 2. DNS iRules: Check #1: Checks if GSLB pool attached to wideIP contains only FQDN-type member (e.g. other pool referring to LTM VS is also attached to the wideIP) If false, do nothing (let DNS response refer to LTM VS) Otherwise, perform check #2 Check #2: Checks current health-check status of requested domain name If FQDN is up, modify DNS response to return current IP of FQDN Otherwise, perform fallback action as requirement (e.g. return empty response, return static IP, use fallback pool, etc.) 3. Internal Datagroup: Store current IP of FQDN, updated according to health-check interval Datagroup record value contains current IP if health-check success. Otherwise, the value contains empty data Here are some of the codes, where configured; wideIP is gslb.test.com, while GSLB pool member FQDN is arcadia.f5poc.id 1. External health-check monitor config gtm monitor external gslb_external_monitor { defaults-from external destination *:* interval 10 probe-timeout 5 run /Common/gslb_external_monitor_script timeout 120 #define FQDN here user-defined fqdn arcadia.f5poc.id } External health-check monitor script #!/bin/sh pidfile="/var/run/$MONITOR_NAME.$1..$2.pid" if [ -f $pidfile ] then kill -9 -`cat $pidfile` > /dev/null 2>&1 fi echo "$$" > $pidfile # Obtain current IP for the FQDN resolv=`dig +short ${fqdn}` # The actual monitoring action here curl -fIs -k https://${fqdn}/ --resolve ${fqdn}:443:${resolv} | grep -i HTTP 2>&1 > /dev/null status=$? if [ $status -eq 0 ] then # Actions when health-check success rm -f $pidfile tmsh modify ltm data-group internal fqdn { records replace-all-with { $fqdn { data $resolv } } } echo "sending monitor to ${fqdn} ${resolv} with result OK" | logger -p local0.info echo "up" else # Actions when health-check fails tmsh modify ltm data-group internal fqdn { records replace-all-with { $fqdn { } } } echo "sending monitor to ${fqdn} ${resolv} with result NOK" | logger -p local0.info fi rm -f $pidfile 2. DNS iRules when DNS_REQUEST { set qname [DNS::question name] # Obtain current IP for the FQDN set currentip [class match -value $qname equals fqdn] } when DNS_RESPONSE { set rname [getfield [lindex [split [DNS::answer]] 4] "\}" 1 ] #Check if return is IP address of specially encoded FQDN IP, 10.10.10.10 in this example if {$rname eq "10.10.10.10" }{ #Response is only from pool with external monitor, meaning no other pool is attached to wideIP if {$currentip ne ""}{ #Current FQDN health-check success DNS::answer clear # Use current IP to construct DNS answer section DNS::answer insert "[DNS::question name]. 123 [DNS::question class] [DNS::question type] $currentip" } else { #Current FQDN health-check failed #Define action to be performed here DNS::answer clear } } } 3. Internal Datagroup ltm data-group internal fqdn { records { # Define FQDN as record name arcadia.f5poc.id { # Record data contains IP, where this will be continuously updated by external monitoring script data 158.140.176.219 } } type string } *GSLB virtual server configuration Some testing The resolve will follow whichever current IP address for the FQDN. If a returning CNAME response is required, you can do so by modifying DNS irules above. The logic and code are open to any improvement, so leave your suggestions in the comments if you have any. Thanks!255Views1like0CommentsWhen user goes through LB the server page has stripped information
I have created a pretty simple round robin load balancing for a user with three servers. As a part of this I also have DNS LB in place that sends the traffic to two VIPs that are connected to the three nodes in a pool I have created on my LTM F5. User accesses the LB DNS URL I provide via Https://<>.com > VIP > Pool > Nodes. There is a certificate applied to the clientssl and serverssl profiles attached to the VIPs. The user is able to get to their backend servers/nodes when going through the load balancer, but we are coming across an interesting issue. When the user goes through the F5 the server dashboard page they usually see is stripped of information on that dashboard. Typically, there would be tiles shown on the server dashboard, but it is just the basic UI and none of the tiles. When the user goes directly to their server, all the information/tiles are shown as normal. I have never experienced this problem before and am not sure how to prove out the F5 is causing the issue or how it is happening. Any insight would be greatly appreciated! *Attached file shows what I'm explaining.61Views0likes6CommentsGTM pool is OFFLINE even if pool members are UNKNOWN
Hi, Maybe someone can clarify me this situation. I didn't found it in documentation. generic host (with no monitors) has two virtual servers (also no monitors here). the state of server and virtual servers is unknown (that expected). state of the pool is OFFLINE (why?? this is not clear for me), but (all two) members are UNKNOWN wide IP is OFFLINE because poll has no available members (members are unknown, not unavailable) dns response to wide ip returns two IPs (IP adresses of both members). it's ok in this case, because return code on failure is (by default) disabled when I enable 'return code on failure', response is empty Note: when one member is disabled (or down based on temporary monitor), dns response return only one IP - IP of the unknown member. That's correct, but pool state and wide ip state are offline. My question is: Why is pool state OFFLINE when pool members states are UNKNOWN? I think he should be unknown. When the same situation occurs on LTM, state of pool is unknown, not offline. Does GTM behave differently?? TMOS version: 17.1.1.3 Here is simple test configuration: # gslb domain (wide ip) gtm wideip a /testTenant/testApp/test.my.local { pools { /testTenant/testApp/testPool { order 0 } } } # gslb pool gtm pool a /testTenant/testApp/testPool { alternate-mode global-availability fallback-mode none load-balancing-mode global-availability members { /Common/server1:vs1 { member-order 0 } /Common/server1:vs2 { member-order 1 } } } # gslb servers gtm server /Common/server1 { datacenter /Common/testDc devices { 0 { addresses { 10.1.1.1 { } } } } prober-fallback none product generic-host virtual-servers { vs1 { destination 10.1.1.11:0 } vs2 { destination 10.1.1.12:0 } } }Solved37Views0likes1CommentGTM answer based on pool member status
Hello, I'd like to configure GTM to answer FQDN request with specific IP address in answer based on status of another GSLB pool member. Example: I have two GSLB pools: pool1 (there are members located in datacenter1) and pool2 (members located in dc2). Required answer to FQDN e.g. 'service.domain.com' is IP1 when pool1 is up, or IP2 when IP2 is up. IP1 and IP2 are not IP addresses of pool members pool1/pool2 but statically defined on GTM (I'm not sure where). I can't use fallback IP (because it is not reflecting pool availability status) Is it possible to configure GTM based on above example?76Views0likes2CommentsF5 GTM Upgrade in Viprion with LTM
We have to plan a Viprion Software upgrade. Suppose we have two data center (say A and B) and 4 Viprion. 2(A1,A2) dedicated for one data center and 2(B1,B2) dedicated for other. A1 contains - a1(LTM), a2(LTM),a3(LTM) and a4(GTM Internal) A2 Contains - a5(LTM), a6(LTM), a7(LTM), a4(GTM External) B1 contains - b1(LTM), b2(LTM),b3(LTM) and b4(GTM Internal) B2 Contains - b5(LTM), b6(LTM), b7(LTM), b8(GTM External) Now we are planning to upgrade to both Viprion pair in two different weeks. But GTM is creating issue. Note - a4 and b4 are stand alone and synced. Similarly a8 and b are stand alone and synced. My question - If I plan upgrade A1 in first week, I have to upgrade a4 and a8. In that a4 and b4 will be in different version and a8 and b8 will be in different version for one week. I just wanted to know, will there be any issue if GTM pairs are in different versions for one week(Note pairs are standalone but synced). Will there be any kind of traffic of conflict issue? Or any suggestion how to plan?50Views0likes1CommentGSLB - Monitoring LTM VIP load balancing via iRule
In one of our environments we are configuring a single LTM VIP and load balancing multiple applications via an iRule. We currently have other LTM environments integrated via iQuery with our GTM for GSLB configuration and monitoring. Is there a way to monitor the VIP at the GTM level via iQuery that would give a true back-end pool status? Since, let's say, we are load balancing 100 different applications via a single VIP, if 99 of them went offline, the VIP would still show as ONLINE/GREEN. Or would we even go as far as integrating via iQuery and adding a dependency monitor of the pool itself instead?101Views0likes6CommentsBIG-IP DNS: Check Status Of Multiple Monitors Against Pool Member
Good day, everyone! Within the LTM platform, if a Pool is configured with "Min 1 of" with multiple monitors, you can check the status per monitor viatmsh show ltm monitor <name>, or you can click the Pool member in the TMUI and it will show you the status of each monitor for that member. I cannot seem to locate a similar function on the GTM/BIG-IP DNS platform. We'd typically use this methodology when transitioning to a new type of monitor, where we can passively test connectivity without the potential for impact prior to removing the previous monitor. Does anyone have a way through tmsh or the TMUI where you can check an individual pool member's status against the multiple monitors configured for its pool? Thanks, all!167Views0likes2CommentsQuestions about performance degradation when used with DNS features in GTM solutions
Hi team. Here's the situation I'm in and the questions I have. Situation : A customer is using Window DNS, and in this configuration, an F5 device has been introduced for GSLB purposes. However, the performance of Window DNS is not good, so I am checking if it is possible to use the DNS function on the F5 device introduced for GSLB. Q: I have heard that the performance of the F5 GTM solution degrades when used for DNS functions other than GSLB (I heard from someone that the performance degrades a lot when using BIND). So, I've been looking for official F5 documentation to see if that's true, but I'm not finding it, so I'm asking. Thanks.717Views0likes3Comments