SRS – OpenStack Cloud – The purpose of this document is to specify the requirements of the OpenStack Cloud. This document gives detailed description of the functional and non-functional requirements of the client towards the project. The document is developed after considering various users of the systems and their preferences.
DOCUMENT CONVENTIONS/DEFINITIONS AND ABBREVIATIONS:
IaaS – Infrastructure as a Service
- Dashboard (“Horizon”) provides modular web-based user interface for all the Openstack services.
- Compute (“Nova”) provides virtual servers on demand.
- Network (“Neutron”) provides “network connectivity as a service” between interface devices managed by other Openstack services.
- Block Storage (“Cinder”) provides persistent block storage for the virtual machines hosted on the cloud.
- Image Store (“Glance”) provides a catalog and repository for virtual disk images.
- Object Store (“Swift”) allows you to store or retrieve files (but not mount directories like a fileserver).
- Identity (“Keystone”) provides authentication and authorization for all the Openstack services, and a catalog of these services of a particular cloud.
- Logstash: It is a tool for managing events and logs.
INTENDED AUDIENCE AND READING SUGGESTIONS:
The intended audiences of this Software Requirements Specification document include developers and reviewers, but it’s not limited to, the project team, the design team and the quality assurance team.
OpenStack is extensible and meets the needs of those who wish to implement it. From a deployers point of view, each service in OpenStack has become easier to deploy with more sensible defaults and the proliferation’s of cloud distributions. However, the architects view of OpenStack has actually gotten more complicated.
Flexibility and versatility – One of the greatest selling points of OpenStack is its incredible flexibility and versatility. Both of these are key benefits as businesses of all shapes and sizes recognize the benefits of cloud computing, positioning OpenStack as a compelling platform for many companies looking to make the most of this trend.
Agility – Speed has long been the essence of business success and in our increasingly competitive global business environment, this is only likely to continue to grow in importance.
A collaborative, open source environment – Perhaps the most obvious appeal of OpenStack is the open source nature of the platform, which gives users a level of customization that’s hard to match. Users can tweak and configure the system in the way that is most beneficial for their business.
No lock-in – A common factor that has prevented many companies from fully exploring the benefits of cloud computing is fear of vendor lock-in. With traditional providers understandably eager to hold onto their customers, this perceived risk of being tied down to a contract was one of the main reasons stopping businesses jumping onto the cloud bandwagon.
- An Integrated Approach to Software Engineering – Pankaj Jalote
- Introduction to computation and programming using python by John V. Guttag
IDENTIFICATION OF PRE-EXISTING WORK:
The existing public and private clouds are not flexible, clouds must be simple to implement and massively scalable. Without OpenStack, communication between services and replacement one service by another with similar characteristics will not be so easy.
OpenStack is an open source, private cloud alternative to Amazon Web Services and other public cloud platforms. The software controls compute, storage and networking resources throughout a data canter. It is managed through a dashboard, command line or via the OpenStack API.
- OpenStack is architected to provide flexibility as you design your cloud, with no proprietary hardware or software requirements and the ability to integrate with legacy systems and third party technologies.
- It is designed to manage and automate pools of compute resources and can work with widely available virtualization technologies, as well as bare metal and high-performance computing configurations.
- Manage virtualized commodity server resources
- Distributed and asynchronous architecture
- Dashboard with fully integrated support for self-service provisioning
- Ubuntu is the world’s most popular operating system for OpenStack. There’s no faster or more reliable way to build an enterprise-scale cloud, from provisioning to deployment and management.
- It is free open-source software released under Apache License.
- With these APIs, services can communicate with each other and also allows a service to be replaced by another with similar characteristics, only if the form of communication is maintained i.e. Openstack is extensible and meets the needs of those who wish to implement it.
- From a deployers point of view,each service in Openstack has become easier to deploy with more sensible defaults and the proliferation’s of cloud distributions. However, the architects view of Openstack has actually gotten more complicated.
- Improves data center efficiency, responsiveness and time to value
- Simple to deploy and easy to use; works with new or existing infrastructure
- Optimized with automation, security and resource sharing, and built-in metering
- Cost-effective solution for enterprise private clouds and service providers looking to offer Infrastructure as a Service
END USER CHARACTERISTICS:
The expected users of OpenStack cloud are mostly involved in two different, yet sometimes opposing, perspectives: the cloud user, and the cloud operator. The expectations and perceptions of the consumption and management of resources of a massively scalable OpenStack cloud from the user point of view is distinctly different from that of the cloud operator.
To install and run OpenStack via chef automation and for the development of extensions devstack is the most appropriate environment.
DESIGN AND IMPLEMENTATION CONSTRAINTS:
The OpenStack cloud will be localized for English only. Most part of project will be done on the command line of Ubuntu using Chef which uses ruby language and some part of development uses Python and everything will be stored in git repository. Since everything is based on commands it will not be much user friendly.
ASSUMPTION AND DEPENDENCIES:
We make one assumption about the OpenStack is that it supports automatic assignment of public IPs, and OpenStack is depended on git because OpenStack manages source code in git. One assumption about Logstash is that it will setup a basic Syslog listener and expose the port to the host.
OpenStack is made up of many different moving parts such as Keystone, Nova, Glance, Cinder, Swift, Neutron, Horizon etc. Because of its open nature, anyone can add additional components to OpenStack to help it to meet their needs. Since it is a very vast, in this project mainly I will be focussing on Keystone, Nova and Logstash, and the rest half part of the project is to automate the process of OpenStack installation using chef.
Keystone provides identity services for OpenStack. It is essentially a central list of all of the users of the OpenStack cloud, mapped against all of the services provided by the cloud which they have permission to use. It provides multiple means of access, meaning developers can easily map their existing user access methods against Keystone.
Keystone is the identity service used by OpenStack for authentication and high-level authorization. It currently supports token-based and user-service authorization.
Architecture: Architecturally, Keystone is simple. It processes all the API requests, providing Identity, Token, Catalog, and Policy services. It is organized as a group of front-end services exposed via the API network:
- The Identity service validates authentication credentials and supplies any associated metadata.
- The Token service verifies and administers tokens used for authenticating requests after a user’s credentials have been verified.
- The Catalog service provides a service registry that can be used for end point discovery.
- The Policy service exposes a rule-based authorization engine.
Setting it up: The actual installation instructions vary greatly between distributions and OpenStack releases. Generally, they are available as part of the distribution. Nonetheless, the same basic tasks must be completed. This section gives you an idea of what’s involved. System requirements: OpenStack relies on a 64-bit x86 architecture; otherwise, it’s designed for commodity hardware, so the minimal system requirements are modest. It is possible to run the entire suite of OpenStack projects on a single system with 8GB of RAM. For slightly larger installations, it’s possible to co-locate the Keystone service with other projects, such as the Nova controller. However, for highly scalable implementations, it’s better to use a dedicated system for identity management. A good starting point for a simple system is a quad-core CPU with 32GB of RAM and two Gbit network adapters.
Installation: The installation instructions depend on the distribution and, more specifically, on the package-management utility you select. In many cases, it’s necessary to declare the repository.
OpenStack is a cloud platform. To make the most of the flexibility of virtualization technology, IaaS providers and businesses who want to create public or private clouds need to be able to very quickly create and manage virtual machines. OpenStack aims to create abstracted pools of compute, storage, and networking resources that can be used to create virtual machines on top of standard server hardware. So system features include:
COMPATIBILITY AND PORTABILITY:
Aside from its open source nature, OpenStack has a number of advantages for cloud users. For starters, OpenStack is agile and easy to deploy; it supports both private and public clouds, but often companies choose it to build the former. OpenStack APIs are compatible with Amazon Web Services, so users don’t need to rewrite applications for AWS. This compatibility also allows applications and storage to transit between private clouds and public cloud providers.
One of the biggest roadblocks for cloud adoption — no matter the service provider — remains security concerns. To calm those companies’ worries, OpenStack’s robust security system supports multiple forms of identification.
MANAGEMENT AND VISIBILITY
The open source cloud’s Horizon dashboard gives administrators an overview of their cloud environment — including resources and instance pools.
CLOUD STORAGE: OpenStack offers unlimited storage pools and supports block-IO from a variety of vendors, as well as object file storage. Its built-in storage management automatically recovers failed drives or nodes. Replication and erasure coding with Ceph provides strong data integrity. To avoid the effects of drive failures, users can take advantage of pre-emptive drive checking. Additionally, OpenStack’s scaling capabilities enable users to add servers and storage elastically.As the need to tackle big data in the cloud rises, OpenStack’s flexibility is an added bonus. Users can run Hadoop apps and Web pages for big data analytics, media files and standard block-IO.
QUALITY CONTROL: Because its code base is evolving, OpenStack’s release process is broken down into blocks roughly four to six months apart. This ensures quality control and release stabilization. The current stable release is Icehouse, but a recent Juno release is a likely replacement.
USER INTERFACES: The OpenStack dashboard provides administrators and users a graphical interface to access, provision and automate cloud-based resources. The extensible design makes it easy to plug in and expose third party products and services, such as billing, monitoring and additional management tools. The dashboard is also brand able for service providers and other commercial vendors who want to make use of it.
HARDWARE INTERFACES: Operating system for OpenStack preferably can be ubuntu, red hat, fedora or any other linux OS. But this project uses Ubuntu 14.04 or above, Centos6 or above and minimum 1 processor and 2 GB memory.
SOFTWARE INTERFACES: The automation of OpenStack using devstack is done by chef, in which the recipes are written in ruby, and further for development of UI for the components of OpenStack uses Python and backend is MYSQL.
COMMUNICATION INTERFACES: For building extensions of this project we use Rest API as communication interface.
PERFORMANCE REQUIREMENTS: The system should be able to produce accurate data within very less amount of time. Also data has to be updated so that any modifications are reflected to every user. The overall performance of the system depends on the network speed available.
Safety Requirements: User-ID and password needs to be entered in order to use the system. The system also allows the user to change his password at any point in tine if he so wishes. As the communication takes place using the company’s internal network infrastructure there is no interaction or communication with the outside world, specifically speaking with the internet. Hence all the data are stored safely and are maintained securely within the company’s operating environment.
Reliability: Only authorized users will be able to use the system. The system will work on Ubuntu system with 12.10 or above. OpenStack is open source software, which means that anyone who chooses to can access the source code, make any changes or modifications they need, and freely share these changes back out to the community at large.
Maintainability: The SRS document can be referred to for the validation during the maintenance stage; the developers take the responsibility of system maintenance.
Portability: Cloud computing may have ushered in huge benefits to businesses everywhere, powering many of the world’s biggest websites and services. But until OpenStack arrived, cloud technology still struggled to meet an important customer expectation, which is portability.
Usability: The OpenStack usage is in the form of initiatives including a unifed command-line interface, which will provide a common CLI tool for working with all parts of OpenStack. When complete, the interface will mark a significant usability improvement over the current system, where different OpenStack components rely on client-specific administration interfaces that aren’t necessarily consistent with one another.
Flexibility: As the need to tackle big data in the cloud rises, OpenStack’s flexibility is an added bonus. Users can run Hadoop apps and Web pages for big data analytics, media files and standard block-IO.
- Processor : Intel Core Duo
- Memory : 2 GB
- Hard Disk : 40 GB
- Network : 10 Mbps
- Operating System : Ubuntu 12.10 or above, CentOS6 or above
- Frontend : Ruby, Python
- Backend : MYSQL 5.5.37
- Others : Chef, Git, OS rally, Jenkins
Download Project SRS:
Download project report:
- Download Project synopsis
- Download project SRS
- Download system design
- Download implementation
- Download testing document