# SLA and Virtualization ## SLA ### Definition - Service Level Agreement: a service-based legal agreement between a **provider** and a **subscriber** - Accepted before a cloud service can be used - Content - Provider's responsibility - Subscriber's responsibility, and entitlements - Billing and accounting system ### Types - Service based SLA: - Offer shared resources, used by many customers - Offered to cloud users - Customer based SLA - Agreement between individual customer or group, to provide non-shared **specific** services - Multi-level SLA: - Corporate level: generic and cover all user of an organization - Customer level: specific group of user - Service: specific type of service ### Boundaries - Organizational boundary - Physical perimeter, owned and governed by organization or cloud provider - Trust boundary - When cloud user extend trust beyond its physical boundary, and include resources from the cloud ### Characteristics of cloud - On-demand usage: use more cloud resources only when they need it - Multi-tenancy aka. Resource pooling: Resources are **instances** that can be used by many users - Scalability: Able to automatically scale up or down based on the settings and agreements - Ubiquitous access: Can be accessed everywhere with lots of devices - Measured usage: keep track and record the amount of IT resources used by consumers - Used for accounting and auditing - Resilience: distribute and replicate resources to provide redundancy, and fail over mechanism ### QoS - SLA is based on **Quality of Service** - Combination of metrics relating to requirements, and satisfaction of services offered by a provider. - Quantitative or qualitative - Parameters: - **Reliability** availability - **Security** and trust - **Scalability** - **Data** integrity and data protection - **Resilience** - Data **recovery** time - Support ## Virtualization ### Definition - The process of creating the **virtual** version of hardware, database, operating system and application from real copies, using virtual machine **monitor** to emulate the physical functionalities. - Multiple virtual machines are **multiplexed** in to the same hardware, to serve as an abstraction of physical OS - Guest OS is not bound to the physical hardware. - **Guest** OS runs on **host** OS, and they can be different ### Levels of virtualization - Instruction Set Architecture level: ISA **emulation**, which is used to run many legacy codes written for a different hardware configuration, like _Dynamo_ - Hardware level: VMs are located directly on top of **hardware**, allows the virtualization of each of the hardware components, which could be the input-output device, the memory, the processor, etc, like _VMWare_ - Operating system level: an operating system (OS) virtualization paradigm in which the kernel allows the existence of multiple isolated user space instances, like _Jails_ - Library level: translate API calls to user libraries, like _vCUDA_ - Application level: allows high-level language programs to be compiled easily. java's _jvm_ ### Types of Virtualizations - Desktop: Create desktop computer from physical desktop machine - Hardware: Virtual computer with OS that represents and act as a real physical computer. - Nested virtualization: Virtual machine inside another one - CPU virtualization: Virtual CPU are created to reduce stress on host - Memory virtualization: virtual memory is created and run on the VM, controlled by the virtual CPU of VM, but can't access memory address outside virtual - IO virtualization: Route IO request between virtual devices and physical hardware ### Virtual clusters - Physical cluster: interconnected by physical network - Failure may cause a falling physical node - Virtual cluster: VMs intereconnected by a virtual network across several physical networks - Node can be either physical or virtual - Cluster VMs can run different OS - To enhance **utilization** and **flexibility** - Can be freely replicated, and is **fault** tolerant easy to recover - Nodes can grow or shrink - Failure won't cause shutdown to host machine ### Migration of VM #### Introduction - VM can be moved from one cluster to another, which **isn't possible** with physical hosts. - Four ways: - Guest-based manager, where cluster manager is in guest vm - Host based manager: supervises the guest system, and can restart guest system remotely - Independent cluster manager on both host and guest - Use integrated cluster manager #### Six (five) steps of VM migration - Start migration (for some reason this is counted as step 0 and 1???) - Determine VM to migrate - Determine destination host - Transfer memory - State is stored in memory, so transfer memory first - Suspend VM and copy remaining data - Execution is suspended when last memory is transfered. - Non memory components like network and cpu are sent to destination - Commit - After all data, VM reloads and continue execution - Activate - Network is redirected to new VM - remove the original VM from source host ### Mechanism for cloud infra: building blocks - Environment: - Logical network perimeter: Virtual network boundary, encompass and isolate a group of resources, that may be **physically** distributed., to _isolate cloud resource from unauthorized users_ - Virtual Server: behaves exactly like a physical one, and running on the same physical server which is shared by multiple cloud users - Resource replication: create multiple of same resource to various locations, physically distributed around the world. - Ready made environment: provided by PaaS (platform as a service) - Failover system: use clustering to provide redundancy - Hypervisor: generate virtual server instances - Multi device broker: converts and exchanges information - Resource cluster: cloud resources are geographically distributed and group resources and instances together - State management database, used to temporarily maintain state data for software programs to improve performance. - Scaling - Automated Scaling listener: monitors communication between consumers and services for dynamic scaling up or down. - Load balancer: cloud runtime mechanism that distributes workload: data processing, computation, network traffic across two or more cloud resources, for better performance( automated horizontal scaling) - Monitoring - Cloud usage monitor: Autonomous software used for collecting and processing cloud resource usage data. - SLA monitor: monitors the performance to ensure they are fulfilling the Quality of Service requirement - Pay per use monitor: monitor the usage and calculate the price according to the agreement - Audit monitor: track data for network, to confirm to regulatory obligation ### Different hypervisors #### Microsoft virtualization technology - parent partition: logical hard drive for running hypervisor layer, and nesting child partitions - Child partitions: Logical hard drive responsible for running isolated OSes - Virtualization stack Collections of resources including the hypervisor, which makes up the Microsoft hyper V - Virtualization service provider: parent partition side, server that handles IO - Virtualization child provider: child partition component, that sends request to VSP - VMBus: send requests and data between VMs - WMI: Windows management instrumentation, manages virtual devices - Windows kernel: manages IO request from parent and child - IHV: hardware drivers - VM worker process: run and configure one VM each - Hypervisor - Manages a minimum set of **hardware** components - **Isolate** component, to enhance **loose coupling** - Provide **security** - Enhance **performance** - ![Image](./assets/1-2-microsoft-virtualization-technology.png) #### Xen Virtualization Technology - ![Image](./assets/1-2-xen.png) - Host Hardware: real hardware - Xen Hypervisor: lean software layer, that runs on **host hardware** and manages the **CPUs, memory, IO devices** - Guest Domains / Virtual Machines - Control Domain, or domain 0: special virtual machine with privilege to access, and handles IO functions and VM's interactions - Toolstack: control stack on domain **0**, enables user to manage **virtual** machines ### Virtualization Technologies - host components: real hardware - guest components: virtual system created from host machine, includes os, network, databases and servers - Hypervisor, or virtual machine manager: manages virtual machines - Networking technologies - Web services: manager over the internet - Front end systems: interface between user and virtual machine ### Advantages and challenges #### Advantages: - Deployment: - Less **cost**, reduction in cost of hardware, energy, cooling , expertise and administration - Less time needed - Creating servers on different system is **easy** - Maintainence: - **Scalability** - **Efficiency** - **Reliability** - Fast data disaster **recovery** - Backups and migrations are **easy** #### Challenges - **Security** of virtual machines - Need **expertise** to manage virtual machines - **Reliant** back up systems are needed - Failures of **host** will affect the guest system. - **Performance** may not be as good as using physical ones ### Future of Virtualization - Is and will be the **dominant** component of cloud computing - Decoupling of application will **increase** - **Less** energy consumption by optimizing OS and VMM - **Dominant** in IT market - Even more **scalable** - Better **security** ### Major classes of hardware virtualization #### Full virtualization, Hardware virtual machine - Complete simulation of actual hardware, so that OS and software doesn't need any modifications. - AWS Support - HVM AMI (Amazon Machine Images), in a fully virtualized environment - Can run OS without modification - HW extension is support - Instance type support: all current - Regioin: all #### Paravirtualization - Allows guest applications to be executed, as if they are running on a separate system, but hard ware environment is not simulated - Guest need to be modified - AWS Support - PV AMI: special bootloader is used - Can run on host hardware without explicit support for virtualization - Hardware extention is not supported - Some instance types are supported - Some regions are supported ### Layering and Virtualization #### Layering - Definition: approach to manage system complexity - Goals: - Simplify description of subsystem, to **abstract through interface** - Minimize interaction between subsystems - Enable us to independently manage each subsystem - Layering in computers: - Hardware - Software - OS - Library - Applications #### Interfaces in virtualization - ISA (Instruction Set Architecture): Instruction Set Architecture: boundary between hardware and software - ABI (Application Binary Interface): Allow application and library modules to access hardware, invokes **system calls** - API (Application Program Interface): Is a set of rules or protocols that enables software applications to communicate with **each other** to exchange data, features and functionality