Design a load balancer that can efficiently distribute incoming traffic across multiple web servers. Focus on different load balancing algorithms, health checking mechanisms, and strategies for session persistence. Address challenges like SSL termination, scaling the load balancer itself, and handling server failures.