Mirantis Openstack Planning Guide
Mirantis Openstack Planning Guide
Mirantis Openstack Planning Guide
version 8.0
Mirantis OpenStack v8.0
Planning Guide
Contents
Preface 1
Intended Audience 1
Documentation History 1
Introduction 2
OpenStack environment architecture 2
Introduction to Fuel 3
Overview of the planning process 3
Fuel system requirements 5
Network requirements 5
Public and floating IP address requirements 5
Switching requirements 6
Routing requirements 6
Fuel Master node hardware requirements 7
Fuel Slave nodes hardware recommendations 7
Fuel reference architecture overview 9
Nodes and roles 9
Highly-available environment architecture 10
Node configuration 11
Highly-available MySQL database 14
Server load balancing using HAProxy 14
Cluster resource management using Pacemaker and Corosync 15
Plan the network 17
Logical networks 17
Networking Templates 18
Specifying IP address ranges for logical networks 19
Multiple cluster networks 19
Network topologies 20
Additional networking functionality 22
Known limitations 23
Plan the storage 25
Storage components overview 25
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:
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
• Public and floating IP address requirements
• Switching requirements
• Routing requirements
• Fuel Master node hardware requirements
• Fuel Slave nodes hardware recommendations
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.
IP range Description
Public IP range Required:
• If you use Neutron DVR, it requires one additional IP address for each
Compute node in case you plan to use Floating IPs in the deployment.
• If you deployed Zabbix, 1 IP address per Zabbix node.
Seealso
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.
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:
• Quad-core CPU
• 4 GB RAM
• 10 Gigabit network port
• 128 GB SAS Disk
• IPMI access through an independent management network
For a testing environment:
• Dual-core CPU
• 2 GB RAM
• 1 Gigabit network port
• 50 GB disk
• Physical console access
• 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
In a production environment, Mirantis recommends that you separate storage nodes from controller nodes. This
helps avoid resource contention, isolates failure domains, and allows to optimize hardware configurations for
specific workloads.
To achieve this, you need a minimum of five nodes when using Swift and Cinder storage back ends, or seven
nodes for a fully redundant Ceph storage cluster:
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 HA using mirrored queues and is deployed with custom resource agent
scripts for Pacemaker.
• 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.
• The number of allowed connections is calculated based on RAM and MySQL buffers with the upper bound
to 8192 and the lower bound to 2048 connections.
• 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.
Fuel configures HAProxy frontend for MySQL/Galera to use only one active node, while the other nodes in the
cluster remain passive.
See HAProxy documentation.
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
• Specifying IP address ranges for logical networks
• Multiple cluster networks
• Network topologies
• Additional networking functionality
• Known limitations
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 сompute 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 by the following link network templates examples.
• 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.
• Each default node group uses the same default Admin network. Other node groups, which are created by
user through API, have their own Admin networks, which are not shared between environments.
• The default Admin network is shared between all environments. This network cannot be deleted. One Fuel
installation always has exactly one default Admin network.
• The values for the default Fuel Admin (PXE) network are set using Fuel Menu. Default values for other
networks are taken from release metadata.
• OpenStack environments deployed with Neutron support multiple node groups.
Nailgun manages multiple cluster networks as follows:
• 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 neutron networking component of OpenStack.
Note
Since the upstream development efforts of nova-network have been gradually reduced and the 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).
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)
eth2 N/A Untagged port for Untagged port for
Storage network Public/Floating network
eth3 N/A N/A Untagged port for Storage
network
Although Neutron with VLAN is the default option in the deployment wizard, some environments require other
network topologies. Therefore, you must select the option that conforms with your configuration. For example, if
you want to use a software-defined network (SDN) in your OpenStack environment, you must use Neutron with
VXLAN tunneling segmentation.
Additionally, if you use VMware vCenter as a hypervisor, you must use the ML2 driver Fuel plugin.
Seealso
Additionaly, you can leverage Network Function Virtualization (NFV) in your OpenStack environment by enabling
the following features:
Seealso
• Fuel Plugins
• Mirantis OpenStack NFVI Deployment Guide
Known limitations
• Fuel automatically configures the admin_floating_net and admin_internal_net networks for
projects, as well as corresponding subnetworks. Use the neutron subnet-show command to view subnets.
For example:
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 backend 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 VM 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
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
https://www.mirantis.com/products/openstack-drivers-and-plugins/fuel-plugins/.
• 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
• 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:
Example:
In one test sampling, the same metrics for the same fairly small number of resources in the same
environment resulted in the following:
• Node requirements
• Hardware requirements
• System prerequisites
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
System prerequisites
Before deploying Sahara, verify that your environment meets system prerequisites.
Plugin Capabilities
The following table provides a plugin capability matrix:
Feature Vanilla plugin HDP plugin Cloudera plugin Spark plugin MapR plugin
Neutron network x x x x x
Cluster Scaling x x x x N/A
Swift Integration x x x x N/A
Cinder Support x x x x x
Data Locality x x x x N/A
High Availability N/A x x N/A N/A
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
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 cluster:
cdh-5-manager Cloudera Management.
Node group 3: Includes the components required for data storage and processing:
cdh-5-worker 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, NameNode,
hdp-2-х-master MapReduce HistoryServer, ResourceManager,
YARN Timeline Server, ZooKeeper. Also includes the Oozie workflow
scheduler.
Node group 2: Includes the components required for data storage and processing:
hdp-2-х-worker NodeManager and DataNode.
Seealso
• Sahara documentation
Seealso
• Overview
• Prerequisites
• Known limitations
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
• Official vSphere documentation: Installation and Setup
Known limitations
This section describes known limitations and workarounds for environments that use VMware vSphere as a
virtualization platform.
The limitations include:
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
• Calculate CPU
• Calculate memory
• Calculate storage
• Calculate storage performance
• Calculate object storage
• Calculate network
• Calculate floating and public IP addresses
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.
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.
4. Round the number of sockets up to the next even number.
For example, if the number of sockets is 11, then use 12.
5. Calculate the number of servers required for your deployment:
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.
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
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.
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
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.
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 must be 10
connected to the external network.
Number of virtual machines that require direct access to the external network 100
Number of extra IP addresses. Typically, this value equals 3 and includes the 3
following:
Example:
[(3 + 1) + 3] = 7
Example:
3. If you use Distributed Virtual Routing (DVR) and plan to use floating IP addresses in the OpenStack
environment deployment, use the following formulas:
Example:
(3 + 3) + 10 = 16
Example:
(3 + 18 + 3) + 10 = 34
Example conventions
[(number of controller nodes + number of Zabbix nodes + number of other nodes) + number
Example:
[(3 + 1 + 18) + 3] = 25
Example conventions