Load balancing is about defining how to select the backend node that will process the request. It can be done on the server or client side, but strategies are globally the same. The fact that it is Client or Server is mainly a deployment concern because when the Load Balancer is an instance (software), then you actually add a Client in the chain between the final clients and your middlewares.
At very high level, a Load Balancer can be schematized as follows:
The global idea is to add a layer in between the Client and the Server, which will orchestrate the way the requests are distributed to the servers depending on different strategies. This picture represents four clients calling the same application through a Load Balancer, which will delegate the request processing to three servers (one server will process two of the four client requests...