What does a load balancer actually do, beyond spreading requests?
Three jobs, and only the first is the obvious one. It distributes — round robin, least connections, or a hash for stickiness. It health checks, which is the part that turns a crashed instance into a non-event rather than one in every N requests failing. And it terminates TLS and normalises the connection, so your application servers speak plain HTTP on a warm keep-alive rather than doing a handshake per client.
Layer 4 balances connections and is fast and blind; layer 7 reads the request and can route by path or header, at the cost of parsing it.