Load balancing in Cloud Computing: Issues and Challenges

: The evolution of IT led Cloud computing technology emerge as a new prototype in providing the services to its users on rented basis at any time or place. Considering the flexibility of cloud services, innumerable organizations switched their businesses to the cloud technology by setting up more data centers. Nevertheless, it has become mandatory to provide profitable execution of tasks and appropriate resource utilization. A few approaches were outlined in literature to enhance performance, job scheduling, storage resources, QoS and load distribution. Load balancing concept permits data centers to avert over-loading or under-loading in virtual machines that as such is an issue in cloud computing domain. Consequently, it necessitate the researchers to layout and apply a proper load balancer for cloud environment. The respective study represents a view of problems and threats faced by the current load balancing techniques and make the researchers find more efficient algorithms.


Introduction
With the tremendous expansion of Computer Technology, Cloud computing emerged as a fascinating technology that amuses one to use its services at any time or place on a rented fashion. [1] Several business organizations also known as cloud providers ( Google, Amazon,IBM etc..) help us in providing cloud services to its customers. The ultimate focus of cloud relies on achieving utmost system performance and productivity by sharing of resources appropriately. Also, it offers sharing of IT resources globally to schedule the respective services at various data hubs thus, providing speedy services to customers. Similar distributed services such as grid computing and peer-to-peer computing [2] are also available that facilitates resource sharing and data transfer services. Altogether, it enables in providing business possibilities to both cloud service providers in building modern data centers and service consumers in setting their field economically on cloud. The Cloud Computing model is invented with four deployment models --public, private, community and hybrid cloud. In private model, infrastructure is exclusively available to a single organization consisting of multiple users and that multiple users may be third parties etc. Community model is available for a specific community of customers belonging to that organization. Public model is available for general public. It stands on the work space of the cloud supplier. Hybrid deployment model is a setup of two or more different cloud deployment models. These are driven together by standardized or trademarked technologies that enable the data and application portability.
Based on delivery models, we have three common delivery models formalized as Infrastructure-as-a-Service, Platform-as-a-Service and Software-as-a-Service [3]. The IaaS delivery model provides Infrastructure-centric IT resource as a service that can be accessed and managed via cloud interface(e.g. AWS,Rackspace,Cisco Metacloud ete.). The PaaS model provides a readymade platform as a service that contains already deployed and configured IT resources to use(e.g. Windows Azure, Google App Eng ete.). The SaaS model represents a set of programs and data typically known as software as a service to its users.( e.g. Google Apps,Cisco WebEx,salesfore.com etc.)

Uses of Load Balancing
Load balancing concept mainly deals with the idea of distributing the load evenly on available IT resources. Even in the instance of breakdown of any service, its main goal is to provide continuous service by issuing and non-issuing the application with appropriate resource usage. Load balancing also focuses at minimizing the latency with respective to the tasks and improving resource utilization thus, enhancing the system performance cost-effectively. It also provides elasticity and adaptability for the applications whose dimensions may vary time ahead and demands extra IT resources. Other targets are reduction of energy utilization and carbon release, averting finally the congestion by providing the resources and fulfilling QoS requirements [4] [5]. Thus it necessitates a suitable load planning mechanism accounting several measures.

Relevant Studies
Load balancing is a technique which is responsible for distributing the load over one or additional workstations, servers, networks or other IT resources to a number of users [6]. This mechanism in cloud is completely different from conventional architecture of actual load balancing. Across the world, so many researchers are working and developing different types of optimum resource methods in cloud area. In order to perfectly balance IT resources and enhance performance, the respective technique uses run time distribution. In addition to the load balancing problem, we have several other issues like VM migration, execution time, performance of VMs, energy saving, carbon emissions, QoS and resource management etc [7] Mishra,s.k., [10] have studied the heuristic-based algorithms and for that they applied various types of loads like network,cpu, memory etc. to get a better performance in the cloud environment. Balaji and saikiran [11] presented different resource allocation problems and they have given optimal resource allocation for huge job requests. Radha et.al [12] discussed various resource scheduling in cloud and optimized the price for provisioning of resources and average success rate also improved with MQLO algorithm. Arunarani et.al [13] [32] presented a thorough study regarding different task scheduling techniques and identified measures appropriate for cloud environment. Their literature was originally based on methods, applications and parameters. A few authors provided security [14] [15] measures to different metrics that they are applying on the load balancing environment.
The below mentioned are the objectives of this article: • Reviewing the actual CLB algorithms.

•
Delivering a modern class of CLB algorithms.

•
Analyzing the pros and cons of the CLB algorithms.

Challenges In Cloud Load Balancing
Cloud Computing discipline is emerging as the most targeted research area. In that particular field, load balancing is appearing as one of the major threat demanding high-end concern from the researchers. Following are some load balancing problems that are mentioned below:

Geographical Distributed Nodes:
The data centers are distributed according to the geographical features of a an area/place for computation purposes. In this particular type, geo-spatial scattered nodes are valued as a sole system for carrying out the user requested operations efficiently.

Single Point of Failure:
The decisions with respect to the load balancing are handled by the master node for several dynamic load balancing algorithms with the non-distributed nature. If the master node crashes, the whole computing domain gets disturbed.

