F5-CSE study materials
F5-CSE study resources

F5-CSE: Profiles, Persistence, Monitors, and iRules

F5-CSE · Work through your exam, one topic at a time.

All guide sections

Profiles, Persistence, Monitors, and iRules

Profiles

Profiles are typed configuration containers attached to virtual servers. A virtual server can have one profile of each type, such as TCP, HTTP, Client SSL, Server SSL, or OneConnect. Custom profiles inherit from a parent; unset values follow the parent, and changed values override it. OneConnect reuses server-side connections and requires an HTTP profile.

Persistence

Persistence keeps a client on the same pool member. Common types are source address, cookie, SSL session ID, destination address, hash, and universal. Cookie insert creates a cookie such as BIGipServer<pool>; rewrite and passive modes behave differently. Persistence timeout, match-across-services, match-across-pools, and match-across-virtual-servers change how broadly a record applies. Mirroring sends persistence records to the standby device.

Monitors

A monitor has an interval, timeout, send string, and receive string. Multiple monitors on the same object generally must all succeed for the member to be up; monitor inheritance from node, pool, and member matters. A monitor changes availability state; it does not delete the member.

iRules

iRules are Tcl scripts triggered by events such as CLIENT_ACCEPTED, HTTP_REQUEST, LB_SELECTED, and HTTP_RESPONSE. Commands include pool, node, persist, redirect, drop, reject, HTTP::header, HTTP::uri, and HTTP::host. An iRule can select a pool, but the pool must exist and the event must have the data you are testing.

Worked example

An iRule routes API traffic: when HTTP_REQUEST { if {[HTTP::path] starts_with "/api"} { pool api_pool } } Requests to /api/v1 reach api_pool, but /API/v1 goes to the default pool. HTTP paths are case-sensitive, so the test fails on case. The fix is to normalize: if {[string tolower [HTTP::path]] starts_with "/api"}. If the request still lands in the wrong pool, check whether a persistence record or another iRule is overriding selection.

Traps

Forgetting that a profile must be attached to the virtual server, not just created. Assuming a monitor with a short interval is harmless at scale. Writing an iRule that runs on every request without a fast exit. Confusing HTTP header names, which are case-insensitive, with path matching.