Cloud Simulator for Scalability Testing Nitin Singhvi (nitin.singhvi@calsoftinc.com) 1
Introduction Nitin Singhvi 11+ Years of experience in technology, especially in Networking QA. Currently playing roles like Tech PM, QA Architect, Solution Architect, etc. across the technology spectum of Networking, Virtualization, Cloud & Storage. Calsoft Pvt. Ltd. Product Development Services Company (in Storage / Virtualization / Networking / Cloud) with 16 years of existence, headquerterd in Pune, India. Sample customer list Cisco, Vmware, Nicira, Hitachi, EMC, NetApp, Isilon, Actifio, Solera, Juniper, Riverbed, etc. 2
Agenda Abstract Problem & Solution Sample Scalability Test Scenarios Cloud Simulator Architecture Architecture Overview Technologies Used Configurations & Management Next Steps Q&A 3
Abstract Background With the advent of Cloud, the same amount of infrastructure is holding more nodes and users. Plus, the cloud itself is getting bigger and bigger, meaning very high densities. This rapidly changing infrstucture landscape brings up new challenges for component vendors & that is the Scalability of their products for the cloud environment. Mix it with the need to verify & certify the products with such a deployment and we are talking about huge investment, setup, operational costs & engineering resources.plus, the overhead for IT teams to manage the chunk of HW infrastructure. Solution The proposed solution offers the simple, cost-effective & intuitive solution to the Scalability Testing with nextgen Container Technology. One can simply create layer of hundreds of simulated Hypervisors & thousands of VMs on top. The VMs can be chosen from variety of options to help build the use cases. One can run different tools, I/Os, protocols, etc. from inside each of the simulated VMs. It creates a full mesh topology with the possibility of simulating tenants whose compute nodes can reside on physically different servers & yet communicate with each other like real cloud environment. All this & more can orchstrated with the ease of config file, command line facility as well as intuitive UI. Advantages Overall the system offers a cost-effective, simple yet extremely powerful framework to build the complex Scalabale Tests. The system can be used to test various components of cloud like Storage, Network, Web UI, etc. 4
Storage Scalability Test Scenario Sample - 1 Scenario 5000 clients mounting 5000 different shares exported by storage array & doing I/Os. Protocols can be any storage protocol or a mix of them. 5
Storage Scalability Test Scenario Sample - 2 Scenario 200 clients running I/Os with different I/O patterns Protocols can be any storage protocol or a mix of them. Tool can be any tool like FIO, dd, etc. 6
Storage Scalability Test Scenario Sample - 3 Scenario 9000 clients mounting 5000 shares exported by storage array with 3000 clients actively doing I/Os Protocols can be any storage protocol or a mix of them. Tool can be any tool like FIO, dd, etc. 7
Storage Scalability Test Scenario Sample - 4 Scenario 2000 clients simulatenously booting up & mounting the shares exported by the storage array Protocols can be any storage protocol or a mix of them. 8
Storage Scalability Test Scenario Sample - 5 Scenario 4000 clients accessing 2000 files (2 clients accessing 1 file) with half of them accessing in WRITE mode & remaining ones accessing in READ-only mode Any storage protocol 9
Solution : Cloud Simulator Highlights Built using next-gen technologies of NW Namespaces, LXC & Docker Extremely light weight VMs enabling high density Hypervisor layer & compute nodes Each VM can run independent tools/applications/processes, etc The deployment is full-mesh meaning VMs of same tenant can reside on different physical servers & still communicate with each other Framework is highly configurable & easy to use/manage Provides command line utility to control each HyperVisor/VM from single point Powerful UI (WIP) to manage/config the setup through intuitive interface APIs to simulate the scenarios exactly the way user wants 10
Technology Brief - LXC Linux Containers (LXCs) Based on Kernel Containerization technology in Linux Provides isolated namespaces with separate Process, Mount, UTS, Network, IPC & User namespaces LXC is userspace client to manage these containers Each LXC can run one or more different services, programs or applications E.g. Mount a share & run FIO tool to do I/O 11
Technology Brief - Docker Docker Built on top of LXC Users can share their software bundled within Docker for use E.g. User wants his new client to be used for testing the storage device 12
Technology Brief Network Namespaces Network Namespaces Stripped down version of LXC Each node has its own Networking stack using separate NIC interface & TCP/IP stack Can be used when you need clients with different MAC/IP addresses E.g. Need 1000 VMs to just mount the shares such that storage sees them as discrete clients 13
Cloud Simulator Deployment Sample Components Controller Connection point of user to define, control & manage the infrastructure Servers PHY servers which run Ubuntu 14.04 OS & hold VMs 14
Config & Management Config File Defines the available HW resources Defines how many VMs & what type of VMs & their conmbination Custom VM info can be specified e.g. User wants to deploy a specific Docker instance in the mix CLI The binary accepts the config, installs the requied components & creates the topology Gives a command prompt for user to control VMs, execute commands in VMs or start processes inside them UI Similar to CLI, but gives an intuitive interface to configure and manage the infrastructure APIs To enable automation via the APIs (e.g. Build this config, then reboot all VMs, sleep 10, start FIO on 5 specific VMs, etc.) 15
Sample config file [General] no_of_physical_machines = 2 total_no_of_hypervisors = 16 total_no_of_vms = 75 total_no_of_linux_containers = 19 total_no_of_docker_containers = 28 total_no_of_network_namespaces = 28 custom_vms = 1 [Physical_Machine1] ip_addr_interface1 = 172.17.222.12/24 ip_addr_interface2 = 172.17.222.13/24 username = user2 password = user2 no_of_hypervisors = 6 total_no_of_vms = 25 total_no_of_vms_vlan_10 = 22 total_no_of_vms_vlan_20 = 3 no_of_linux_containers = 3 no_of_docker_containers = 5 no_of_network_namespaces = 5 16
Sample config file (Contd ) [VM1] machine_id = 1 hv_id = 2 ip_addr = 172.17.224.50/24 type = docker Image_url = https://registry.hub.docker.com/u/raksha/new_ovs/ docker_username = user1 docker_password = user123 vlan_id = 10 cpu = 25 memory = 256 name = custom_vm1 other_options = default 17
Tool Execution 18
Scalability Numbers Machine Spec OS - Ubuntu 14.04 RAM - 8 GB HDD - 500 GB CPU - Intel core i5 2400cpu@3.10 GHz Number of VMs Only LXCs - 1150 Only NW Namespaces - 5000 Only Docker containers - 1150 Deployment time Only 100 LXCs - 12 min 30 sec for first container + 10 sec for each container Only 100 NW Namespaces - 2 sec for 1 NW namespace Only 100 Docker containers - 2 min to pull image (ubuntu) from repository + 7 sec for each docker 19
Next Steps Intuitive UI Completion OpenStack Integration Windows Containers (when available) 20
Thank You 21