Virtual Machine Migration:
Virtualization is a method of creating or combining a number of VM's on a single physical system. The VMs deployed will be having individualistic behavior with various configurations. If in a case that physical system gets overburdened, a few VM's involves the need to be relocated to a distant location with help of Cloudlet migration techniques.

Algorithm Complexity:
Algorithm designing should be always simple in its nature and easy to be implemented. The more the complexity of the algorithm, the lesser the performance and efficiency in the cloud environment.

Load Balancer Scalability :
Cloud services provides accessibility to its users to use any service at any time or place by scaling up or scaling down the resources quickly based on demand. A good load balancing algorithm should be able to adapt to the quick changes in demand that may come with respect to network topology, power etc. to facilitate the respective system work effectively.

Load Balancing Model
The Cloud technology works on the principle of providing an accessibility to a group of resources i.e. physical servers,Virtaul servers, memory and networks to its users as and when required. To manage the user requests effectively, a quality load balancing algorithm needs to assign the jobs to respective VM's depending on Quality of Service requirements. A model and work flow of the load balancing are laid out below in fig 1.

Fig 1. Load Balancing Model
The cloud services receives a large variety of consumer requests that drives us to maintain a dynamic environment to process the jobs. When load balancer receives the user requests based on that, it executes load balancing algorithms. According to the request, load balancer selects the required Virtual Machines. The load balancer can decide on how to distribute the consumer request to various VM's. The DCC(Data Center Controller) is manager for job management. Jobs are then forwarded to load balancer, which executes load balancing algorithm to allot an appropriate VM to the job. Virtual Machine manager is responsible for Virtual Machines. VM is a piece of software that is available in computers and on the top of that we can run operating system and applications. Customer requests are accepted by the Virtual machines. Customers are from different places and they will submit their requests randomly. All the requests have to be forwarded to VMs for execution. Because of this, job allocation is a serious concern in Cloud computing. When few VMs are overburdened or few are free or have a less job to execute, QoS of the service will be decreased. As a result of this, users may be sometimes unsatisfied and may change their services to other Cloud providers. So in all ways, maintain a good load balancing algorithm for a better service performance.

Metrics of Load balancing
In order to achieve finer resource utilization and enhanced system performance, it becomes necessary that the load balancer should distribute the workload equally to all the existing resources. Various researchers proposed different load balancing approaches and measures for achieving high-end user satisfaction. Researchers need to make sure that all the factors are managed effectively to increase the whole system performance.

Performance:
System effectiveness are verified after successfully implementing the respective technique. 6.2 Makespan: This measures the total amount of time taken to allot resources to its users. 6.3 Throughput: This measures the rate at which the submitted requests are processed per unit time. The more the throughput rate, the greater the system performance.

Scalability:
This measures the ability of the node to carry out consistent load balancing even in the case when the needed number of nodes shoots up.

Fault Tolerance:
This measures the ability of the load balancing method to function unvaryingly even in the case of any failure of any node or link.
6.6 Response Time: This measures the total duration of time taken to respond to a submitted request for a service.

Migration Time:
This measures the total period of time taken to shift a request from an overburdened machine to an under-burdened machine. The lesser the migration time, the greater the system performance.

Resource Use:
This measures that all the available resources are appropriately utilized in cloud environment. The greater the IT resource usage, the lesser the overall cost, energy expenditure and carbon emission.

Degree of Imbalance:
This classifies the differences between Virtual machines.

Study Of Existing Load Balancing Techniques
Load balancing methods are divided into two types. They are a) Static Cloud load balancing b) Dynamic Cloud load balancing. These types are clearly explained below.

Static Load Balancing
These load balancing strategies don't rely on present status of the system, they only rely on system properties like operation time, storage, memory space, transforming ability of modules priorly. These strategies do not permit distribution of system resources at processing time. These strategies are simple to be implemented as well as executed but are suitable only for small-scale systems. As these techniques do not rely on present status of the system so, they are found to be impractical for estimating the system performance. Also, they do not enable finding of associated servers at processing time. A few static CLB methods are FIFO,Round Robin [16], Min-Max and Max-Min.
A static CLB method collects all job-related data in advance thus, cutting down the waiting time. It holds a record of all upcoming tasks and decides their processing time. The job having least execution time will be processed first and the job having utmost execution time will be executed later. In general, short-term tasks are carried out initially. The structure may sometimes overcome starvation issues as few tasks fail in aligning in a sequence demanding for more processing power at the same time.

Dynamic Load Balancing Techniques
As static load balancing strategies don't rely on present status of the system that is why, they are proven to be not useful for distributed cloud computing environment where the state changes proactively. As a result of this, we urge to have dynamic load balancing strategies good enough for cloud domain. In the below segment, we review several load balancing methods that are subjected to load balancer principle. In accordance with the study, we have outlined the techniques as follows: •

