Baremetal with Apache CloudStack ApacheCon Europe 2016 Jaydeep Marfatia Cloud, IOT and Analytics
Me Director of Product Management Cloud Products Accelerite Background Project lead for open source project XenMan/ConVirt Co-Founder Convirture Corp. Architect for Oracle 10g Enterprise Manager 2
Apache CloudStack Highly available, highly scalable Infrastructure as a Service (IaaS) cloud computing platform Easy to deploy, turnkey solution that includes the entire "stack" of features most organizations want with an IaaS cloud Used by many enterprises for their private cloud, as well as for running large public clouds! CloudStack currently supports the most popular hypervisors: VMware, KVM, Citrix XenServer, Hyper-V and more 3
Accelerite Enterprise Infrastructure software company Acquired CloudPlatform from Citrix early this year Commercial product based on CloudStack 50+ engineers and adding more 4
Recent contributions by Accelerite Template upload from browser DHCP/DNS Offload LDAP integration CoreOS/Docker on CloudStack VPN enhancements VMWare Networking improvements Baremetal enhancements 200+ Bug fixes in the product 5
CloudStack User Interface
User Console 7
Admin Console 8
Self-service VM Provisioning Zone Template Compute Disk Affinity Network Launch 9
Monitoring Cloud Infrastructure 10 2016 Accelerite. All rights reserved.
Baremetal Team
Team Harikrishna Patnala Apache Committer, working on CloudStack 4+ years Expertise : Baremetal and Virtual Router Jayapal Uradi Apache Committer, 4+ years Expertise : CloudStack Networking Suresh Sadhu Quality Assurance of CloudStack, 5+ years Expertise : All rounder 12
Motivation for Baremetal
Why Baremetal? Meet high performance computing requirements Hadoop, Spark, HPC Take advantage of specialized hardware GPUs, Blade Micro-servers Databases Virtual Desktop Infrastructure management Desired for Docker Containers 14
Requirements
Data Center 16
Data Center Switch Rack Servers Secondary Storage 17
Workload Partitioning Switch Hadoop Rack Kubernetes Secondary Storage 18
Multi-Tenancy Switch Tenant 1 Rack Tenant 2 Secondary Storage 19
Multi-Tenancy and Workload partitioning Switch Tenant 1 Rack Tenant 1 - DB Tenant 2 Secondary Storage 20
Data Center VMs and Baremetal Rack Tenant 1 Network Tenant 2 Network 21
Baremetal in CloudStack Ability to deploy Baremetal servers as easy as spinning up a VM Multi-tenant Baremetal orchestration with network isolation Flexibility of using mixed environments of VM and Baremetal DB tier on Baremetal and other tiers on VMs for a multi-tier application Extensible architecture for different flavors of hardware and network elements 22
What all do we need?
PXE server Basic Networking Flat network External PXE/DHCP/DNS Servers Advanced Networking Isolation using VLANs Additionally VR acts as PXE 24 All VM networking services mapped to Baremetal
Advanced Networking Network isolation with VLAN Hypervisor 2 Hypervisor 1 Hypervisor 2 Guest1 VR Guest1 VM1 Guest1 VM2 Guest1 VM3 Public VLAN99 VLAN2000 Switch Management Storage Public VLAN99 Console, Storage VMs Hypervisor 2
Advanced Networking Network isolation with VLAN Hypervisor 2 Hypervisor 1 Hypervisor 2 Guest1 VR Guest2 VR Guest1 VM1 Guest2 VM1 Guest2 VM2 Guest1 VM2 Guest1 VM3 Guest2 VM3 Public VLAN99 VLAN2000 VLAN2001 Switch Management Storage Public VLAN99 Console, Storage VMs Hypervisor 2
Advanced Networking VLAN based isolation Networking services: DHCP DNS Source NAT Static NAT Port Forwarding Load Balancing Firewall VPN PXE
Templates PXE Server hosts the Installer Kernels and Kickstart files Template Registration is done by giving the URL from where OS Packages can be retrieved PXE Server/VR T F T P Baremetal Host NFS HTTP Kickstart, Installer Kernels OS Package Repository 28
Example Template URL ks=http_link_to_kickstartfile;kernel=nfs_path_to_pxe_kernel;initrd=nfs_pa th_to_pxe_initrd ks=http://10.147.28.7/export/home/hari/rhel65/ks1.ks;kernel=10.147.2 8.7:/export/home/hari/rhel65/RHEL65/images/pxeboot/vmlinuz;initrd=1 0.147.28.7:/export/home/hari/rhel65/RHEL65/images/pxeboot/initrd.im g 29
Service Offering Service offering allows administrator to determine size of the VM in terms of CPU and memory e.g. small vm 2 cpu, 512 MB ram For baremetal, CPU and memory information is specified while adding the host along with a tag and IPMI details e.g. host-44, 8 cpu, 32 GB ram tag ssd_bm, ipmi info : ip, user, password Tagging scheme is used to map service offerings and baremetal host 30 e.g. SSD baremetal medium 8 cpu, 32 GB ram tag ssd_bm
Switch Configuration Switch credentials Switch topology information host switch port mapping Switch { "racks": [ { "l2switch": { "ip": "10.147.28.11", "username": "admin", "password": "password", "type": "Force10 }, "hosts": [ { "mac": "d4:ae:52:7a:a5:9c", "port": "tengigabitethernet:0/30" }, { "mac": "d4:ae:52:7a:a5:9d", "port": "tengigabitethernet:0/31" } ] } ] } 31 Baremetal Nodes MS Node VR on Hypervisor Template Storage
Provisioning Flow
Baremetal Provisioning Flow Advanced Zone 1. User Requests Baremetal Instance 2. Management Server configures PXE DHCP on VR and physical switch with VLANS 3. Baremetal host started with IPMI command to PXE boot 4. Host gets DHCP 5. Host pulls PXE image 6. Image is pulled and installed 7. Host pulls user data from VR Physical Switch Management Server VR (w/ PXE & DHCP/DNS) Management Management Server Baremetal Server Hosts 33
Windows Baremetal Provisioning (Approach) Windows Deployment server needs to be programmed Need to invoke powershell commands from Linux Agent to be present in WDS Server Using RPC/or Event Queue mechanism, send Powershell commands to WDS AD / DHCP is used for authentication and PXE booting 34
Windows Baremetal Provisioning Flow 1. User Requests Baremetal Instance 2. Management Server configures WDS Server with PXE, switch configured 3. Baremetal host started with IPMI command to PXE boot 4. Host gets DHCP 5. Host pulls PXE image 6. Image is pulled and installed 7. Host pulls user data from VR DHCP/DNS Active Directory Management Server Switch WDS (w/ PXE) Management Management Server Baremetal Server Hosts 35
Baremetal Use Case for Container Deployment 1. Install CoreOS on Baremetal hosts 2. Setup networking Basic or Isolated (program the switch) 3. Create k8s cluster using cloudconfig sent via userdata service on VR 4. Use Kubernetes dashboard within CloudStack UI to deploy and manage containers 5. All CloudStack tenanting and isolation features apply CoreOS Images cloud-config Node1 Node2 Kubernetes Cluster Mgmt Server Virtual Router Master Dashboard 36
Extensibility
Network Switch Plugin <<interface>> BaremetalSwitchBackend getswitchbackendtype() preparevlan() removeportfromvlan() Force10BaremetalSwitchBackend public static final String TYPE = "Force10" getswitchbackendtype() { return TYPE } preparevlan() removeportfromvlan() 38
Network Switch Plugin Currently, a Dell Force10 switch is implemented To Extend to other types, implement following two methods as a plugin Arista plugin Implementation Details: 1.Implement AristaBaremetalSwitchBackend.java and implement the interface BaremetalSwitchBackend. For example interface refer to https://github.com/apache/cloudstack/blob/master/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networ kservice/force10baremetalswitchbackend.java. 2. Need to implement the following three functions with appropriate actions for Arista switches in the above file. (definition of interface is in https://github.com/apache/cloudstack/blob/master/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networ kservice/baremetalswitchbackend.java): public interface BaremetalSwitchBackend { String getswitchbackendtype(); void preparevlan(baremetalvlanstruct struct); void removeportfromvlan(baremetalvlanstruct struct); } 3. Add AristaBaremetalSwitchBackend bean configuration into https://github.com/apache/cloudstack/blob/master/plugins/hypervisors/baremetal/resources/meta- INF/CloudStack/core/spring-baremetal-core-context.xml. 39
Looking forward
Baremetal Projects : Contributions welcome WDS integration (WIP) Baremetal in VPC Network Add switch integration from different vendors NIC Bonding RAID UEFI Boot Redfish integration Auto-discovery of hosts and NIC details 41
Q&A