Stratum is not HTTP, it's a protocol designed directly on top of TCP.
You could use an existing load balancer that works on the TCP level, directing new TCP connection attempts to backend servers. After a client is connected it keeps talking to the same backend.
All Stratum work is related to one connection. Proofs of work from clients must be sent over the same connection where the work data was previously received. There can be no confusion about jobs, and there is no need to open more than one connection.
There's no need for the load balancer to look at individual stratum requests, or even to understand the stratum protocol. It might be an advantage for the load balancer to be able to tell a client to reconnect to get it over on a different backend, if the backend it is on is overloaded. In this case you'd need to create your own stratum load balancing software - you couldn't use a generic load balancer for this. I'm not sure if such a feature is really important though. Disconnecting a client is probably just as effective if you want it to reconnect to the same IP address anyway (the IP address of the load balancer).
Note that, assuming your mining server software is somewhat efficient, a single server would be able to run even the biggest mining pool today. So a setup like this is probably only useful for failover, not so much for balancing load.