Mirantis OpenStack Planning Guide
Mirantis OpenStack Planning Guide
Guide
version 9.2
Mirantis OpenStack Planning Guide 9.2
Contents
Copyright notice 1
Preface 2
Intended Audience 2
Documentation History 2
Introduction 3
OpenStack environment architecture 3
Introduction to Fuel 4
Overview of the planning process 5
Fuel system requirements 6
Network requirements 6
Public and floating IP address requirements 6
Routing requirements 7
Switching requirements 7
Fuel Master node hardware requirements 8
Storage on the Fuel Master node 8
Fuel Slave nodes hardware recommendations 9
Fuel reference architecture overview 10
Nodes and roles 10
Highly-available environment architecture 11
Node configuration 12
Highly-available MySQL database 15
Server load balancing using HAProxy 16
Cluster resource management using Pacemaker and Corosync 16
Plan the network 18
Logical networks 18
Networking Templates 19
Specifying IP address ranges for logical networks 20
Virtual IP addresses for load balancing 20
Multiple cluster networks 20
Network topologies 22
Additional networking functionality 24
Known limitations 24
Plan the storage 27
Storage components overview 27
Plan block storage 27
Plan object storage 28
Storage plugins 29
Plan the monitoring tools 30
Monitor the OpenStack environment using the OpenStack Telemetry service 30
Custom transformed metrics 31
Plan the OpenStack Telemetry service back end 32
Optimize the MongoDB database 33
Modify MongoDB indexes 33
Plan a Hadoop cluster 35
Node requirements 35
Hardware requirements 35
Limitations 36
System prerequisites 36
Plan the orchestration 40
Orchestration (Heat) overview 40
Plan the vSphere integration 41
Overview 41
Deploy an environment with VMware vCenter and KVM/QEMU 42
Prerequisites 42
Known limitations 42
Plan the Fuel plugins 44
Fuel plugins overview 44
Fuel plugin validation 44
Calculate hardware resources 45
Example conventions 45
Calculate CPU 46
Calculate memory 47
Calculate storage 48
Calculate storage performance 48
Ephemeral storage 48
Block and object storage 49
Calculate object storage 50
Calculate ephemeral storage 51
Calculate network 53
Calculate network 54
Calculate floating and public IP addresses 54
Calculate IP addresses for Neutron 55
Calculate IP addresses for Nova-network 56
Copyright notice
2017 Mirantis, Inc. All rights reserved.
This product is protected by U.S. and international copyright and intellectual property laws. No
part of this publication may be reproduced in any written, electronic, recording, or photocopying
form without written permission of Mirantis, Inc.
Mirantis, Inc. reserves the right to modify the content of this document at any time without prior
notice. Functionality described in the document may not be available at the moment. The
document contains the latest information at the time of publication.
Mirantis, Inc. and the Mirantis Logo are trademarks of Mirantis, Inc. and/or its affiliates in the
United States an other countries. Third party trademarks, service marks, and names mentioned
in this document are the properties of their respective owners.
Preface
This documentation provides information on how to use Fuel to deploy OpenStack
environments. The information is for reference purposes and is subject to change.
Intended Audience
This documentation is intended for OpenStack administrators and developers; it assumes that
you have experience with network and cloud concepts.
Documentation History
The following table lists the released revisions of this documentation:
Introduction
OpenStack is an extensible, versatile, and flexible cloud management platform. It is a portfolio
of cloud infrastructure services — compute, storage, networking, and other core resources that
are exposed through REST APIs. It enables a wide range of control over these services, both
from the perspective of an integrated Infrastructure as a Service (IaaS) controlled by
applications and as a set of tools that enable automated manipulation of the infrastructure
itself.
This document will help cloud administrators to understand the OpenStack components and
architecture they can deploy using Fuel, as well as estimate future scaling requirements. This
document presumes that you are familiar with basic OpenStack concepts.
This section includes the following topics:
Warning
We highly recommend that you do not place Ceph OSD on controllers as it
severely degrades the controller's performance. Use separate storage nodes
if you have enough hardware.
• Swift
Provides object storage that Glance can use to store virtual machine images and
snapshots. If you do not select any other storage options when you provision an
OpenStack environment, Fuel deploys Swift by default. Applications that you
deployed in your OpenStack environment may also use Swift object storage.
Selection of a storage back end for your OpenStack environment depends on multiple
factors. For more information, see: Plan the Storage.
Seealso
Introduction to Fuel
Fuel is a deployment automation tool with a user-friendly web UI that helps you to quickly
provision an OpenStack environment. Fuel is a part of Mirantis OpenStack — a productized
snapshot of the open source technologies. Fuel includes scripts that dramatically facilitate and
speed up the process of cloud deployment, without requiring you to completely familiarize
yourself with the intricate processes required to install the OpenStack environment components.
Fuel includes the following components:
Fuel Master node
A standalone physical or virtual machine server from which you provision your OpenStack
environments.
Fuel Slave nodes
Servers, or node servers, that can be controller, compute, storage, or other nodes.
Fuel deploys an OpenStack architecture that was thoroughly tested and proved to be effective
on many deployments. One of the main advantages of the architecture is high availability and
load balancing. All components that Fuel deploys on the controller node are highly-available. For
example, to achieve high availability in stateless OpenStack services, such as nova-api,
nova-conductor, and so on, Fuel uses Pacemaker/Corosync <http://clusterlabs.org/>. For more
information, see: Fuel reference architecture overview.
Note
If the architecture that Fuel deploys does not meet your business requirements, standard
configuration can be adjusted according to your needs. For more information, contact
Managed Services for Mirantis OpenStack
Network requirements
The server on which you install the Fuel Master node must have access to the Internet to
download packages required to install the operating system on the Fuel Slave nodes and later
update the packages, as well as the Fuel software. If for security or other reasons the Fuel
Master node does not have an Internet connection, then you must configure a local repository
mirror and point Fuel to use this repository.
All nodes in your OpenStack environment must be able to communicate with each other. Your
network configuration greatly depends on your environment requirements and the network
topology that you select. For more information, see: Plan the network.
This section includes the following topics:
IP range Description
Public IP range Required:
Seealso
Routing requirements
If you deploy a single node group, you do not need to meet any routing requirements. However,
if you deploy multiple node groups, your environment must meet the following requirements:
Switching requirements
Before deploying an OpenStack environment, you must configure network switches. Since
terminology and configuration vary for each vendor, this section provides general
vendor-agnostic information about how traffic should flow. For detailed information on how to
set up networks, read the OpenStack Networking Guide.
Disregarding the type of the switch and vendor that you use, set the following configuration for
Admin (PXE) network:
1. Configure all access ports to allow non-tagged PXE booting connections from each Fuel
Slave node to the Fuel Master node.
2. Set the switch port assigned for PXE requests on all nodes to Access mode.
3. Isolate the PXE boot network from any other L2 network segments. Since Fuel runs its own
DHCP server, it may conflict with DHCP servers from other L2 network segments which may
result in both company infrastructure and Fuel being nonoperational.
4. Configure each of the switch ports connected to the Fuel Slave nodes as STP Edge port or
spanning-tree port fast trunk to avoid DHCP timeouts. For different switch port vendors, this
terminology may vary.
• Quad-core CPU
• 4 GB RAM
• 10 Gigabit network port
• IPMI access through an independent management network
• 50 GB (depends on the number of deployed nodes)
See: Storage on the Fuel Master node
For a testing environment:
• Dual-core CPU
• 2 GB RAM
• 1 Gigabit network port
• 50 GB disk
• Physical console access
Master node does not require additional disk space to store logs. However, you have to assign a
required amount of disk space for logs on the monitoring nodes.
Seealso
• Monitoring Guide
• Controller nodes
Use at least three controller nodes for high availability. High availability is
recommended for all production environments. However, you can start with a single
controller node for testing purposes and add more nodes later. The controller nodes
must form a quorum. Therefore, for all deployments, the total number of controller
nodes must be odd. Further resource scaling depends on your use case and requires
extensive assessment of your environment and business needs.
• Compute nodes
The number and hardware configuration of the compute nodes depend on the
following:
Seealso
Note
You do not need Cinder storage nodes if you use Ceph RBD as storage backend for Cinder
volumes.
OpenStack services are interconnected by RESTful HTTP-based APIs and AMQP-based RPC
messages.
Redundancy for stateless OpenStack API services is implemented through the combination of
Virtual IP (VIP) management using Pacemaker and load balancing using HAProxy.
Stateful OpenStack components, such as the state database and messaging server, rely on their
respective active/active and active/passive modes for HA.
For example, RabbitMQ uses built-in clustering capabilities, while the database uses
MySQL/Galera replication.
glance-api (HA) nova-api (HA) keystone-api (HA) cinder-api (HA) neutron-api (HA)
HAProxy pacemaker
neutron agents
Swift
HAProxy
glance-registry (HA)
nova-scheduler
HAProxy
pacemaker HAProxy
MySQL/Galera
RabbitMQ
Node configuration
Fuel uses custom Pacemaker scripts to deploy HAProxy inside a dedicated network namespace.
Controller nodes
Controller nodes are the main components of your highly-available OpenStack environment.
Controller nodes manage all operations within an OpenStack environment. Multiple
controller nodes provide redundancy.
A recommended implementation of a highly available cluster architecture uses
quorum-based techinques. A basic quorum-based techinque requires a simple majority of
nodes: floor(N/2)+1 nodes. This means that keeping a functioning cluster with one failed
controller node requires a minimum of three nodes. Keeping a functioning cluster with two
failed controller nodes requires a minimum of five nodes and so on.
See also Highly-available MySQL database.
E External IP
I Internal IP
E HAProxy I E HAProxy I
horizon horizon
glance-registry glance-registry
nova-scheduler nova-scheduler
nova-api nova-api
glance-api glance-api
keystone-api keystone-api
neutron-api neutron-api
cinder-api cinder-api
RabbitMQ Cluster
rabbitmq rabbitmq
(Active/Active)
Every OpenStack controller node runs HAProxy, which performs the following:
Note
OpenStack services use Oslo messaging and are directly connected to the RabbitMQ
nodes. Therefore, they do not require HAProxy.
When you access an OpenStack cloud through the Horizon dashboard or through the REST
API:
1. Your request is sent to the controller node that holds the external VIP.
2. HAProxy terminates the connection.
3. HAProxy then handles a new request by sending the request to the original or other
controller node depending on the current controller workload.
Each component or service that runs on the controller nodes has its own HA mechanism:
• RabbitMQ provides active/active high availability for the OpenStack Telemetry service
using mirrored queues. RabbitMQ is deployed with custom resource agent scripts for
Pacemaker. You can enable HA for RPC queues as well if required. However, it may
impact performance in large deployments.
• MySQL databases achieve high availability through MySQL/Galera cluster and custom
resource agent scripts for Pacemaker.
• Neutron agents are active/passive and are managed by custom resource agent scripts
for Pacemaker.
• Ceph monitors implement their own quorum-based HA mechanism and require time
synchronization between all nodes. Clock drift higher than 50ms may break the quorum
or even crash the Ceph service.
Compute nodes
Compute nodes are the servers on which your users create virtual machines (VMs) and host
applications. Compute nodes communicate with the controller nodes and the essential
services such as RabbitMQ and MySQL.
nova-compute
E HAProxy I neutron-openvswitch-agent
Open vSwitch
Storage nodes
Storage nodes provide storage for persistent and temporary data. Fuel provides the
following storage options:
controller
controller
ceph-mon1 storage 1 compute 1
controller
ceph-mon ceph-osd nova
ceph-mon ceph-osd ceph client
management network
• Swift
Swift API relies on the same HAProxy setup with VIP on the controller nodes as the other
REST APIs. In a testing environment, you can deploy Swift Storage and Proxy services
on the controller nodes. In a production environment, you need dedicated nodes: two
for Swift Proxy and a minimum of three for Swift Storage.
Swift Nodes
Controller Node
swift
E HAProxy I
Swift Proxies
swift-proxy
• The standby masters do not have the "slave lag" that is typical for MySQL master/slave
topologies. This is because Galera employs synchronous replication and ensures that each
cluster node is identical.
• Mirantis OpenStack uses Pacemaker and HAProxy to manage MySQL/Galera:
• Pacemaker manages the individual MySQL/Galera nodes, HAProxy, and the Virtual IP
Address (VIP).
• HAProxy runs in the dedicated network namespace and manages connections between
the MySQL/Galera active master, backup masters, and the MySQL clients connecting to
the VIP.
• Only one MySQL/Galera master is active in the VIP. This single direction synchronous
replication provides better performance.
Failover initiates the following actions:
1. The node that is tied to the VIP serves new data updates and increases its global transaction
ID number (seqno).
2. Each other node in the Galera cluster then synchronizes its data with the node that has the
seqno value greater than its current values.
3. If the status of any node falls behind the Galera cache, an entire replica is distributed to
that node. This causes one of the master nodes to switch to the Donor role, allowing an
out-of-sync node to catch up.
totem {
version: 2
token: 3000
token_retransmits_before_loss_const: 10
join: 60
consensus: 3600
vsftype: none
max_messages: 20
clear_node_high_bit: yes
rrp_mode: none
secauth: off
threads: 0
interface {
ringnumber: 0
bindnetaddr: 10.107.0.8
mcastaddr: 239.1.1.2
mcastport: 5405
}
}
Corosync uses UDP unicast transport and configures a "redundant ring" for communication. Fuel
deploys controllers with one redundant ring. Fuel uses the default Corosync configuration. You
can modify the default configuration in Fuel Puppet manifests.
Pacemaker functions in Fuel as the cluster resource manager for Neutron, HAProxy, virtual IP
addresses, some OpenStack and other services. You can put your own services under
Pacemaker control to leverage the use of Pacemaker as a cluster resource manager.
This is realized through Open Cluster Framework agent scripts.
The scripts performs the following:
• /usr/lib/ocf/resource.d/mirantis/ocf-neutron-[metadata|ovs|dhcp|l3]-agent
• /usr/lib/ocf/resource.d/fuel/mysql
• /usr/lib/ocf/resource.d/ocf/haproxy
The workflow of the scripts includes:
Seealso
Logical networks
This section describes default (predefined) networks and their behaviour. Fuel enables you to
create and modify networks using API, as well as modify service to networks mapping using
networking templates.
Fuel deploys the following networks:
Public network
Virtual machines communicate with each other and access the Internet through Public network.
Public network provides connectivity to the globally routed address space for VMs. The Public
network IP address assigned to the network and compute (in case of DVR) nodes is used by
Source NAT to enable the outgoing traffic from VM instances access the Internet.
Public network also provides Virtual IPs for public endpoints that are used to connect to
OpenStack services APIs.
Finally, Public network provides a neighboring address range for floating IPs that are assigned to
individual VM instances by the project administrator.
For security reasons, isolate Public network from other networks in an OpenStack environment.
Internal networks
Internal network is a general term for all networks in your OpenStack environment except for
Public and Private network. Internal networks include Storage, Management, and Admin (PXE)
Fuel networks. Internal network connects all OpenStack nodes within an OpenStack
environment. All components of an OpenStack environment communicate with each other using
internal networks. The internal network can also be used for serving iSCSI protocol exchanges
between compute and storage nodes.
Do not confuse internal network with Private, as the latter is only related to a network within a
project that provides communication between project's VMs. Isolate internal networks from
Public and Private networks for security reasons.
Admin (PXE) network (Fuel network)
The Fuel Master node uses Admin network to provision and orchestrate the OpenStack
environment. It provides DNS, DHCP, and a gateway to Slave nodes before the nodes are
provisioned. Since Fuel Slave nodes obtain their network configuration from the Fuel Master
node using DHCP, verify that Admin (PXE) network is isolated from all other networks in an
OpenStack environment and use only the DHCP server that the Fuel Master node provides.
Note
Admin (PXE) network must always be untagged. Even when it is combined with other
networks on the same network interface.
Networking Templates
You can use networking templates to create flexible network configurations. Networking
templates enable you to:
• Create additional networks. For example, you can create a separate network for Swift
storage traffic.
• Delete unnecessary networks.
• Add network roles.
• Create a network only if a relevant node role is present on the node.
• Customize networking topologies. For example, configure subinterface bonding.
However, networking templates have the following limitations:
Note
If you delete a template, Fuel automatically applies the default networking solution.
You can find the samples of network templates in the network template examples folder.
Seealso
• All logical networks are associated with a node group rather than the environment. The only
exception is default Admin network. The default Admin network is shared between all
environments and associated with all nodes that do not belong to any environment.
Note
When using the multiple cluster networks feature, you must set gateways for all
networks within an OpenStack environment. Fuel generates static routes between
networks of different node groups using these gateway addresses.
• A node serializes its network information based on its relationship to networks in its node
group.
• When user adds a node to an OpenStack environment, Fuel automatically assigns the node
to a node group based on the node's IP address. If the node's IP address does not fit into
any Admin (PXE) network, then Fuel assigns the node to the default node group.
• Fuel automatically creates a default node group for a new environment. However, a user
can also create a node group manually through API or CLI. In both cases, Fuel automatically
generates a set of default networks for every new node group. Similarly, when you delete a
node group, all networks which belong to this node group are deleted as well.
Note
The default Admin (PXE) network is not deleted, because it applies to a default node
group of each OpenStack environment.
Additionally, a user can manually add or remove networks within a a node group through
API or CLI.
• DHCP requests can be forwarded to the Fuel Master node using one of the following
methods:
Seealso
Network topologies
Fuel deploys network topologies using the OpenStack Networking service called Neutron.
Note
Since the upstream development efforts of Nova Network have been gradually reduced
and Neutron is becoming a preferred option for a majority of OpenStack deployments,
Nova Network is deprecated in Fuel. Use Neutron for all new deployments.
Neutron is a flexible network manager that enables you to create complex network
configurations. Neutron provides both level 2 and 3 network virtualization, as well as IP address
management (IPAM). In addition, neutron has multiple open-source and enterprise-class plugins
that enable interoperability with such networking technologies as virtual switches and
software-defined networking (SDN).
This section describes network topologies that have been thoroughly tested and are
recommended for use in production environments. However, you can alternate these
configurations to address the specific requirements of your cloud.
Fuel deploys the following network configurations:
3 NICs 4 NICs
eth0 Port for Administrative network Port for Administrative network
eth1 Port for the following networks: Port for the following networks:
Note
You can configure GRE segmentation using CLI while VLAN and VXLAN options
can be selected using UI wizard.
• Public/Floating • Public/Floating
(untagged) (untagged)
• Management • Management
(tag=102) (tag=102)
• Storage
(tag=103)
Seealso
Seealso
• Fuel Plugins
• Mirantis OpenStack NFVI Deployment Guide
Known limitations
Note
For security reasons, Fuel does not configure a DHCP server for the
admin_floating_net__subnet. If you use the admin_floating_net network for an
instance boot request, select an additional subnetwork with a DHCP server enabled.
For example, use admin_internal_net__subnet. Otherwise, the instance fails to boot.
You must also manually configure the interfaces from the subnetwork without a DHCP
server so the instance can obtain an IP address.
• Neutron will not allocate a floating IP range for your projects. After each project is created,
a floating IP range must be created. This does not prevent Internet connectivity for a
project's instances, but it would prevent them from receiving incoming connections. As an
administrator, assign floating IP addresses for the project proceeding with the following
steps:
source /root/openrc
keystone tenant-list
System response
+----------------------------------+----------+---------+
| id | name | enabled |
+==================================+==========+=========+
| b796f91df6b84860a7cd474148fb2229 | admin | True |
+----------------------------------+----------+---------+
| cba7b0ff68ee4985816ac3585c8e23a9 | services | True |
+----------------------------------+----------+---------+
• Ephemeral storage — This is a temporary storage for the operating system in a guest VM.
Ephemeral storage is allocated for an instance in the OpenStack environment. As its name
suggests, the storage will be deleted once the instance is terminated. This means that the
VM user will lose the associated disks with the VM termination. Note that ephemeral
storage persists through a reboot of the VM.
• Persistent storage — In contrast to the ephemeral storage, the persistent one exists outside
an instance. Persistent storage is always available.
The Nova Compute service manages ephemeral storage.
• By default, ephemeral drives are stored locally on Compute nodes, in the Virtual Storage
partition.
• If Ceph is configured for the environment and the Ceph RBD back end for ephemeral drives
is enabled, Nova-compute stores ephemeral drives in Ceph.
• Other storage options are possible, such as an NFS share that is mounted from a SAN.
With Fuel deployment, you have the following storage options:
• Default providers — These are LVM for Cinder, local device for Swift, and Swift for Glance.
• Ceph — A storage platform that provides unified object, block, and file storage.
• Cinder LVM (default) — each volume is stored as a logical volume in an LVM volume group
on one of your Cinder nodes.
• Ceph — each volume is stored as an object in the Ceph RADOS object storage system.
Note
If you use vCenter as a hypervisor, you must use the VMDK driver to store your volumes
in the vCenter datastore.
Choose between Cinder LVM and Ceph for the Cinder storage backend based on the following:
• Ceph provides a single shared pool of storage nodes for image storage.
• Ceph provides object replication capabilities by storing Cinder volumes as Ceph RBD
objects. Each Ceph RBD object is stored as multiple RADOS objects. Ceph ensures that each
replica of an object is stored on a different node. This means that your volumes are
protected against hard drive and node failures.
You can customize the Ceph data replication rules in the CRUSH map separately for each
object pool, modify the number of object replicas, add different types of failure domains,
and so on.
• LVM provides much less protection of your data than Ceph does. Even if you use RAID on
each Cinder node, your data is only protected against a hard drive failure. If you lose the
Cinder node, you will also lose all volumes on the node.
• Ceph consumes more disk space than LVM. LVM stores a single replica of the data, whereas
Ceph stores at least two copies of your data so that your actual raw storage capacity must
be two to three times bigger than your data set. You can however implement erasure
coding striping to reduce the data multiplication requirements of Ceph.
• Ceph provides multi-node striping and redundancy for block storage.
• If you combine Ceph RBD backends for Cinder and Glance, you gain an important
advantage over Cinder LVM: copy-on-write cloning of Glance images into bootable Ceph
volumes.
• Ceph supports live migration of virtual machines with ephemeral drives, whereas LVM only
supports live migration of volume backed virtual machines.
With Cinder LVM, you have the following configuration options:
• Let Fuel create a JBOD partition that spans all the storage drives in a node.
• Join all drives into a RAID array before deployment and have the array appear to Fuel as a
single block device.
When deploying Ceph, Fuel partitions the Ceph storage nodes so that most of the space is
reserved for Ceph-OSD storage. All other partitions for the node consume a portion of the first
drive. To improve system performance, you can configure one or two SSDs and assign the
"Ceph General" role to them in the Fuel web UI.
Seealso
Note that the radosgw implementation of the Swift API does not implement all operations.
Ceph RBD uses RADOS directly and does not use the Swift API. This makes it possible to store
Glance images in Ceph and still use Swift as the object store for applications.
Note that it is not possible to have both radosgw and Swift running in the same OpenStack
environment, because the Ceph Object Gateway replaces Swift as the provider of the Swift APIs.
Storage plugins
Fuel integrates with leading storage providers and enables you to use third-party
enterprise-class storage solutions as Cinder back end. If your organization uses an established
storage platform, you can continue to leverage its benefits by using one of the Fuel plugins.
Mirantis is constantly extending the list of the supported third-party storage platforms to
address the requirements of its customers and partners.
For more information, see the Fuel plugin catalog.
• Billing purposes
• Creating alarm rules and using alarms for your purpose, including autoscaling with Heat
The billing process contains the following steps: metering and rating. Ceilometer covers only the
metering part. For that purpose, the project collects and stores information about the system in
form of samples to provide data for any metric that can be billed.
Ceilometer includes an alarming service that allows creating alarm rules that will be applied to
the collected data. In addition, any system may use Ceilometer API to retrieve data.
Ceilometer has two sources of data:
• Polling
• Notifications from OpenStack services
Ceilometer collects the following types of data:
Metric samples
Metrics analyze activities in the cloud environment at the moment of sampling. Now, this
information is gathered mostly by polling and may consume significant amounts of I/O
processing resources and a large amount of database storage. Historically, metric samples
were derived from OpenStack notifications as well, therefore, the term non-metric meter
was introduced to describe these metrics. Also, the configuration option
disable_non_metric_meters was added. For example, instance and disk are non-metric
meters because they mean the existence of resources. When you choose the value for
disable_non_metric_meters, you need to keep in mind that if it is True, you will not be able to
retrieve non-metric meters using Ceilometer statistics API. It means that it would be
impossible to know the amount of resources (images, instances) during a time interval. In
Mirantis OpenStack, this configuration option is set to False.
To find out what metrics will be collected, refer to at least three files: meter.yaml,
pipeline.yaml, and ceilometer.conf. In Mirantis OpenStack, custom changes were made to all
these files to prevent performance degradation on one hand, and not to loose important
metrics on the other.
Events
An event is a configurable Ceilometer structure. It is based on notifications triggered by
services when various events take place in the OpenStack system. For example, "instance X
was created" and "volume Z was deleted". Though the system sends these notifications
continuously, in the default configuration, monitoring of events uses less resources of the
cloud environment than monitoring of meters. Polling has nothing to do with events in
Liberty. The main file where events are configured is event_definition.yaml.
Metrics and events can be configured for handling certain meters and notifications depending
on the information you are interested in.
You can configure Ceilometer to collect either a small or large amount of metering data. When
collecting a large amount of data, Ceilometer processes high volume of database writes. For
example, with 100 resources (virtual machine instances) and polling interval set to 1 minute,
Ceilometer collects around 150000 samples per hour.
Seealso
• Settings tab in the Create a new OpenStack environment section of the Fuel User
Guide
• Related projects in the Configure your environment section of the Fuel User Guide
Important
Mirantis OpenStack supports all default metrics and does not support custom transformers
which require cache. Only the unit_conversion and arithmetic transformers are supported
as custom ones. Do not use the arithmetic transformer with an expression that contains
more than one metric.
Using the Redis plugin, you still may configure transformers that require cache, but note
that this approach is not performant and reliable enough and may lead to samples loss.
Seealso
• Transformers
• The MongoDB partition requires at least 10240 MB of free space to be allocated for internal
use in replica mode.
• The resources consumed by metrics sampling are determined by:
Seealso
• Improve the efficiency of MongoDB resources usage by deleting unused indexes, especially
from the meter collection.
• Improve the performance of Ceilometer statistic requests, which is used in the auto-scaling
feature, by removing unused fields from the statistic index. By default, Ceilometer creates a
compound index with fields that can be used as filters in a statistic request. The fields
include:
• Mandatory counter_name, set as an index prefix field, and timestamp, which is always
used with boundary interval limit.
• Optional resource_id, user_id, and project_id are included in default_statistic_idx.
If some parameters are not used in a statistic request, you can remove such fields from the
statistic index.
Seealso
db.meter.drop(‘default_statistic_idx’)
The resource_id, user_id, and project_id parameters are optional and should be added only
if used in statistic requests.
When creating a new index in large collections, set the background parameter to true to
avoid locking all the write and read operations.
Node requirements
All Sahara processes run on the controller nodes. The entire Hadoop cluster runs in virtual
machines on the compute nodes.
For successful Hadoop installation, you must deploy an OpenStack environment with at least
one controller node for the Sahara control processes and at least one compute node to run
virtual machines for the Hadoop cluster.
A typical Hadoop installation includes:
• 1 virtual machine for management and monitoring processes — Apache Ambari and
Cloudera Manager.
• 1 virtual machine that acts as the Hadoop master node to run ResourceManager and
NameNode.
• Virtual machines serving as the Hadoop cluster nodes, each of which runs NodeManager
and DataNode.
You must have exactly one instance of each management and master processes running in the
environment. Configure other components as required by your environment.
For example, you can run the NodeManager and DataNode in the same virtual machine that runs
ResourceManager and NameNode. You can also run DataNode and NodeManager in separate
virtual machines.
Sahara communicates with object storage through Swift API. You can use Swift or Ceph with
RadosGW as an object storage back end.
Note
If you have configured the Swift public URL with SSL, Sahara will only work with the
prepared Sahara images, regardless of Swift usage. You can download the prepared
images from Rackspace CDN.
Hardware requirements
Minimum hardware requirements for the OpenStack Hadoop cluster to run health check tests:
• Controller nodes:
• CPU:
RAM: 26 GB
• Compute nodes:
• RAM: 6 GB
• CPU: 2
Limitations
An OpenStack Hadoop cluster has the following limitations:
System prerequisites
Before deploying Sahara, verify that your environment meets system prerequisites.
Plugin Capabilities
The following table provides a plugin capability matrix:
Floating IP addresses
Fuel configures Sahara to use floating IP addresses to manage virtual machines. Therefore, you
must provide a Floating IP pool in each node group template you define.
Sahara assigns a floating IP address to each virtual machine, therefore, ensure that your Fuel
configuration provides a pool of IP addresses to the cloud.
If you have a limited number of floating IP addresses or special security policies, you may not be
able to provide access to all instances. In this case, you can use the instances that have access
as proxy gateways. To enable this functionality, set the is_proxy_gateway parameter to true for
the node group you want to use as proxy. Sahara will communicate with all other cluster
instances through the instances of this node group.
Note
Set the Floating IP pool only to a proxy node group.
Note
Ambari and Cloudera Manager node groups must have a floating IP address.
Security groups
Sahara can create and configure security groups separately for each cluster depending on a
provisioning plugin and the Hadoop version.
To enable security groups, set the auto_security_group parameter to True in all node group
templates that you plan to use.
Virtual machine flavor requirements
A minimum of 4 GB of RAM is recommended for master virtual machines. Clouder and Hadopp
master virtual machines require at least m1.large flavor.
For reasonable performance for workloads consider virtual machines with 8+ vCPU and 16+ GB
of RAM.
Hardware-assisted virtualization
You must enable hardware-assisted virtualization for the hypervisor you use for OpenStack.
Failure to enable this parameter may lead to frequent random errors during the deployment and
operation.
While most modern x86 CPUs support hardware-assisted virtualization, its support still might be
absent on compute nodes if they are themselves running as virtual machines. In that case
hypervisor running compute nodes must support passing through hardware-assisted
virtualization to the nested virtual machines and have it enabled.
Communication between virtual machines
Ensure that communication between virtual machines is not blocked.
Default templates
Sahara bundles default templates that define simple clusters for the supported plugins. Since
the templates are already provided in the Sahara database, you do not need to create
additional templates. Instead, use the default templates.
Supported default Sahara templates for plugins
You can use one of the following supported default Sahara templates with the corresponding
plugins.
Category Description
Template name vanilla-2
Template description The cluster template includes 1 master node and 3 worker nodes.
Number of node groups 2
Node group 1: Includes the management Hadoop components: NameNode,
vanilla-2-master HistoryServer, and ResourceManager. Also includes the Oozie
workflow scheduler.
Node group 2: Includes the components required for data storage and
vanilla-2-worker processing: NodeManager and DataNode.
Category Description
Template name cdh-5
Template description The cluster template includes 1 master node, 1 manager node,
and 3 worker nodes.
Number of node groups 3
Node group 1: Includes the management Hadoop components: NameNode,
cdh-5-master HistoryServer, and ResourceManager. Also includes the Oozie
workflow scheduler.
Node group 2: Includes the component that provides UI to manage Hadoop
cdh-5-manager cluster: Cloudera Management.
Node group 3: Includes the components required for data storage and
cdh-5-worker processing: NodeManager and DataNode.
Category Description
Template name hdp-2-х
Template description The cluster template includes 1 master node and 4 worker nodes.
Number of node groups 2
Node group 1: Includes the management Hadoop components: Ambari,
hdp-2-х-master NameNode, MapReduce HistoryServer, ResourceManager,
YARN Timeline Server, ZooKeeper. Also includes the Oozie
workflow scheduler.
Node group 2: Includes the components required for data storage and
hdp-2-х-worker processing: NodeManager and DataNode.
Seealso
• Sahara documentation
Seealso
Overview
You can deploy your OpenStack environment using VMware vSphere as a virtualization platform.
Deploying an OpenStack environment on top of VMware vSphere, you can get access to the
unified OpenStack API and take advantage of such OpenStack services as the Data Processing
service (BigData), Application Catalog service, and others.
Since VMware vSphere provides its own network capabilities, some OpenStack networking
options are not supported. Your choice of network falls to either configuring a VMware
Distributed vSwitch (DVS) or installing an NSXV Fuel plugin.
The VMware vSphere integrated environments relies on the VMware vSphere advanced features
that include the following:
Seealso
Seealso
• For the information on how to specify the availability zone in the Fuel web UI, see the
VMware integration: Configuring a vCenter environment section of the User Guide.
Prerequisites
Before you deploy an environment integrated with VMware vSphere using Fuel, verify that the
vSphere installation is up and running.
To configure VMware vSphere components, complete the steps described in the VMware
vSphere prerequisites section in the Fuel Installation Guide.
Seealso
Known limitations
This section describes known limitations and workarounds for environments that use VMware
vSphere as a virtualization platform.
The limitations include:
• Fuel has been tested with VMware vCenter 5.5 and 6.0 only.
• The only supported image format is Virtual Machine Disk (VMDK).
• Generally, volumes that are created by the Block Storage service appear as SCSI disks. To
be able to read and write to these disks, verify that the operating system of an instance
supports SCSI disks. For example, a CirrOS image shipped with Fuel supports only IDE disks.
Therefore, even if a volume is attached to an instance, CirrOS cannot use it.
• The Ceph back end is not supported for the Image service, Block Storage service, and
RadosGW object storage.
• Red Hat Enterprise Linux compute nodes are not supported.
If you plan to add RHEL compute nodes to your OpenStack environment, you cannot use
VMware vCenter as a hypervisor.
Seealso
• The Preparing Murano images in VMware vCenter section in the Fuel User Guide
Note
Mirantis recommends that you install all Fuel plugins before you deploy an OpenStack
environment. Although, you can install some of the Fuel plugins after you deploy an
OpenStack environment, it may require manual configuration. For more information, see
plugin documentation.
Moreover, Fuel Plugins SDK enables you to develop any plugin that you need to meet your
requirements.
Seealso
Seealso
Example conventions
For the purpose of example, we assume that your environment has the following prerequisites:
Environment prerequisites
Calculate CPU
This section uses prerequisites listed in Example conventions.
When calculating CPU for compute nodes, you need to know the number of virtual machines you
plan to run on each compute node.
This calculation presumes the following:
• No CPU oversubscription
• Use of hyper-threading
• CPU supports the technologies required for your deployment.
To calculate CPU:
1. Calculate the number of CPU cores per virtual machine using the following formula:
1.3 is the hyper-threading coefficient. If you do not use hyper-threading, use 2 instead.
Example:
Therefore, you must assign at least 5 CPU cores per virtual machine.
2. Calculate the total number of CPU cores:
Example:
(100 x 2)/2.4 = 84
Therefore, the total number of CPU cores for 100 virtual machines is 84.
3. Calculate the required number of sockets:
For example, if you use Intel® Xeon® Processor E5-2650-70 with 8 CPU cores.
Example:
84/8 = 10.5
Round the result to the next whole number. Therefore, you need 11 sockets.
Example:
12/2 = 6
Example:
100/6 = 16.6
Round this result to the whole number. Therefore, you can deploy 17 virtual machines per
server.
Using this calculation, you can add additional servers accounting for 17 virtual machines per
server.
Calculate memory
This section uses prerequisites listed in Example conventions.
Using the example from the Calculate CPU section, calculate the amount of RAM a compute
node will require to support 17 virtual machines.
When calculating RAM for a compute node, consider the memory a compute node itself requires
to accommodate core operating system operations. Allocate at least 16 GB RAM or more for the
core OS operations.
To calculate memory:
1. Use the following formula to calculate the total amount of RAM per compute node:
Example:
12 x 17 = 204
Therefore, you need at least 204 GB RAM to accommodate the virtual machine workloads.
2. Add the RAM required to accommodate the core operating system operations:
total amount of RAM per compute node + RAM for core OS operations
Example:
204 + 16 = 220
Calculate storage
This section uses prerequisites listed in Example conventions.
When planning the number of disks and capacity required per server, you must consider storage
for the following types of data:
• Ephemeral storage
• Persistent object storage
• Persistent block storage
When you select hardware for your compute nodes, understand the types of workloads you plan
to process on them, as well as the impact of these workloads on storage. If you do not expect
storage impact to be significant, then you may consider using unified storage. For example, a
single 3 TB drive provides more than enough storage for seventeen virtual machines with 150
GB disk space. If speed is not important for your deployment, you might even consider installing
two or three 3 TB drives and configure a RAID-1 or RAID-5 for redundancy. However, if speed is
critical, you will likely want to have a single hardware drive for each VM. In this case, you may
want to use a 3U form factor server with 24 drives. The backplane of the server must support
the drive configuration that you plan to use.
You must also allocate disk space for the compute node operating system.
Ephemeral storage
Use the following formula to calculate IOPS for the ephemeral storage based on the packing
density:
However, the actual storage performance depends on the drive technology that you use. For
example:
• If you use two mirrored 3.5" HDDs with 100 IOPS, then:
• If you use four 600 GB HDDs with 200 IOPS in RAID-10, then:
• If you use eight 300 GB SSDs with 40K IOPS in RAID-10, then:
Although, SSDs provide the best performance, the difference in cost between SSDs and the less
costly platter-based solutions is significant. The acceptable cost burden is determined by the
balance between your budget and your performance and redundancy needs. Also, the rules for
redundancy in a cloud environment are different than in a traditional server installation,
because entire servers provide redundancy as opposed to a single server instance being
redundant. If you decide to use SSDs, you can increase performance even better by leveraging
from the carefully planned and assigned read-optimized, write-optimized, or mixed-use SSDs.
In other words, the weight for redundant components shifts from individual OS installation to
server redundancy. Therefore, it is far more critical to have redundant power supplies and
hot-swappable CPUs and RAM than to have redundant compute node storage. For example, you
have 18 drives installed on a server with 17 drives being directly allocated to each virtual
machine. If one of the drives fails, then you can simply replace the drive and push a new node
copy. The remaining virtual machines will process additional load that is present due to the
temporary loss of one node.
Mirantis recommends that you use persistent block storage rather than ephemeral storage for
virtual machines drives for most of the OpenStack environments. However, using local
ephemeral storage may be beneficial for compute nodes that run performance-critical
applications, such as databases.
For example, for a 50 TB remote storage you may want to implement one of the following
layouts:
Note
You can use Ceph with the replication factor of two for testing deployments.
You must also accommodate the requirement for handoff locations. A handoff location is a
partition or dedicated node on which Swift temporary places data in case of an error. This
ensures three copies of the data are saved. Depending on the size of your deployment and the
availability of storage resources, add 1 or 2 to the replication factor for handoff locations.
Additionally, plan to scale out your object storage once it reaches 75% of capacity in order to
avoid running out of space.
To calculate object storage:
Example:
50 x 4 = 200 TB
Seealso
Example:
17 x 150 GB = 2.55 TB
Therefore, you need a total of 2.55 TB of disk space on each compute node to
accommodate the requirements of 17 virtual machines with 150 GB disk drives.
2. Add storage required to accommodate the compute node operating system storage
requirements.
For example, if speed is critical in your deployment, each compute node requires 18 disk
drives, such as 200 GB SSD drives.
To calculate ephemeral storage in a production environment:
Example:
100 x 150 = 15 TB
Therefore, for 100 VMs with a requirement of 150 GB of ephemeral storage, you need 15 TB
of storage in Ceph cluster or in network storage.
To address ephemeral storage requirements, you can configure multiple SSD pools with
disk drives with appropriate capacity. For example, you can use 400 or 800 GB mixed-use
SSDs.
If you use Ceph RBD as a back end for ephemeral storage, you may want to use SSDs for
Ceph Object Storage Daemon (OSD) journal for better performance. Mirantis recommends
that you use one small write-optimized SSD per five OSDs.
Seealso
However, in many production environments you may want to use a Ceph cluster or network
storage for ephemeral volumes. You can also use any existing storage technology that is
available in your environment.
To calculate ephemeral storage in a testing environment:
Example:
17 x 150 GB = 2.55 TB
Therefore, you need a total of 2.55 TB of disk space on each compute node to
accommodate the requirements of 17 virtual machines with 150 GB disk drives.
2. Add storage required to accommodate the compute node operating system storage
requirements.
For example, if speed is critical in your deployment, each compute node requires 18 disk
drives, such as 200 GB SSD drives.
To calculate ephemeral storage in a production environment:
Example:
100 x 150 = 15 TB
Therefore, for 100 VMs with a requirement of 150 GB of ephemeral storage, you need 15 TB
of storage in Ceph cluster or in network storage.
To address ephemeral storage requirements, you can configure multiple SSD pools with
disk drives with appropriate capacity. For example, you can use 400 or 800 GB mixed-use
SSDs.
If you use Ceph RBD as a back end for ephemeral storage, you may want to use SSDs for
Ceph Object Storage Daemon (OSD) journal for better performance. Mirantis recommends
that you use one small write-optimized SSD per five OSDs.
Seealso
Calculate network
This section uses prerequisites listed in Example conventions.
Information provided in this section is only relevant if you use Neutron without any
software-defined network (SDN) solutions. Network calculation varies for each SDN.
Calculate network
By default, Fuel creates the following networks: Public, Storage, PXE (Admin), Management, and
Private. However, your environment may require additional networks, such as multiple tenant
private networks and so on. For many of the additional networks you must plan in advance and
use VLANs.
To calculate network:
1. Calculate the speed per virtual machine that the network card that you selected provides:
Example:
Therefore, one 10 Gb Ethernet network card provides 580 Mbit/s per virtual machine.
2. Adjust the number of network cards to the performance required for your deployment.
For example, to accommodate the requirement of 100 Mbit/s per virtual machine, you need
two 10 Gb Ethernet network cards. The two network cards also address the requirement of
a highly-available network.
For the environment described in this section, you can use the following hardware configuration:
• 2 network switches per compute node, each with at least 12 ports for data: 2 x 10 Gb
network interfaces per compute node x 6 compute nodes
• 1 x 1 Gb switch for IPMI (1 port per server x 6 servers)
• (optional) 2 Cluster Management switches
Example conventions
• 10 compute nodes
• 5 Ceph OSD nodes
• 3 MongoDB nodes
Number of virtual routers for all the tenants. The virtual routers 10
must be connected to the external network.
Number of virtual machines that require direct access to the 100
external network
Number of extra IP addresses. Typically, this value equals 3 and 3
includes the following:
Example:
[(3 + 1) + 3] = 7
Example:
Example:
(3 + 3) + 10 = 16
(number of controller nodes + number of other nodes + number of extra IP addresses) + number o
Example:
(3 + 18 + 3) + 10 = 34
Example conventions
Example:
[(3 + 1 + 18) + 3] = 25
Example conventions
By default, Fuel creates the following networks: Public, Storage, PXE (Admin), Management, and
Private. However, your environment may require additional networks, such as multiple tenant
private networks and so on. For many of the additional networks you must plan in advance and
use VLANs.
To calculate network:
1. Calculate the speed per virtual machine that the network card that you selected provides:
Example:
Therefore, one 10 Gb Ethernet network card provides 580 Mbit/s per virtual machine.
2. Adjust the number of network cards to the performance required for your deployment.
For example, to accommodate the requirement of 100 Mbit/s per virtual machine, you need
two 10 Gb Ethernet network cards. The two network cards also address the requirement of
a highly-available network.
For the environment described in this section, you can use the following hardware configuration:
• 2 network switches per compute node, each with at least 12 ports for data: 2 x 10 Gb
network interfaces per compute node x 6 compute nodes
• 1 x 1 Gb switch for IPMI (1 port per server x 6 servers)
• (optional) 2 Cluster Management switches