Virtualization
Virtualization
By dr. Anchal
Using Virtualization Technologies
When you use cloud computing, you are accessing pooled resources using a technique called
virtualization. Virtualization assigns a logical name for a physical resource and then provides a
pointer to that physical resource when a request is made. Virtualization provides a means to
manage resources efficiently because the mapping of virtual resources to physical resources can
be both dynamic and facile. Virtualization is dynamic in that the mapping can be assigned based
on rapidly changing conditions, and it is facile because changes to a mapping assignment can be
nearly
instantaneous.
These are among the different types of virtualization that are characteristic of cloud computing:
l Access: A client can request access to a cloud service from any location.
l Application: A cloud has multiple application instances and directs requests to an
instance based on conditions.
l CPU: Computers can be partitioned into a set of virtual machines with each machine
being assigned a workload. Alternatively, systems can be virtualized through load-balancing
technologies.
l Storage: Data is stored across storage devices and often replicated for redundancy.
P2V: Physical to Virtual
V2V: Virtual to Virtual
V2P: Virtual to Physical
P2P: Physical to Physical
D2C: Datacenter to Cloud
C2C: Cloud to Cloud
C2D: Cloud to Datacenter
D2D: Datacenter to Datacenter
virtualization is a key enabler of the
first four of five key attributes of cloud computing:
l Service-based: A service-based architecture is where clients are abstracted
from service
providers through service interfaces.
l Scalable and elastic: Services can be altered to affect capacity and
performance on
demand.
l Shared services: Resources are pooled in order to create greater efficiencies.
l Metered usage: Services are billed on a usage basis.
l Internet delivery: The services provided by cloud computing are based on
Internet protocols
and formats.
• An ADC is considered to be an advanced version of a load balancer as it not only can provide
the features described in the previous paragraph, but it conditions content in order to lower the
workload of the Web servers. Services provided by an ADC include data compression, content
caching, server health monitoring, security, SSL offload and advanced routing based on current
conditions.
• An ADC is considered to be an application accelerator, and the current products in this area are
usually focused on two areas of technology: network optimization, and an application or
framework optimization. For example, you may find ADC’s that are tuned to accelerate
ASP.NET or AJAX applications.
• An architectural layer containing ADCs is described as an Application Delivery Network (ADN),
and is considered to provide WAN optimization services. Often an ADN is comprised of a pair of
redundant ADCs. The purpose of an ADN is to distribute content to resources based on
application specific criteria. ADN provide a caching mechanism to reduce traffic, traffic
prioritization and optimization, and other techniques. ADN began to be deployed on Content
Delivery Networks (CDN) in the late 1990s, where it added the ability to optimize applications
(application fluency) to those networks. Most of the ADC vendors offer commercial ADN
solutions.
Load Balancing and Virtualization
One characteristic of cloud computing is virtualized network access to a service. No matter where
you access the service, you are directed to the available resources. The technology used to
distribute service requests to resources is referred to as load balancing. Load balancing can be
implemented in hardware, as is the case with F5’s BigIP servers, or in software, such as the Apache
mod_proxy_balancer extension, the Pound load balancer and reverse proxy software, and the Squid
proxy and cache daemon. Load balancing is an optimization technique; it can be used to increase
utilization and throughput, lower latency, reduce response time, and avoid system overload.
The following network resources can be load balanced:
l Network interfaces and services such as DNS, FTP, and HTTP
l Connections through intelligent switches
l Processing through computer system assignment
l Storage resources
l Access to application instances
Typical scheduling algorithms in use today are round robin and weighted round robin, fastest
response time, least connections and weighted least connections, and custom assignments based
on other factors.
Load Balancing Mechanism
• A session ticket is created by the load balancer so that subsequent related traffic from the
client that is part of that session can be properly routed to the same resource.
• Persistence can be enforced using session data stored in a database and replicated across
multiple load balancers.
• Other methods can use the client’s browser to store a client-side cookie or through the use
of a rewrite engine that modifies the URL.
• The algorithm can be based on a simple round robin system where the next system in a list
of systems gets the request.
• Round robin DNS is a common application, where IP addresses are assigned out of a pool of
available IP addresses. Google uses round robin DNS.
Advanced load balancing
The more sophisticated load balancers are workload managers. They determine the current
utilization of the resources in their pool, the response time, the work queue length, connection
latency and capacity, and other factors in order to assign tasks to each resource.
Features of Load balancer
• polling resources for their health,
• the ability to bring standby servers online (priority activation),
• workload weighting based on a resource’s capacity (asymmetric loading),
• HTTP traffic compression,
• TCP offload and buffering,
• security and authentication, and
• Packet shaping using content filtering and priority queuing.
An Application Delivery Controller (ADC) is a combination load balancer and application
server that is a server placed between a firewall or router and a server farm providing Web
services. An Application Delivery Controller is assigned a virtual IP address (VIP) that it maps
to a pool of servers based on application specific criteria. An ADC is a combination network
and application layer device. You also may come across ADCs referred to as a content switch,
multilayer switch, or Web switch.
Understanding Hypervisors
A hypervisor is a software that you can use to run multiple
virtual machines on a single physical machine. Every
virtual machine has its own operating system and
applications. The hypervisor allocates the underlying
physical computing resources such as CPU and memory to
individual virtual machines as required. Thus, it supports
the optimal use of physical IT infrastructure.
Why is a hypervisor important?
Hypervisors are the underlying technology behind
virtualization or the decoupling of hardware from software.
IT administrators can create multiple virtual machines on a
single host machine. Each virtual machine has its own
operating system and hardware resources such as a CPU, a
graphics accelerator, and storage. You can install software
applications on a virtual machine, just like you do on a
physical computer.
Performance Metrics:
•CPU utilization: Percentage of processing power used by applications and services in the cloud.
•Memory utilization: Amount of RAM currently used by the system.
•Disk I/O operations per second (IOPS): Rate at which data is read or written to the virtual
disk.
•Network bandwidth: Amount of data transferred over the network per unit time.
•Latency: Time taken for a request to be processed and a response to be received.
•Response time: Time taken for a cloud service to respond to a request.
Operational Metrics:
•Server uptime: Percentage of time a server is operational.
•Instance availability: Whether virtual machines are running and accessible.
•Resource allocation: Distribution of resources across different applications and services.
•Cost per hour: Cost of running a cloud service per hour.
•Error rate: Frequency of application errors.
•Log events: System events recorded in logs.
Security Metrics:
•Access attempts: Number of login attempts and their success rate.
•Security incidents: Number of detected security breaches or vulnerabilities.
•Data encryption status: Whether sensitive data is properly encrypted.
•Firewall activity: Number of blocked network connections.
•Compliance checks: Whether system configuration adheres to security standards.
Load testing
Cloud-based Load Testing simulates real-
world user traffic and uses cloud computing
platforms to evaluate the scalability and
performance of online applications. Utilizing
the scalability and flexibility of cloud
infrastructure provides advantages over
conventional methods and helps organizations
locate performance bottlenecks and
effectively optimize application performance.
Cloud-based load testing allows for the quick
iteration and ongoing improvement of
software systems, enabling the delivery of
dependable and high-performing applications
in today's digital ecosystem. It does this by
distributing virtual users across multiple
locations and providing real-time information.
•Cloud Infrastructure: It refers to the fundamental cloud computing resources that cloud
service providers like AWS, Azure, or Google Cloud Platform offer, such as virtual machines,
storage, and networking.
•Load Testing Tools: Tools for creating, managing, and carrying out load tests are known as
load testing tools. They are specialized software programs. JMeter, LoadRunner, Gatling, and
BlazeMeter are a few examples, they are frequently cloud-compatible or designed with cloud
environments in mind.
•Monitoring and Reporting: During load tests, comprehensive monitoring tools keep track of
a variety of performance measures, including error rates, throughput, and response times. To
locate performance bottlenecks and enhance system performance, these technologies produce
comprehensive data and analytics.
•Scalability and Elasticity: To mimic high user loads, cloud-based load testing makes use of
the scalability and elasticity of cloud infrastructure. The technology enables the dynamic
allocation of resources in response to demand, guaranteeing precise testing outcomes without
being restricted by stationary on-premises hardware.
Benefits of Cloud-based Load Testing:
•Global Reach: Conducting tests from several places yields valuable insights into the
performance of applications under varying network conditions, thereby guaranteeing a
uniform user experience across various geographies.
•Real-time Insights: Cloud-based load testing with advanced monitoring and analytics
tools provides real-time performance information, allowing for prompt bottleneck detection
and proactive application performance optimization.
•Design Realistic Scenarios: Construct realistic load testing scenarios that faithfully capture the
expected traffic conditions, user behavior, and application or service usage patterns.
•Monitor Performance Metrics: Throughout load tests, keep an eye on important performance
measures including response times, throughput, error rates, and resource usage to spot any
bottlenecks and pinpoint areas that could use improvement.
•Test Across Geographic Regions: To ensure global scalability and dependability, conduct load
testing from a variety of geographic regions to evaluate application performance under various
network conditions and user demographics.
•Simulate Peak Loads: To figure out system capacity limits, spot scalability problems, and make
sure the application can manage maximum user loads without experiencing performance
degradation or downtime, simulate peak loads and stress situations.
•Isolate Testing Environments: To avoid interfering with live systems and reduce the possibility
of unintentional effects on production services during load tests, isolate testing environments from
production settings.
•Automate Testing Procedures: To expedite testing workflows and guarantee
repeatability, automate load testing procedures, encompassing test preparation,
execution, monitoring, and analysis, through the use of scripting languages, automation
frameworks, and interaction with CI/CD pipelines.
•Iterate and Optimize: To address issues, improve scalability, and improve user
experience over time, iterate continuously on load testing scenarios, analyze test results,
and optimize application performance based on findings.
Challenges in Cloud-based Load Testing
•Resource Allocation: As cloud settings can be complicated, it can be difficult to allocate
resources for load testing in a way that is both efficient and economical.
•Data Privacy and Security: Strong methods for data encryption, access control, and
compliance with data protection laws are necessary to ensure the privacy and security of
sensitive data utilized in load testing, particularly in multi-tenant cloud systems.
•Tool Compatibility and Integration: It might be difficult to integrate load testing tools
with current development and testing workflows, cloud platforms, and existing systems.
•Slack: Makes sure a platform is responsive to massive user interactions by using cloud-based
load testing to verify the scalability and performance of messaging and collaboration
functionalities.
•Airbnb: To provide a flawless user experience, the company simulates enormous levels of
user traffic from various areas and uses cloud-based load testing to preserve website and app
reliability during peak booking periods.
Load testing tools
• HP LodeRunner (https://h10078.www1.hp.com/cda/hpms/display/main/hpms_content.jsp?
zn=bto&cp=1-11-126-17^8_4000_100__)
• IBM Rational Performance Tester (
http://www-01.ibm.com/software/awdtools/tester/performance/)
• JMeter (http://jakarta.apache.org/jmeter)
• OpenSTA (http://opensta.org/)
• Micro Focus (Borland) SilkPerfomer (
http://www.borland.com/us/products/silk/silkperformer/index.html)
You will find load testing useful in testing the performance of not only Web servers, but also
application servers, database servers, network throughput, load balancing servers, and
applications that rely on client-side processing.