IOSR Journal of Computer Engineering (IOSR-JCE) e-ISSN: 2278-0661,p-ISSN: 2278-8727, Volume 18, Issue 2, Ver. I (Mar-Apr. 2016), PP 55-61 www.iosrjournals.org DOI: 10.9790/0661-18215561 www.iosrjournals.org 55 | Page A Survey on Load Balancing Techniques in Cloud Computing Geetha Megharaj 1 , Dr. Mohan K.G. 2 1 (Department of Computer Science and Engineering, Viswesvaraya Technological University, India) 2 (Department of Computer Science and Engineering, Sai Vidya Institute of Technology, India) Abstract : Load Balancing is the one of the most significant parts in distributed environments. As Cloud Computing is one of the best platform that gives storage of data in very minimal cost and accessible for all time over the internet, load balancing for the cloud computing has turned into a very interesting and important study area. Load balancing supports to get a high user satisfaction and usage of resource ratio by guaranteeing a proficient and reasonable allocation of each computing resource. There are numerous difficulties in the load balancing techniques such as security, fault tolerance etc. in cloud computing environments. Many researchers have been proposed several techniques to enhance the load balancing. This paper portrays an overview on load balancing schemes in cloud environments. We explore the diverse types of algorithms that is proposed by many researchers to solve the problem of load balancing in cloud computing. Keywords: Cloud Computing, Load Balancing. I. Introduction Cloud is the cluster of distributed computers that provides on-demand computational resources over a network. A Cloud computing is becoming an advanced technology in recent years. It is conceptually distributed system where computing resources distributed through the network (Cloud) and services pooled together to provide the users on pay-as-needed basis. Cloud Computing provides everything as a service and are deployed as public, private, community, and hybrid clouds. The three basic service layers of cloud computing are: Software as a Service (SaaS), where the user does not need to manage the installation and configuration of any hardware or software, such as Google Online office, Google Docs, Email cloud, etc. Platform as a Service (PaaS), where a service is a delivery of a computing platform over the web where users can create and install their own application as they need. Configuration of computing platform and server is managed by the vendor or cloud provider. Example of PaaS is Google App Engine. Infrastructure as a Service (IaaS), where servers, software, and network equipment is provided as an on-demand service by the cloud provider [1]. The main function of Sharing resources, software, information through the internet are the main interest in cloud computing with an aim to reduce capital and operational cost, better performance in terms of response time and data processing time, maintain the system constancy and to accommodate future adaptation of the system. So there are various technical challenges that need to be addressed like Virtual Machine (VM) relocation, server consolidation, fault tolerance, high availability and scalability. But the central issue is the load balancing [2], [3]. It is the mechanism of spreading the load among various nodes of a distributed system to improve both resource deployment and job response time while also avoiding a situation where some of the nodes are having a huge amount of load while other nodes are doing nothing or idle with very little work. It also ensures that all the processor in the system or each node in the network does approximately the equal amount of work at any instant of time [4], [5]. The goal of load balancing is to improve the performance by balancing the load among the various resources (network links, central processing units, disk drives, etc.) to achieve optimal resource utilization, maximum throughput, maximum response time, and to avoid overload. Below figure 1 shows the block diagram of cloud architecture [10]. II. Classification of Load Balancing Algorithms Load balancing algorithms can be broadly classified into two types: Static algorithms and Dynamic algorithms. In Static Scheduling the assignment of tasks to processors is done before program execution begins i.e. in compile time. Scheduling decision is based on information about task execution times, processing resources, etc., which are assumed to be known at compile time [6]. Static scheduling methods are non- preemptive. The goal of static scheduling methods is to minimize the overall execution time. These algorithms cannot adapt to load changes during run-time [7]. Dynamic scheduling (often referred to as dynamic load balancing) is based on the redistribution of processes among the processors during execution time. This redistribution is performed by transferring tasks from the heavily loaded processors to the lightly loaded