Can I assign more than one health check to a Backend Service?
Short answer
No. The Health Check field of the Backend Service takes a single profile, and the health status is shared by all the vServices in which the Backend Service is used. If more than one condition needs to be checked together, the Scenario type is used as a single profile: the sub-checks are combined with AND/OR, and each sub-check can be of a different type and at a different address (The fields of the checks within the scenario). Alternatively, a health address that summarizes the dependencies and a JSONata check, or the multi-step scenarios in the TCP, UDP and Oracle types, are used.
How Does It Work?
The Scenario profile combines the results of the sub-checks defined in the Scenario field:
- The sub-checks are defined in the window opened with the + button next to the field; in the window, Check Type is one of the 15 types other than Scenario (default TCP).
- While the HC Address switch of each sub-check is off (Backend Address), the check goes to the address of the Backend Service; while it is on (Static Address), it goes to the entered address and port.
- The sub-checks are grouped with AND (all must be successful) or OR (at least one must be successful).
- The sub-checks are evaluated with their instant result in every round; Period and Timeout are taken from the upper profile, and Required Successes and Required Failures are applied to the combined result of the scenario.
| Option | What it provides | Where |
|---|---|---|
| Scenario | Combines more than one sub-check with AND/OR (e.g. HTTP for the web and TCP 3306 for the database) | Health Checks → Check Type: Scenario |
| Health address + JSONata | Summarizes the application dependencies in a single /health response; the JSONata expression checks all of them (Can I validate a JSON response field by field in a health check (Content Check Mode: JSONata Expression)?) | HTTP/HTTPS → Content Check Mode: JSONata Expression |
| TCP / UDP / Oracle scenario | A multi-step send/expect dialog within a single protocol | TCP Scenario, UDP Scenario, Oracle Scenario |
| Expression (JSONata) sub-check | Combines a network check with a device or time condition (e.g. only on the 1st device of the cluster) | In a Scenario sub-check, Check Type: Expression (JSONata) |
Use Different IP for Health Check is not an additional check; it only changes the target address of the single check.
In TR7
- Scenario profile: Load Balancer → Profiles → Health Checks → Add → Check Type: Scenario; previously created profiles cannot be used in the scenario, the sub-checks are defined inside the scenario. The main form of the Scenario does not contain Expect Negative Result; the sub-checks contain it.
- WEB-CLI: The Scenario type is not available in WEB-CLI; it is created from the interface.
- Backend Group: In a group, a single profile is selected at the group level and applied separately to each server in the group; a different profile cannot be assigned per server.
- Monitoring: The Scenario row in the Details tab of the profile preview shows the condition tree; in the Health Checks tab, the type is written as Scenario in the record summary.
Common Misconceptions
- "I assign a separate health check for each vService." The health status is tied to the Backend Service; it is the same in all vServices.
- "I set up the Scenario from WEB-CLI." The Scenario is created only in the interface.
- "I combine the existing profiles in a Scenario." New sub-checks are defined inside the scenario; existing profiles cannot be selected.
- "I give different profiles to the servers in the group." The profile is at the group level; for a different check, separate groups or individual Backend Services are used.
How it is done in the documentation
