Skip to content
anmolbabu edited this page Aug 29, 2016 · 17 revisions

Skyring is a modern, extensible web-based storage management platform which represents the future of storage management. Skyring deploys, manages and monitors various storage technologies and provides a pluggable framework for tomorrow’s SDS technologies. Skyring integrates best-of-breed open source components at its core, and integrates with the broader management stack.

The below diagram depicts the whole stack of skyring and its various components

The major components of skyring are

  • Skyring core - management engine

This is the heart of the stack and takes care of all management activities. This layer maintains a Mongodb database to persist the underlying cluster configurations and its other details. With the help of SDS (Software Defined Storage) provides, it provisions and updates the details. Using the SDS providers, this layer provides mechanism for performing any actions over the underlying cluster.

This module provides various helper mechanisms like asynchronous task management, logging of audit data, locking of entities while update actions. This module also provides generic wrappers around specific systems like hardware provisioning, storage provisioning, authentication etc.

  • Skyring core - monitoring engine

Monitoring engine is responsible for getting time series data fetched and maintained properly for underlying clusters and their components. Skyring uses Graphite, Carbon and Whipsper combination to maintain time series data. The nodes managed by skyring, run a daemon Collectd to push the details directly to the graphite DB, and then monitoring module in Skyring takes care of all the required manipulations, calculations etc to make sure this time series data can be presented more meaningfully to end user.

Monitoring engine in Skyring maintains various threshold configurations for different physical and logical resources of the underlying cluster and its components. Based on these configurations, in case of usage crossing these limits, different notifications and alerts can be generated in the system to alert administrator.

  • Skyring core - eventing engine

Eventing engine is responsible for receiving and processing events from underlying cluster and its different components. Skyring uses its salt bus to receive events from storage nodes. The storage nodes uses D-Bus framework for collating and pushing the events to Skyring server. There is a python based Skyring agent which runs on storage nodes and sends the events to salt bus on Skyring server.

The eventing module in Skyring provides different event handlers which would conceive the events coming to salt bus and accordingly take actions. If integrated with notifications systems, appropriate notifications are generated and delivered.

  • Provisioning module

This is generic module which can be configured based on underlying Software Defined Storage system to perform actual hardware and storage provisioning for the cluster. Once storage nodes are accepted in Skyring and ready for provisioning of cluster, this module takes care of below two responsibilities

  1. Installation of storage bits of the nodes
  2. Provisioning of actual cluster using storage specific mechanism

The provisioning module is invoked once while nodes provisioning for installation of storage bits. Once nodes are ready with all the required bits, the SDS providers again invokes provisioning system for actual cluster formation. For example in case of Ceph, an external provisioning system Ceph-Installer is used which is a REST based framework around ceph-ansible and take care of node provisioning as well as cluster provisioning through its different APIs.

  • Authentication module

The authentication module in Skyring is again done as a configurable module and provides two types of authentication mechanisms

  1. Basic authentication with users maintained in database
  2. Integration with AD or LDAP for user authentication

Skyring by default provides an admin user which is locally authenticated using DB and this user is always available. Using this admin user, other users can be created or imported/synchronized from external AD or LDAP system.

  • REST apis

Skyring provides extensive set of REST apis for different actions like

  1. User management
  2. Cluster management
  3. Storage nodes management
  4. Tasks management
  5. Events management
  6. Monitoring data access
  7. Various configurations management

and many more. Check https://github.com/skyrings/skyring/blob/master/apps/skyring/routes.go for full list of supported REST apis from Skyring.

  • SDS providers

SDS providers are actual backend modules which perform the various actions on underlying storage systems and clusters. Skyring provides a highly customizable and configurable model for SDS providers. Skyring exposes a set of specifications, which lists the supported methods to be implemented by a SDS provider and these providers are loaded as RPC processes and utilized from Skyring for performing any SDS specific work on cluster.

Its flexible enough and lets the SDS providers to decide the way they want to talk to storage systems. It could REST based communication, a salt based communication, SSH based communication or a plain HTTP/HTTPS communication. Its solely left to the SDS provoder to decide how they talk to underlying storage system. As long as they fulfill the contract exposed by Skyring and deployable as RPC process with Skyring, it works fine seamlessly.

  • Alerts and Notifications

Skyring provides a flexible mechanism to setup mail notifications of various events happening in the system. Mail notifier details can be configured in the system and in case event handlers are written such way the notifications should be sent, it would take care and send the mails accordingly.

To enable mail notifications, first e-mail notifications should be enabled for admin user and the configure the mail server details and user-ids in the system.