Last Modified: Apr 30, 2025
Affected Product(s):
BIG-IP LTM
Known Affected Versions:
15.1.0, 15.1.0.1, 15.1.0.2, 15.1.0.3, 15.1.0.4, 15.1.0.5, 15.1.1, 15.1.2, 15.1.2.1, 15.1.3, 15.1.3.1, 15.1.4, 15.1.4.1, 15.1.5, 15.1.5.1, 15.1.6, 15.1.6.1, 15.1.7, 15.1.8, 15.1.8.1, 15.1.8.2, 15.1.9, 15.1.9.1, 15.1.10, 15.1.10.2, 15.1.10.3, 15.1.10.4, 15.1.10.5, 15.1.10.6, 16.1.0, 16.1.1, 16.1.2, 16.1.2.1, 16.1.2.2, 16.1.3, 16.1.3.1, 16.1.3.2, 16.1.3.3, 16.1.3.4, 16.1.3.5, 16.1.4, 16.1.4.1, 16.1.4.2, 16.1.4.3, 16.1.5, 16.1.5.1, 16.1.5.2, 17.0.0, 17.0.0.1, 17.0.0.2, 17.1.0, 17.1.0.1, 17.1.0.2, 17.1.0.3, 17.1.1, 17.1.1.1, 17.1.1.2, 17.1.1.3, 17.1.1.4, 17.1.2, 17.1.2.1, 17.5.0
Opened: Dec 18, 2024 Severity: 3-Major
Database monitors fail periodically and mark a pool member down.
Healthy pool members are not selected to receive traffic.
- Multiple database health monitor instances exist to probe a given node. - The monitor instances share the same values for the following parameters: - destination IP address - destination port - database name.
You can work around this issue by using a BIG-IP EAV external monitor to probe the health of your database. An example for MySQL is available on DevCentral at https://community.f5.com/kb/codeshare/mysql-monitor/273565. For PostgreSQL and Microsoft SQL Server, you may also work around this issue by adding a unique connection property as a suffix to the database name. This ensures a unique JDBC connection string is constructed for each monitor in order to avoid this issue. For example you can use the connection properties "ApplicationName=<monitor_name>" or "applicationName=<monitor_name>" in PostgreSQL or Microsoft SQL Server respectively to provide the name of the calling monitor to the database. Note that the PostgreSQL monitor requires a "?" character as a separator between the database name and the connection property, while MS SQL Server requires a ";" as separator. Example tmsh commands to disambiguate monitorA and monitorB which both probe database "samedb" on the same node: - PostgreSQL monitors: - tmsh modify ltm monitor postgresql monitorA database samedb?ApplicationName=monitorA - tmsh modify ltm monitor postgresql monitorB database samedb?ApplicationName=monitorB - MS SQL Server: - tmsh modify ltm monitor mssql monitorA database '"samedb;applicationName=monitorA"' - tmsh modify ltm monitor mssql monitorB database '"samedb;applicationName=monitorB"' Note that the extra quoting in the example command for MS SQL Server is required to preserve the ";" separator in the database name.
None