Load Balancing and Virtual Machine Allocation in Cloud-based Data Centers