F5 LTM Troubleshooting- Things to check if Pool member is down

F5 Troubleshooting

Check if the server is reachable from the F5 Load balancer

[root@bigip118:Active:Standalone] config # ping 172.16.20.10
PING 172.16.20.10 (172.16.20.10) 56(84) bytes of data.
64 bytes from 172.16.20.10: icmp_seq=1 ttl=255 time=3.83 ms
64 bytes from 172.16.20.10: icmp_seq=2 ttl=255 time=2.88 ms

————————————————————

If you want to ping from particular vlan you can specify vlan name after –I

[root@bigip118:Active:Standalone] config # ping -I internal 172.16.20.10
PING 172.16.20.10 (172.16.20.10) from 172.16.20.100 internal: 56(84) bytes of data.
64 bytes from 172.16.20.10: icmp_seq=1 ttl=255 time=3.26 ms
64 bytes from 172.16.20.10: icmp_seq=2 ttl=255 time=89.5 ms
64 bytes from 172.16.20.10: icmp_seq=3 ttl=255 time=8.43 ms

————————————————————

If ping is successful but you still see the pool member as down. If pool member is down it will be show as Red color
image001

If your pc/laptop is able to access the servers using local ip address try to access the web page locally. If your pc doesn’t able to access the server no worries we got you covered
From the F5 CLI enter the command for testing the HTTP server

————————————————————

[root@bigip118:Active:Standalone] config # curl http://172.16.20.10

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”>

 

<html lang=”en”>

<head>

<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>

<meta http-equiv=”Content-Style-Type” content=”text/css”>

<meta http-equiv=”Content-Script-Type” content=”text/javascript”>

 

<title>TurnKey LAMP</title>

 

<link rel=”stylesheet” href=”css/ui.tabs.css” type=”text/css” media=”print, projection, screen”/>

<link rel=”stylesheet” href=”css/base.css” type=”text/css”/>

 

<script src=”js/jquery-1.2.6.js” type=”text/javascript”></script>

<script src=”js/ui.core.js” type=”text/javascript”></script>

<script src=”js/ui.tabs.js” type=”text/javascript”></script>

<script type=”text/javascript”>

$(function() {

$(‘#container-1 > ul’).tabs({ fx: { opacity: ‘toggle’} });

});

</script>

</head>

 

<body>

————————————————————

For testing the HTTPS server

[root@bigip118:Active:Standalone] config #  curl -vk https://172.16.20.10

* About to connect() to 172.16.20.10 port 443 (#0)

*   Trying 172.16.20.10… connected

* Connected to 172.16.20.10 (172.16.20.10) port 443 (#0)

* successfully set certificate verify locations:

*   CAfile: /etc/pki/tls/certs/ca-bundle.crt

CApath: none

* SSLv3, TLS handshake, Client hello (1):

* SSLv3, TLS handshake, Server hello (2):

* SSLv3, TLS handshake, CERT (11):

* SSLv3, TLS handshake, Server key exchange (12):

* SSLv3, TLS handshake, Server finished (14):

* SSLv3, TLS handshake, Client key exchange (16):

* SSLv3, TLS change cipher, Client hello (1):

* SSLv3, TLS handshake, Finished (20):

* SSLv3, TLS change cipher, Client hello (1):

* SSLv3, TLS handshake, Finished (20):

* SSL connection using ECDHE-RSA-AES128-GCM-SHA256

* Server certificate:

*        subject: CN=lamp

*        start date: 2017-12-21 19:59:57 GMT

*        expire date: 2027-12-21 19:59:57 GMT

*        common name: lamp (does not match ‘172.16.20.10’)

*        issuer: CN=lamp

*        SSL certificate verify result: self signed certificate (18), continuing anyway.

> GET / HTTP/1.1

> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 OpenSSL/1.0.1l zlib/1.2.3 libidn/1.18

> Host: 172.16.20.10

> Accept: */*

>

< HTTP/1.1 200 OK

< Date: Sun, 10 Jun 2018 23:02:31 GMT

< Server: Apache

< Content-Length: 2557

< Content-Type: text/html; charset=UTF-8

<

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”>

 

<html lang=”en”>

<head>

<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>

<meta http-equiv=”Content-Style-Type” content=”text/css”>

<meta http-equiv=”Content-Script-Type” content=”text/javascript”>

 

<title>TurnKey LAMP</title>

 

<link rel=”stylesheet” href=”css/ui.tabs.css” type=”text/css” media=”print, projection, screen”/>

<link rel=”stylesheet” href=”css/base.css” type=”text/css”/>

 

<script src=”js/jquery-1.2.6.js” type=”text/javascript”></script>

<script src=”js/ui.core.js” type=”text/javascript”></script>

<script src=”js/ui.tabs.js” type=”text/javascript”></script>

<script type=”text/javascript”>

$(function() {

$(‘#container-1 > ul’).tabs({ fx: { opacity: ‘toggle’} });

});

</script>

</head>

————————————————————

To know more about the curl command you can try curl –help
Most common parameters are

-v for verbosity
-k to ignore certificate issues
-d to issue a POST with POST payload data
curl -vk https://www.example.com/foo -d ‘user=admin&amp;password=admin’
-X to explicitly define the request method
curl -vkX POST https://www.example.com/foo/bar -d ‘user=admin&amp;password=admin

————————————————————
If the still pool member is showing as down then check the what is the health monitor is setup to check for, usually for http/ https application content check monitor is used, which check the particular content in the page to verify the server is working fine or not.
To see what health monitor is set go to Local traffic->Pools ->Click on the pool you are facing issues

image003

Once we find that the issue is with the Health monitor http_mon
Go to Local traffic-> Monitor

image005

image007

In the send string we see \r and \n then mean Carriage Return (CR) and Line Feed (LF) respectively
The receive string is the string which we are looking into the page. To verify if you are receiving the string in the page try

————————————————————

 

[root@bigip118:Active:Standalone] config # curl http://172.16.20.10 | grep LAMP

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

Dload  Upload   Total   Spent    Left  Speed

102  2557  102  2557    0     0  75071      0 –:–:– –:–:– –:–:–  499k

<title>TurnKey LAMP</title>

<h1>TurnKey LAMP</h1>

TurnKey LAMP release notes</a></li>

[root@bigip118:Active:Standalone] config #

————————————————————

This shows that the health monitor is looking for string LAMP in the page is present there it means the server application is working as expected. If you don’t the string in the output then it means there is application issue.