A distributed system can be viewed as an environment in which, number of computers/nodes are connected together and resources are shared among these computers/nodes. But unfortunately, distributed systems often face the problem of load imbalance, which can degrade the performance of the system. Load balancing is used to improve scalability and overall system throughput in distributed systems. Load balancing improves the system performance by dividing the work load effectively among the participating computers/nodes. Many algorithms were proposed for load balancing and their performance is measured on the basis of certain parameters such as, response time, resource utilization and fault tolerance.