Research Article

Hybrid Agent-Based Load-Balancing Approach Used in an IaaS Platform

Algorithm 1

Algorithm for VM.
 class VirtualMachine:
  def __init__(self, vm_id, capacity):
   self.vm_id = vm_id
   self.capacity = capacity
   self.current_workload = 0
  def assign_task(self, task):
   self.current_workload + = task
  def get_utilization(self):
   return self.current_workload/self.capacity
 class LoadBalancer:
  def __init__(self, vms):
   self.vms = vms
  def balance_load(self, task):
   # Simple load balancing: Assign the task to the VM with the lowest current workload
   target_vm = min(self.vms, key = lambda vm: vm.current_workload)
   target_vm.assign_task (task)
  def print_utilization(self):
   for vm in self.vms:
    print (f“VM {vm.vm_id} Utilization: {vm.get_utilization()}”)
 # Example usage
 if __name__ = = “__main__”:
  # Create virtual machines
  vm1 = VirtualMachine (vm_id = 1, capacity = 120)
  vm2 = VirtualMachine (vm_id = 2, capacity = 170)
  vm3 = VirtualMachine (vm_id = 3, capacity = 130)
  vms = [vm1, vm2, vm3]
  # Create a load balancer
  load_balancer = LoadBalancer (vms)
  # Simulate tasks and load balancing
  tasks = [30, 40, 15, 25, 10]
  for task in tasks:
   load_balancer.balance_load (task)
  # Print VM utilizations
  load_balancer.print_utilization()
Level 1 of Cargo process
  Select: Accept the user’s request.
  Results: Distribute resources using a sophisticated algorithm
  Case1:
   Call Allotment_agent (Cargo info) and Master_Commit_Agent (Cargo info) for each node in Table 4 with status = “Empty.”
  Case 2:
   For every node N_Node with Status = “Normal” in Table 2,
   {
   If (N_Node.Availablememory-requested_memory >25%)∼{ Call Allotment_agent() Call Master_Commit_Agent() }
  Case 3:
   If (no node with the statuses “Free” or “Normal” is accessible in Table 2)
   Call Passage_Agent();
Level 2 Allotment Process (i)Update Tables 2 and 3 and create a VM in the chosen node with the needed cargo information. (ii)Using the information in the Node Resource Table, compute the modified node’s fitness value.
  µtotal = µavailable [from Node_Resource_Table]–µused [According to Table 2]
  v% = µavailable/µtotal × 100
  if (v >75%)
  {
  Allotment_status = Empty
  }
  Otherwise, if (Allotment_status >25%)
  {
  Allotment_status = Normal
  }
  Otherwise, Allotment_status = critical
  Refresh Tables 2 and 3.
Agent for travel ()
{
  Provide: Get the container agency
  To obtain the Non-Critical DC, initiate the Relocation agent.
  Please forward the request to DC.
}
Relocation process()
{
  Scan Table 4
  Select the DC that is least loaded and give the Passage agent back the DCID.
} //sample can be shown in Figure 5.
Cargo Information: Master_Commit Agent
{
  Add the information of the cargo to Table 4.
  Determine the Zone’s fitness value by using the information shown in Table outlined below:
  From the Prime DC Resource Table, µavailable = µtotal. Used from the Prime DC Cargo Table
  v% is equal to available divided by total times 100.
  The allocation status is empty if (v >75%)
  If (Allotment_status >25%), then } Else
  The allocation status is Normal.
  Otherwise, allocation_status = critical
  Make Table 4 updates