(: May 27, 2019)
Cloud computing is the on-demand availability of computer system resources, especially data storage and computing power, without direct active management by the user. The concept has advanced in leaps and bounds over the years and has broken down into IaaS, PaaS, CaaS and many more continue to be discovered every passing season. Cloud computing is the perfect friend for the current IT culture and it is not going anywhere anytime soon. This article handles various opensource Cloud solutions. We shall be looking at PaaS and IaaS cloud solutions.
“Woe betide the leaders now perched on their dizzy pinnacles of triumph if they cast away at the conference table what the soldiers had won on a hundred bloodsoaked battlefields.”
― Winston S. Churchill,
Beginning in 2010 as a joint project of Rackspace Hosting and NASA, OpenStack has grown so prolifically to be one of the choices used to build clouds. OpenStack is a set of opensource software tools for building and managing cloud computing platforms for public and private clouds.
This software platform is made up of interrelated components that control diverse, multi-vendor hardware pools of processing, storage, and networking resources throughout a data center. OpenStack can be managed through a web-based dashboard, through command-line tools, or through RESTful web services.
It has many components that work together. Some of the bare minimum required for it to work include Glance, Nova, Neutron, Horizon, Cinder and Keystone.
Features of Openstack: Source(docs.openstack.org)
- Leverages commodity hardware: No lock-in, lower price/GB: HDD/node failure agnostic: Self-healing, reliable, data redundancy protects from failures.
- Unlimited storage: Large and flat namespace, highly scalable read/write access, able to serve content directly from storage system.
- Multi-dimensional scalability: cale-out architecture: Scale vertically and horizontally-distributed storage. Backs up and archives large amounts of data with linear performance.
- Account/container/object structure: No nesting, not a traditional file system. Optimized for scale, it scales to multiple petabytes and billions of objects.
- Built-in replication 3✕ + data redundancy (compared with 2✕ on RAID): A configurable number of accounts, containers and object copies for high availability.
- Easily add capacity (unlike RAID resize): Elastic data scaling with ease: No central database: Higher performance, no bottlenecks.
- RAID not required: Handle many small, random reads and writes efficiently.
- Built-in management utilities: Account management: Create, add, verify, and delete users; Container management: Upload, download, and verify; Monitoring: Capacity, host, network, log trawling, and cluster health.
- Drive auditing: Detect drive failures preempting data corruption.
- Expiring objects: Users can set an expiration time or a TTL on an object to control access.
- Direct object access: Enable direct browser access to content, such as for a control panel.
- Realtime visibility into client requests: Know what users are requesting.
- Supports S3 API: Utilize tools that were designed for the popular S3 API.
- Restrict containers per account: Limit access to control usage by user.
- Multiple integrations with other systems. OPenstack integrates so well with the following systems: Ceph, Docker(plugins), Azure, Hyper-V and many more.
As a top-level project of the Apache Software Foundation (ASF), Apache CloudStack is open source software designed to deploy and manage large networks of virtual machines, as a highly available, highly scalable Infrastructure as a Service (IaaS) cloud computing platform.
It is is a Java-based project that provides a management server and agents (if needed) for hypervisor hosts so that you can run an IaaS cloud.CloudStack currently supports the most popular hypervisors: VMware, KVM, Citrix XenServer, Xen Cloud Platform (XCP), Oracle VM server and Microsoft Hyper-V.
Features of CloudStack. Source: cloudstack.apache.org
- Works with hosts running XenServer/XCP, KVM, Hyper-V, and/or VMware ESXi with vSphere
- Provides a friendly Web-based UI for managing the cloud
- Provides a native API. Users can manage their cloud with an easy to use Web interface, command line tools, and/or a full-featured RESTful API
- May provide an Amazon S3/EC2 compatible API (optional)
- Manages storage for instances running on the hypervisors (primary storage) as well as templates, snapshots, and ISO images (secondary storage)
- Orchestrates network services from the data link layer (L2) to some application layer (L7) services, such as DHCP, NAT, firewall, VPN, and so on
- Accounting of network, compute, and storage resources
- Multi-tenancy/account separation
- User management
3. Apache Mesos
Apache Mesos is the first open-source cluster manager that handles workloads efficiently in a distributed environment through dynamic resource sharing and isolation. It abstracts CPU, memory, storage, and other compute resources away from machines (physical or virtual), enabling fault-tolerant and elastic distributed systems to be easily built and run effectively. T
his cluster manager is built using the same principles as the Linux kernel, only at a different level of abstraction. The Mesos kernel runs on every machine and provides applications (e.g., Hadoop, Spark, Kafka, Elasticsearch) with API’s for resource management and scheduling across entire datacenter and cloud environments (mesos.apache.org, 2019)
Features of Mesos
- Mesos is cross-platform: It runs on Linux, OSX and Windows. It is Cloud provider agnostic at the same time.
- Native support for launching containers with Docker and AppC images.
- Achieves great levels of High Availability: Fault-tolerant replicated master and agents using Zookeeper. Non-disruptive upgrades.
- It greatly scales linearly: Industry proven to easily scale to 10,000s of nodes.
- Support for APIs: HTTP APIs for developing new distributed applications, for operating the cluster, and for monitoring.
- A friendly web interface: Built-in Web UI for viewing cluster state and navigating container sandboxes.
- First class isolation support for CPU, memory, disk, ports, GPU, and modules for custom resource isolation.
- Support for running cloud native and legacy applications in the same cluster with pluggable scheduling policies.
Eucalyptus is open source software for building AWS-compatible private and hybrid clouds. It is a Linux-based software architecture that implements scalable private and hybrid clouds within your existing IT infrastructure. As an on-premise (private) Infrastructure as a Service clouds solution, it allows you to use your own collections of resources (hardware, storage, and network) using a self-service interface on an as-needed basis. As an Infrastructure as a Service (IaaS) product, Eucalyptus allows your users to provision your compute and storage resources on-demand (docs.eucalyptus.cloud).
Main Features of Eucalyptus
- Architecture: Eucalyptus is AWS Compatible and thus has five main components, Cloud controller, Walrus, Cluster controller, Storage controller, Node controller and Euca2ool.
- Users can run Amazon or Eucalyptus machine images as instances on both the clouds.
- Since it is AWS compatible, there is one hundred percent AWS API compatibility ans support.
- Installation: When its installation is compared to other cloud platforms like Openstack, you will notice it is easier to install Eucalyptus.
- Administration: Administration of Eucalyptus is flexible giving you both a strong Ccommand Line Interface compatible with EC2 API
- Popularity: Its popularity is medium
- IaaS offering: Eucalyptus offers both Public and private cloud implementations.
OpenNebula is a simple yet powerful and flexible turnkey open-source solution to build Private Clouds and manage Data Center virtualization. It implements IaaS. The first open-source version of OpenNebula was released in March 2008.
Key Features of OpenNebula. Source: opennebula.org
Interfaces for Administrators and advanced users
- Powerful CLI that resembles typical UNIX-command applications
- SunStone Portal for administrators and advanced users
Capacity and performance Management
- Fine-grained ACLs for resource allocation
- Resource Quota Management to track and limit computing, storage and networking resource utilization
- Dynamic creation of Clusters as pools of hosts that share datastores and virtual networks for load balancing, high availability, and high performance computing
- Dynamic creation of Virtual Data Centers as fully-isolated virtual infrastructure environments where a group of users, under the control of the VDC administrator, can create and manage compute, storage and networking capacity
- Federation of multiple OpenNebula Zones for scalability, isolation or multiple-site support
- Powerful and flexible Scheduler for the definition of workload and resource-aware allocation policies such as packing, striping, load-aware, affinity-aware.
- High availability architecture
- Persistent database backend with support for high availability configurations
- Configurable behavior in the event of host or VM failure to provide easy to use and cost-effective failover solutions
Integration with external providers
- Native support for hybrid cloud computing with connectors for AWS and Azure
- Modular and extensible architecture
- Customizable plug-ins for integration with any third-party data center service
- API for integration with higher level tools such as billing, self-service portals…
Platforms it runs on
- Fully platform-independent
- Broad support for commodity and enterprise-grade hypervisor, monitoring, storage, networking and user management services
- Build a cloud on LXD, KVM and VMware vCenter
- Packages for major Linux distributions
Crafted with security in mind
- Fine-grained ACLs and user quotas
- Powerful user, group and role management
- Integration with user management services like LDAP, Active Directory…
- Login token functionality
- Fine-grained auditing
- Support for isolation at different levels
- Virtual infrastructure management adjusted to enterprise data centers
- Complete life-cycle management of virtual resources
- Powerful hooking system
- Full control, monitoring and accounting of virtual infrastructure resources
- Fine-grained multi-tenancy
According to Nebula, here are the top ten reason why you should use it to manage your private Cloud.
- Powerful and Innovative: Enterprise-class functionality for the management of virtualized data centers to build private and hybrid clouds
- Infrastructure Agnostic: Fully platform-independent; allows for leveraging of existing IT infrastructure, and avoiding vendor lock-in
- Adaptable, Extensible and Integratable: Allows you to build your customized cloud service and make cloud operations conform to existing policies
- Interoperable: Cloud interoperability and portability providing cloud consumers with choice across standards and most popular cloud interfaces
- Fully Open Source: OpenNebula is truly open-source code – not open core – distributed under Apache license
- Simple: Despite its technical sophistication and advanced functionality, OpenNebula is easy to download, install and update
- Stable and Proven: Rigorously tested through an internal QA process and by a large community with many massive scalable production deployments
- Mature: Development driven by user needs and matured through many release cycles
- Enterprise-class Product: OpenNebula comprises all key functionalities for enterprise cloud computing, storage and networking in a single install
- One-stop Support: Wide variety of community and commercial support from the developers of OpenNebula
AppScale is an open-source cloud computing platform that automatically deploys and scales unmodified Google App Engine applications over public and private cloud systems and on-premise clusters. It is a distributed software system that implements a cloud platform as a service (PaaS). As such, AppScale is an easy-to-manage serverless platform for building and running scalable web and mobile applications on any infrastructure. The platform enables developers to focus solely on business logic in order to rapidly build scalable apps, cleanly separating it from deployment and scaling logic. It allows operations to provide a consistent, tunable environment that can simplify running and maintaining apps on multiple infrastructures (github.com/AppScale/appscale, 2019). It is supported and maintained by AppScale Systems, in conjunction with Google.
Main goal of AppScale
The goal of AppScale is to provide developers with a rapid, API-driven development platform that can run applications on any cloud infrastructure. AppScale decouples application logic from its service ecosystem to give developers and cloud administrators control over application deployment, data storage, resource use, backup, and migration (www.appscale.com).
- Scalable: as the name suggests, AppScale deploys and automatically Google App Engine applications with ease.
- Quick prototyping
- AppScale is easy to use hence making companies favor it.
tsuru is an extensible and open source Platform as a Service (PaaS) that makes application deployments faster and easier. With tsuru, you don’t need to think about servers at all. Developers can do the following with tsuru:
- Write apps in the programming language of your choice
- Back apps with add-on resources such as SQL and NoSQL databases, including memcached, redis, and many others.
- Manage apps using the tsuru command-line tool
- Deploy apps using Git, tsuru app-deploy or using docker images directly
When an app is deployed with git push or tsuru app-deploy, tsuru builds a Docker image and then distributes it as units (Docker containers) across your cluster.
tsuru components include
- Tsuru server
- Gandalf (git server)
- Archive server (git archive)
- PlanB router
- Docker Registry
- Docker Engine
Features of tsuru. Source: docs.tsuru.io
- Fast, easy and continuous deployment: Deploying an app is simple and easy, tsuru will also take care of all the applications dependencies in the deployment process.
- Easily create testing, staging, and production versions of your app and deploy to them instantly.
- Scaling: Scaling applications is completely painless. Just add a unit and tsuru will take care of everything else.
- Reliable: tsuru has a set of tools to make sure that the applications will be always available.
- Open source: tsuru is free, open source software released under the BSD 3-Clause license.
- Logging: tsuru captures container logs that may be freely processed and redirects them to stdout and stderr
- Service discovery: it uses the platform, Planb router and Redis to manage routes and traffic.
- Platforms. tsuru supports many platforms
8. OpenShift Origin/OKD
Released in April 2012, OpenShift Origin is the open source upstream project for Red Hat OpenShift. OPenshift origin was renamed to OKD in August 2018 to represent what it is – the Origin community distribution of Kubernetes that powers Red Hat OpenShift(blog.openshift.com). OKD is the Origin community distribution of Kubernetes optimized for continuous application development and multi-tenant deployment. OKD adds developer and operations-centric tools on top of Kubernetes to enable rapid application development, easy deployment and scaling, and long-term lifecycle maintenance for small and large teams (github.com/openshift/origin, 2019).
Features of OKD. Source: github.com/openshift/origin
- Easily build applications with integrated service discovery and persistent storage.
- Quickly and easily scale applications to handle periods of increased demand.
- Support for automatic high availability, load balancing, health checking, and failover.
- Push source code to your Git repository and automatically deploy containerized applications.
- Web console and command-line client for building and monitoring applications.
- Centralized administration and management of an entire stack, team, or organization.
- Create reusable templates for components of your system, and iteratively deploy them over time.
- Roll out modifications to software stacks to your entire organization in a controlled fashion.
- Integration with your existing authentication mechanisms, including LDAP, Active Directory, and public OAuth providers such as GitHub.
- Multi-tenancy support, including team and user isolation of containers, builds, and network communication.
- Allow developers to run containers securely with fine-grained controls in production.
- Limit, track, and manage the developers and teams on the platform.
- Integrated Docker registry, automatic edge load balancing, cluster logging, and integrated metrics.