Abstract: Cloud computing is a term, which involves virtualization, distributed computing, networking, and software and web services. A cloud consists of several elements such as clients, datacenter and distributed servers. It includes fault tolerance, high availability, scalability, flexibility, reduced overhead for users, reduced cost of ownership, on demand services etc. Central to these issues the establishment of an effective load balancing algorithm. The load can be CPU load, memory capacity, delay or network load. Load balancing is the process of distributing the load among various nodes of a distributed system to improve both resource utilization and job response time while also avoiding a situation where some of the nodes are heavily loaded while other nodes are idle or doing very little work. Load balancing ensures that all the processor in the system or every node in the network does approximately the equal amount of work at any instant of time. This technique can be sender initiated, receiver initiated or symmetric type. This objective is to develop an effective load balancing algorithm using maximize or minimize different performance parameters throughput, latency for example for the clouds of different sizes virtual topology depending on the application requirement.

Keywords: cloud computing, load balancing algorithms, Virtual Machine.