.1 Natural Phenomena Based Load Balancing
We reviewed a few load balancing techniques that are motivated by natural phenomena, such as GA,COA, Ant-colony and Honey-Bee etc.  [17] proposed a hybrid algorithm based on fuzzy logic and ACO.In this paper, they applied Taguchi experimental design for ACO parameters and fuzzy module to evaluate values for better response time.
Ebtesam Aloboud and Heba Kurdi (2019) [18] proposed a cuckoo optimization scheduling algorithm. In this, they are using the cuckoo bird. The cuckoos are kind of birds that do not make nests for themselves. These birds searches for convenient nests to lay eggs to raise. This algorithm provides better results for high priority jobs between different nodes. Babu and Samuel (2016) [19] came up with a algorithm considering reaction time and number of migrations as load metrics. In this paper, they are treating the tasks as honeybees and under-loaded cloudlet as food source. When a cloudlet gets overloaded, then automatically load balancing can be used to migrate from one cloudlet to another cloudlet to get better resource utilization.

Hybrid Load balancing Techniques(HLB):
HLB methods are used to reduce the disadvantages of static and dynamic methods. This method decreases the response time and increases the resource usage. We analyzed the hybrid methods in Table 2. D. Chaudhary and B. Kumar (2019) [20] are using a load scheduling model, Hybrid Genetic-Gravitational Search Algorithm for reducing the total cost of computation. For this, they have used hybrid genetic crossover approach. The finding of force parameter is based on gravitational constant using practical best and global best values.  [21] proposed an architecture, in that contemplate the cloud load and server processing for server issues are minimized for handling more requests from the customers. In this model, they used a load balancing model for physical as well as virtual servers to update data regarding server loading and computation power.
Naha et.al. (2016) [22] developed a hybrid algorithm by using round-robin and throttled technique with service proximity broker algorithm. In this article, for implementing this model, they are using three different service broker methods and one load balancing method.

Agent based Load balancing
In this part, we have studied different agent based load balancing methods. An agent is a part of software that self-regulates and constantly tells what is good for the design objectives. Different methods are summarized in the Table 3.
C´elia G. Ralha et. al. (2018) [23] presented a multi-agent system to positively allot resources in cloud environment. They developed resource prediction model that is based on multiple linear regression. Tasquier (2015) [24] proposed an agent based load balancer for multi cloud environment. In this article, they are using multi-cloud concept. In that, load balancing is applied on a mobile agent. This particular model makes use of agent to identify the status of cloud and it can notify about overloaded and under loaded cloudlets. Keshvadi (2016) [25] proposed a multi-agent-based load balancing architecture. This architecture runs on both sender and receiver methods to minimize waiting time and get better SLA. This model can be achieved by using these different agents like VMM Agent, Data center Monitor Agent and Negotiator Ant Agent.

General Load Balancing Techniques
In this, we discuss different general methods based on load balancing such as Virtual Machine migration and load balancing strategies. we analyzed different models in below Table 4.
Cem Mergenci and Ibrahim Korpeoglu (2019) [26] proposed a multi allocation algorithms for cloudlets. In this paper they proposed two resource utilization metrics TRfit and UCfit.These are used for measuring the goodness of the resource allocation. By using this they are checking all virtual machines are properly using physical server resources.
M. Vanitha and P.Marikkannu (2016) [27] proposed a genetic based cloud load balancing model. With a view to avert network traffic and minimize the resources utilization, it has mandated the need to equivalence the load on multiple hosts. Genetic algorithms are employed to share the load on multiple cloudlets that are running on a network.  [28] by using machine learning approach they are identifying the load on a cloud proactively during execution. They stated a load prediction model that is used to check over utilized and underutilized systems to apply their algorithm using multiple resource metrics.

Task Based Load Balancing
In this part, we have studied and outlined the literature in the area of task based load balancing. We analyzed various models in below Table 5.
Sobhanayak Srichandan et. al. (2018) [29] proposed a task based algorithm by combining the genetic algorithms and the bacterial foraging algorithm. This paper contains work in two parts. Firstly, the scheduling algorithm decreases the Makespan and in the second part getting better metric values for convergence and stability parameters.
Jiachen et. al. (2017) [30] proposed an algorithm formed on game theory as a mathematical tool for the reliable nodes. This method contains three steps. Firstly, they are doing reliability analysis by using task scheduling. Secondly by using gaming theory, they are creating gaming model for cloud task scheduling. Thirdly, they developed multi-stage sequential game model that is used for the participants.
Wei (2016) [31] implemented a scheduling model in mobile cloud computing using MAX-MIN ant system. In this model, the author used a local mobile cloud. In that, they added application scheduling structures. Then, they applied MAX-MIN ant system for scheduling in mobile cloud.

Conclusion and future work
In Cloud computing, load balancing of jobs on virtual machines is a key issue that has mandated utmost notice from the researchers. This paper illustrates a report of problems faced by load balancing. In accordance with this study, massive research has been done on several load balancing approaches taking into account the different measures. On the basis of comprehension, we differentiated the mentioned load balancing technologies to various categories like Natural Phenomenal, Hybrid, Agent, Task and general based load balancing. For individual section, we exhibited the idea, pros, cons and issues with respect to each and every technologies. This work will be useful for researches to illustrate the research problems employed in the load balancing area and presents a recap of existing load balancing techniques.