The relationship among monitor, test, and load objects is illustrated in Figure 19-2.
The significance of the relationships illustrated in Figure 19-2 is as follows:
For test objects, a failure of a lowest-level object (indicated by a not-OK status in the Host Status page) causes the parent object (cache_test and dns_test, both of type AndTest) to fail. The failure of such a parent object, in turn, causes the monitor object return failure status. This failure is also reflected in the Host Status page. When a service on a host fails, the monitor object removes the service address associated with that service from the array's DNS zone and moves the service address to the least loaded host in the array.
For load objects, the lowest-level object (cpu_load) returns its load and capacity figures to its parent (cache_adjust_load, of type AdjustLoad). Using our example, the cache_adjust_load object performs any adjustments required and returns "final" load and capacity figures to the monitor object, cache_monitor. The monitor object compares figures obtained from cache_adjust_load to high- and low-water marks that it maintains for the service and takes action if one of these thresholds is crossed. If a monitor object determines that a service is overloaded, it removes its service address from the array's DNS zone. If the monitor object determines that a formerly overloaded service is now in its normal range, it reintroduces the service address for that service in the DNS zone.