Merge "Add install-guide for swift"
This commit is contained in:
commit
a0827114ef
300
install-guide/source/conf.py
Normal file
300
install-guide/source/conf.py
Normal file
@ -0,0 +1,300 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# This file is execfile()d with the current directory set to its
|
||||
# containing dir.
|
||||
#
|
||||
# Note that not all possible configuration values are present in this
|
||||
# autogenerated file.
|
||||
#
|
||||
# All configuration values have a default; values that are commented out
|
||||
# serve to show the default.
|
||||
|
||||
import os
|
||||
# import sys
|
||||
|
||||
|
||||
import openstackdocstheme
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
# sys.path.insert(0, os.path.abspath('.'))
|
||||
|
||||
# -- General configuration ------------------------------------------------
|
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here.
|
||||
# needs_sphinx = '1.0'
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be
|
||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||
# ones.
|
||||
# TODO(ajaeger): enable PDF building, for example add 'rst2pdf.pdfbuilder'
|
||||
# extensions =
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
# templates_path = ['_templates']
|
||||
|
||||
# The suffix of source filenames.
|
||||
source_suffix = '.rst'
|
||||
|
||||
# The encoding of source files.
|
||||
# source_encoding = 'utf-8-sig'
|
||||
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'Installation Guide for Object Storage Service'
|
||||
bug_tag = u'install-guide'
|
||||
copyright = u'2016, OpenStack contributors'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '0.1'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '0.1'
|
||||
|
||||
# A few variables have to be set for the log-a-bug feature.
|
||||
# giturl: The location of conf.py on Git. Must be set manually.
|
||||
# gitsha: The SHA checksum of the bug description. Automatically extracted from git log.
|
||||
# bug_tag: Tag for categorizing the bug. Must be set manually.
|
||||
# These variables are passed to the logabug code via html_context.
|
||||
giturl = u'http://git.openstack.org/cgit/openstack/swift/tree/install-guide/source'
|
||||
git_cmd = "/usr/bin/git log | head -n1 | cut -f2 -d' '"
|
||||
gitsha = os.popen(git_cmd).read().strip('\n')
|
||||
html_context = {"gitsha": gitsha, "bug_tag": bug_tag,
|
||||
"giturl": giturl,
|
||||
"bug_project": "swift"}
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
# language = None
|
||||
|
||||
# There are two options for replacing |today|: either, you set today to some
|
||||
# non-false value, then it is used:
|
||||
# today = ''
|
||||
# Else, today_fmt is used as the format for a strftime call.
|
||||
# today_fmt = '%B %d, %Y'
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
exclude_patterns = []
|
||||
|
||||
# The reST default role (used for this markup: `text`) to use for all
|
||||
# documents.
|
||||
# default_role = None
|
||||
|
||||
# If true, '()' will be appended to :func: etc. cross-reference text.
|
||||
# add_function_parentheses = True
|
||||
|
||||
# If true, the current module name will be prepended to all description
|
||||
# unit titles (such as .. function::).
|
||||
# add_module_names = True
|
||||
|
||||
# If true, sectionauthor and moduleauthor directives will be shown in the
|
||||
# output. They are ignored by default.
|
||||
# show_authors = False
|
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use.
|
||||
pygments_style = 'sphinx'
|
||||
|
||||
# A list of ignored prefixes for module index sorting.
|
||||
# modindex_common_prefix = []
|
||||
|
||||
# If true, keep warnings as "system message" paragraphs in the built documents.
|
||||
# keep_warnings = False
|
||||
|
||||
|
||||
# -- Options for HTML output ----------------------------------------------
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
html_theme = 'openstackdocs'
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
# documentation.
|
||||
# html_theme_options = {}
|
||||
|
||||
# Add any paths that contain custom themes here, relative to this directory.
|
||||
html_theme_path = [openstackdocstheme.get_html_theme_path()]
|
||||
|
||||
# The name for this set of Sphinx documents. If None, it defaults to
|
||||
# "<project> v<release> documentation".
|
||||
# html_title = None
|
||||
|
||||
# A shorter title for the navigation bar. Default is the same as html_title.
|
||||
# html_short_title = None
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top
|
||||
# of the sidebar.
|
||||
# html_logo = None
|
||||
|
||||
# The name of an image file (within the static path) to use as favicon of the
|
||||
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
||||
# pixels large.
|
||||
# html_favicon = None
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
# html_static_path = []
|
||||
|
||||
# Add any extra paths that contain custom files (such as robots.txt or
|
||||
# .htaccess) here, relative to this directory. These files are copied
|
||||
# directly to the root of the documentation.
|
||||
# html_extra_path = []
|
||||
|
||||
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
|
||||
# using the given strftime format.
|
||||
# So that we can enable "log-a-bug" links from each output HTML page, this
|
||||
# variable must be set to a format that includes year, month, day, hours and
|
||||
# minutes.
|
||||
html_last_updated_fmt = '%Y-%m-%d %H:%M'
|
||||
|
||||
|
||||
# If true, SmartyPants will be used to convert quotes and dashes to
|
||||
# typographically correct entities.
|
||||
# html_use_smartypants = True
|
||||
|
||||
# Custom sidebar templates, maps document names to template names.
|
||||
# html_sidebars = {}
|
||||
|
||||
# Additional templates that should be rendered to pages, maps page names to
|
||||
# template names.
|
||||
# html_additional_pages = {}
|
||||
|
||||
# If false, no module index is generated.
|
||||
# html_domain_indices = True
|
||||
|
||||
# If false, no index is generated.
|
||||
html_use_index = False
|
||||
|
||||
# If true, the index is split into individual pages for each letter.
|
||||
# html_split_index = False
|
||||
|
||||
# If true, links to the reST sources are added to the pages.
|
||||
html_show_sourcelink = False
|
||||
|
||||
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
|
||||
# html_show_sphinx = True
|
||||
|
||||
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
|
||||
# html_show_copyright = True
|
||||
|
||||
# If true, an OpenSearch description file will be output, and all pages will
|
||||
# contain a <link> tag referring to it. The value of this option must be the
|
||||
# base URL from which the finished HTML is served.
|
||||
# html_use_opensearch = ''
|
||||
|
||||
# This is the file name suffix for HTML files (e.g. ".xhtml").
|
||||
# html_file_suffix = None
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'install-guide'
|
||||
|
||||
# If true, publish source files
|
||||
html_copy_source = False
|
||||
|
||||
# -- Options for LaTeX output ---------------------------------------------
|
||||
|
||||
latex_elements = {
|
||||
# The paper size ('letterpaper' or 'a4paper').
|
||||
# 'papersize': 'letterpaper',
|
||||
|
||||
# The font size ('10pt', '11pt' or '12pt').
|
||||
# 'pointsize': '10pt',
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
# 'preamble': '',
|
||||
}
|
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title,
|
||||
# author, documentclass [howto, manual, or own class]).
|
||||
latex_documents = [
|
||||
('index', 'InstallGuide.tex', u'Install Guide',
|
||||
u'OpenStack contributors', 'manual'),
|
||||
]
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
# the title page.
|
||||
# latex_logo = None
|
||||
|
||||
# For "manual" documents, if this is true, then toplevel headings are parts,
|
||||
# not chapters.
|
||||
# latex_use_parts = False
|
||||
|
||||
# If true, show page references after internal links.
|
||||
# latex_show_pagerefs = False
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
# latex_show_urls = False
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
# latex_appendices = []
|
||||
|
||||
# If false, no module index is generated.
|
||||
# latex_domain_indices = True
|
||||
|
||||
|
||||
# -- Options for manual page output ---------------------------------------
|
||||
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
('index', 'installguide', u'Install Guide',
|
||||
[u'OpenStack contributors'], 1)
|
||||
]
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
# man_show_urls = False
|
||||
|
||||
|
||||
# -- Options for Texinfo output -------------------------------------------
|
||||
|
||||
# Grouping the document tree into Texinfo files. List of tuples
|
||||
# (source start file, target name, title, author,
|
||||
# dir menu entry, description, category)
|
||||
texinfo_documents = [
|
||||
('index', 'InstallGuide', u'Install Guide',
|
||||
u'OpenStack contributors', 'InstallGuide',
|
||||
'This guide shows OpenStack end users how to install '
|
||||
'an OpenStack cloud.', 'Miscellaneous'),
|
||||
]
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
# texinfo_appendices = []
|
||||
|
||||
# If false, no module index is generated.
|
||||
# texinfo_domain_indices = True
|
||||
|
||||
# How to display URL addresses: 'footnote', 'no', or 'inline'.
|
||||
# texinfo_show_urls = 'footnote'
|
||||
|
||||
# If true, do not generate a @detailmenu in the "Top" node's menu.
|
||||
# texinfo_no_detailmenu = False
|
||||
|
||||
# -- Options for Internationalization output ------------------------------
|
||||
locale_dirs = ['locale/']
|
||||
|
||||
# -- Options for PDF output --------------------------------------------------
|
||||
|
||||
pdf_documents = [
|
||||
('index', u'InstallGuide', u'Install Guide',
|
||||
u'OpenStack contributors')
|
||||
]
|
116
install-guide/source/controller-common_prerequisites.txt
Normal file
116
install-guide/source/controller-common_prerequisites.txt
Normal file
@ -0,0 +1,116 @@
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
The proxy service relies on an authentication and authorization mechanism such
|
||||
as the Identity service. However, unlike other services, it also offers an
|
||||
internal mechanism that allows it to operate without any other OpenStack
|
||||
services. Before you configure the Object Storage service, you must
|
||||
create service credentials and an API endpoint.
|
||||
|
||||
.. note::
|
||||
|
||||
The Object Storage service does not use an SQL database on the controller
|
||||
node. Instead, it uses distributed SQLite databases on each storage node.
|
||||
|
||||
#. Source the ``admin`` credentials to gain access to admin-only CLI commands:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ . admin-openrc
|
||||
|
||||
#. To create the Identity service credentials, complete these steps:
|
||||
|
||||
* Create the ``swift`` user:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack user create --domain default --password-prompt swift
|
||||
User Password:
|
||||
Repeat User Password:
|
||||
+-----------+----------------------------------+
|
||||
| Field | Value |
|
||||
+-----------+----------------------------------+
|
||||
| domain_id | e0353a670a9e496da891347c589539e9 |
|
||||
| enabled | True |
|
||||
| id | d535e5cbd2b74ac7bfb97db9cced3ed6 |
|
||||
| name | swift |
|
||||
+-----------+----------------------------------+
|
||||
|
||||
* Add the ``admin`` role to the ``swift`` user:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack role add --project service --user swift admin
|
||||
|
||||
.. note::
|
||||
|
||||
This command provides no output.
|
||||
|
||||
* Create the ``swift`` service entity:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack service create --name swift \
|
||||
--description "OpenStack Object Storage" object-store
|
||||
+-------------+----------------------------------+
|
||||
| Field | Value |
|
||||
+-------------+----------------------------------+
|
||||
| description | OpenStack Object Storage |
|
||||
| enabled | True |
|
||||
| id | 75ef509da2c340499d454ae96a2c5c34 |
|
||||
| name | swift |
|
||||
| type | object-store |
|
||||
+-------------+----------------------------------+
|
||||
|
||||
#. Create the Object Storage service API endpoints:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack endpoint create --region RegionOne \
|
||||
object-store public http://controller:8080/v1/AUTH_%\(tenant_id\)s
|
||||
+--------------+----------------------------------------------+
|
||||
| Field | Value |
|
||||
+--------------+----------------------------------------------+
|
||||
| enabled | True |
|
||||
| id | 12bfd36f26694c97813f665707114e0d |
|
||||
| interface | public |
|
||||
| region | RegionOne |
|
||||
| region_id | RegionOne |
|
||||
| service_id | 75ef509da2c340499d454ae96a2c5c34 |
|
||||
| service_name | swift |
|
||||
| service_type | object-store |
|
||||
| url | http://controller:8080/v1/AUTH_%(tenant_id)s |
|
||||
+--------------+----------------------------------------------+
|
||||
|
||||
$ openstack endpoint create --region RegionOne \
|
||||
object-store internal http://controller:8080/v1/AUTH_%\(tenant_id\)s
|
||||
+--------------+----------------------------------------------+
|
||||
| Field | Value |
|
||||
+--------------+----------------------------------------------+
|
||||
| enabled | True |
|
||||
| id | 7a36bee6733a4b5590d74d3080ee6789 |
|
||||
| interface | internal |
|
||||
| region | RegionOne |
|
||||
| region_id | RegionOne |
|
||||
| service_id | 75ef509da2c340499d454ae96a2c5c34 |
|
||||
| service_name | swift |
|
||||
| service_type | object-store |
|
||||
| url | http://controller:8080/v1/AUTH_%(tenant_id)s |
|
||||
+--------------+----------------------------------------------+
|
||||
|
||||
$ openstack endpoint create --region RegionOne \
|
||||
object-store admin http://controller:8080/v1
|
||||
+--------------+----------------------------------+
|
||||
| Field | Value |
|
||||
+--------------+----------------------------------+
|
||||
| enabled | True |
|
||||
| id | ebb72cd6851d4defabc0b9d71cdca69b |
|
||||
| interface | admin |
|
||||
| region | RegionOne |
|
||||
| region_id | RegionOne |
|
||||
| service_id | 75ef509da2c340499d454ae96a2c5c34 |
|
||||
| service_name | swift |
|
||||
| service_type | object-store |
|
||||
| url | http://controller:8080/v1 |
|
||||
+--------------+----------------------------------+
|
||||
|
84
install-guide/source/controller-include.txt
Normal file
84
install-guide/source/controller-include.txt
Normal file
@ -0,0 +1,84 @@
|
||||
Edit the ``/etc/swift/proxy-server.conf`` file and complete the
|
||||
following actions:
|
||||
|
||||
* In the ``[DEFAULT]`` section, configure the bind port, user, and
|
||||
configuration directory:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
[DEFAULT]
|
||||
...
|
||||
bind_port = 8080
|
||||
user = swift
|
||||
swift_dir = /etc/swift
|
||||
|
||||
* In the ``[pipeline:main]`` section, remove the ``tempurl`` and
|
||||
``tempauth`` modules and add the ``authtoken`` and ``keystoneauth``
|
||||
modules:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
[pipeline:main]
|
||||
pipeline = catch_errors gatekeeper healthcheck proxy-logging cache container_sync bulk ratelimit authtoken keystoneauth container-quotas account-quotas slo dlo versioned_writes proxy-logging proxy-server
|
||||
|
||||
.. note::
|
||||
|
||||
Do not change the order of the modules.
|
||||
|
||||
.. note::
|
||||
|
||||
For more information on other modules that enable additional features,
|
||||
see the `Deployment Guide <http://docs.openstack.org/developer/swift/deployment_guide.html>`__.
|
||||
|
||||
* In the ``[app:proxy-server]`` section, enable automatic account creation:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
[app:proxy-server]
|
||||
use = egg:swift#proxy
|
||||
...
|
||||
account_autocreate = True
|
||||
|
||||
* In the ``[filter:keystoneauth]`` section, configure the operator roles:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
[filter:keystoneauth]
|
||||
use = egg:swift#keystoneauth
|
||||
...
|
||||
operator_roles = admin,user
|
||||
|
||||
* In the ``[filter:authtoken]`` section, configure Identity service access:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
[filter:authtoken]
|
||||
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
|
||||
...
|
||||
auth_uri = http://controller:5000
|
||||
auth_url = http://controller:35357
|
||||
memcached_servers = controller:11211
|
||||
auth_type = password
|
||||
project_domain_name = default
|
||||
user_domain_name = default
|
||||
project_name = service
|
||||
username = swift
|
||||
password = SWIFT_PASS
|
||||
delay_auth_decision = True
|
||||
|
||||
Replace ``SWIFT_PASS`` with the password you chose for the ``swift`` user
|
||||
in the Identity service.
|
||||
|
||||
.. note::
|
||||
|
||||
Comment out or remove any other options in the ``[filter:authtoken]``
|
||||
section.
|
||||
|
||||
* In the ``[filter:cache]`` section, configure the ``memcached`` location:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
[filter:cache]
|
||||
use = egg:swift#memcache
|
||||
...
|
||||
memcache_servers = controller:11211
|
50
install-guide/source/controller-install-debian.rst
Normal file
50
install-guide/source/controller-install-debian.rst
Normal file
@ -0,0 +1,50 @@
|
||||
.. _controller-debian:
|
||||
|
||||
Install and configure the controller node for Debian
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This section describes how to install and configure the proxy service that
|
||||
handles requests for the account, container, and object services operating
|
||||
on the storage nodes. For simplicity, this guide installs and configures
|
||||
the proxy service on the controller node. However, you can run the proxy
|
||||
service on any node with network connectivity to the storage nodes.
|
||||
Additionally, you can install and configure the proxy service on multiple
|
||||
nodes to increase performance and redundancy. For more information, see the
|
||||
`Deployment Guide <http://docs.openstack.org/developer/swift/deployment_guide.html>`__.
|
||||
|
||||
This section applies to Debian.
|
||||
|
||||
.. include:: controller-common_prerequisites.txt
|
||||
|
||||
Install and configure components
|
||||
--------------------------------
|
||||
|
||||
.. note::
|
||||
|
||||
Default configuration files vary by distribution. You might need
|
||||
to add these sections and options rather than modifying existing
|
||||
sections and options. Also, an ellipsis (``...``) in the configuration
|
||||
snippets indicates potential default configuration options that you
|
||||
should retain.
|
||||
|
||||
#. Install the packages:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# apt-get install swift swift-proxy python-swiftclient \
|
||||
python-keystoneclient python-keystonemiddleware \
|
||||
memcached
|
||||
|
||||
.. note::
|
||||
|
||||
Complete OpenStack environments already include some of these
|
||||
packages.
|
||||
|
||||
2. Create the ``/etc/swift`` directory.
|
||||
|
||||
3. Obtain the proxy service configuration file from the Object Storage
|
||||
source repository:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# curl -o /etc/swift/proxy-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/proxy-server.conf-sample?h=stable/mitaka
|
45
install-guide/source/controller-install-obs.rst
Normal file
45
install-guide/source/controller-install-obs.rst
Normal file
@ -0,0 +1,45 @@
|
||||
.. _controller-obs:
|
||||
|
||||
Install and configure the controller node for openSUSE and SUSE Linux Enterprise
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This section describes how to install and configure the proxy service that
|
||||
handles requests for the account, container, and object services operating
|
||||
on the storage nodes. For simplicity, this guide installs and configures
|
||||
the proxy service on the controller node. However, you can run the proxy
|
||||
service on any node with network connectivity to the storage nodes.
|
||||
Additionally, you can install and configure the proxy service on multiple
|
||||
nodes to increase performance and redundancy. For more information, see the
|
||||
`Deployment Guide <http://docs.openstack.org/developer/swift/deployment_guide.html>`__.
|
||||
|
||||
This section applies to openSUSE Leap 42.1 and SUSE Linux Enterprise Server
|
||||
12 SP1.
|
||||
|
||||
.. include:: controller-common_prerequisites.txt
|
||||
|
||||
Install and configure components
|
||||
--------------------------------
|
||||
|
||||
.. note::
|
||||
|
||||
Default configuration files vary by distribution. You might need
|
||||
to add these sections and options rather than modifying existing
|
||||
sections and options. Also, an ellipsis (``...``) in the configuration
|
||||
snippets indicates potential default configuration options that you
|
||||
should retain.
|
||||
|
||||
#. Install the packages:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# zypper install openstack-swift-proxy python-swiftclient \
|
||||
python-keystoneclient python-keystonemiddleware \
|
||||
python-xml memcached
|
||||
|
||||
.. note::
|
||||
|
||||
Complete OpenStack environments already include some of these
|
||||
packages.
|
||||
|
||||
2. .. include:: controller-include.txt
|
||||
|
50
install-guide/source/controller-install-rdo.rst
Normal file
50
install-guide/source/controller-install-rdo.rst
Normal file
@ -0,0 +1,50 @@
|
||||
.. _controller-rdo:
|
||||
|
||||
Install and configure the controller node for Red Hat Enterprise Linux and CentOS
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This section describes how to install and configure the proxy service that
|
||||
handles requests for the account, container, and object services operating
|
||||
on the storage nodes. For simplicity, this guide installs and configures
|
||||
the proxy service on the controller node. However, you can run the proxy
|
||||
service on any node with network connectivity to the storage nodes.
|
||||
Additionally, you can install and configure the proxy service on multiple
|
||||
nodes to increase performance and redundancy. For more information, see the
|
||||
`Deployment Guide <http://docs.openstack.org/developer/swift/deployment_guide.html>`__.
|
||||
|
||||
This section applies to Red Hat Enterprise Linux 7 and CentOS 7.
|
||||
|
||||
.. include:: controller-common_prerequisites.txt
|
||||
|
||||
Install and configure components
|
||||
--------------------------------
|
||||
|
||||
.. note::
|
||||
|
||||
Default configuration files vary by distribution. You might need
|
||||
to add these sections and options rather than modifying existing
|
||||
sections and options. Also, an ellipsis (``...``) in the configuration
|
||||
snippets indicates potential default configuration options that you
|
||||
should retain.
|
||||
|
||||
#. Install the packages:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# yum install openstack-swift-proxy python-swiftclient \
|
||||
python-keystoneclient python-keystonemiddleware \
|
||||
memcached
|
||||
|
||||
.. note::
|
||||
|
||||
Complete OpenStack environments already include some of these
|
||||
packages.
|
||||
|
||||
2. Obtain the proxy service configuration file from the Object Storage
|
||||
source repository:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# curl -o /etc/swift/proxy-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/proxy-server.conf-sample?h=stable/mitaka
|
||||
|
||||
3. .. include:: controller-include.txt
|
52
install-guide/source/controller-install-ubuntu.rst
Normal file
52
install-guide/source/controller-install-ubuntu.rst
Normal file
@ -0,0 +1,52 @@
|
||||
.. _controller-ubuntu:
|
||||
|
||||
Install and configure the controller node for Ubuntu
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This section describes how to install and configure the proxy service that
|
||||
handles requests for the account, container, and object services operating
|
||||
on the storage nodes. For simplicity, this guide installs and configures
|
||||
the proxy service on the controller node. However, you can run the proxy
|
||||
service on any node with network connectivity to the storage nodes.
|
||||
Additionally, you can install and configure the proxy service on multiple
|
||||
nodes to increase performance and redundancy. For more information, see the
|
||||
`Deployment Guide <http://docs.openstack.org/developer/swift/deployment_guide.html>`__.
|
||||
|
||||
This section applies to Ubuntu 14.04 (LTS).
|
||||
|
||||
.. include:: controller-common_prerequisites.txt
|
||||
|
||||
Install and configure components
|
||||
--------------------------------
|
||||
|
||||
.. note::
|
||||
|
||||
Default configuration files vary by distribution. You might need
|
||||
to add these sections and options rather than modifying existing
|
||||
sections and options. Also, an ellipsis (``...``) in the configuration
|
||||
snippets indicates potential default configuration options that you
|
||||
should retain.
|
||||
|
||||
#. Install the packages:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# apt-get install swift swift-proxy python-swiftclient \
|
||||
python-keystoneclient python-keystonemiddleware \
|
||||
memcached
|
||||
|
||||
.. note::
|
||||
|
||||
Complete OpenStack environments already include some of these
|
||||
packages.
|
||||
|
||||
2. Create the ``/etc/swift`` directory.
|
||||
|
||||
3. Obtain the proxy service configuration file from the Object Storage
|
||||
source repository:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# curl -o /etc/swift/proxy-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/proxy-server.conf-sample?h=stable/mitaka
|
||||
|
||||
4. .. include:: controller-include.txt
|
18
install-guide/source/controller-install.rst
Normal file
18
install-guide/source/controller-install.rst
Normal file
@ -0,0 +1,18 @@
|
||||
.. _controller:
|
||||
|
||||
Install and configure the controller node
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This section describes how to install and configure the proxy service that
|
||||
handles requests for the account, container, and object services operating
|
||||
on the storage nodes.
|
||||
|
||||
Note that installation and configuration vary by distribution.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
controller-install-obs.rst
|
||||
controller-install-rdo.rst
|
||||
controller-install-ubuntu.rst
|
||||
controller-install-debian.rst
|
80
install-guide/source/finalize-installation-obs.rst
Normal file
80
install-guide/source/finalize-installation-obs.rst
Normal file
@ -0,0 +1,80 @@
|
||||
.. _finalize-obs:
|
||||
|
||||
Finalize installation for openSUSE and SUSE Linux Enterprise
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. note::
|
||||
|
||||
Default configuration files vary by distribution. You might need
|
||||
to add these sections and options rather than modifying existing
|
||||
sections and options. Also, an ellipsis (``...``) in the configuration
|
||||
snippets indicates potential default configuration options that you
|
||||
should retain.
|
||||
|
||||
This section applies to openSUSE Leap 42.1 and SUSE Linux Enterprise Server
|
||||
12 SP1.
|
||||
|
||||
#. Edit the ``/etc/swift/swift.conf`` file and complete the following
|
||||
actions:
|
||||
|
||||
* In the ``[swift-hash]`` section, configure the hash path prefix and
|
||||
suffix for your environment.
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
[swift-hash]
|
||||
...
|
||||
swift_hash_path_suffix = HASH_PATH_SUFFIX
|
||||
swift_hash_path_prefix = HASH_PATH_PREFIX
|
||||
|
||||
Replace HASH_PATH_PREFIX and HASH_PATH_SUFFIX with unique values.
|
||||
|
||||
.. warning::
|
||||
|
||||
Keep these values secret and do not change or lose them.
|
||||
|
||||
* In the ``[storage-policy:0]`` section, configure the default
|
||||
storage policy:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
[storage-policy:0]
|
||||
...
|
||||
name = Policy-0
|
||||
default = yes
|
||||
|
||||
#. Copy the ``swift.conf`` file to the ``/etc/swift`` directory on
|
||||
each storage node and any additional nodes running the proxy service.
|
||||
|
||||
3. On all nodes, ensure proper ownership of the configuration directory:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# chown -R root:swift /etc/swift
|
||||
|
||||
4. On the controller node and any other nodes running the proxy service,
|
||||
start the Object Storage proxy service including its dependencies and
|
||||
configure them to start when the system boots:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# systemctl enable openstack-swift-proxy.service memcached.service
|
||||
# systemctl start openstack-swift-proxy.service memcached.service
|
||||
|
||||
5. On the storage nodes, start the Object Storage services and configure
|
||||
them to start when the system boots:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# systemctl enable openstack-swift-account.service openstack-swift-account-auditor.service \
|
||||
openstack-swift-account-reaper.service openstack-swift-account-replicator.service
|
||||
# systemctl start openstack-swift-account.service openstack-swift-account-auditor.service \
|
||||
openstack-swift-account-reaper.service openstack-swift-account-replicator.service
|
||||
# systemctl enable openstack-swift-container.service openstack-swift-container-auditor.service \
|
||||
openstack-swift-container-replicator.service openstack-swift-container-updater.service
|
||||
# systemctl start openstack-swift-container.service openstack-swift-container-auditor.service \
|
||||
openstack-swift-container-replicator.service openstack-swift-container-updater.service
|
||||
# systemctl enable openstack-swift-object.service openstack-swift-object-auditor.service \
|
||||
openstack-swift-object-replicator.service openstack-swift-object-updater.service
|
||||
# systemctl start openstack-swift-object.service openstack-swift-object-auditor.service \
|
||||
openstack-swift-object-replicator.service openstack-swift-object-updater.service
|
89
install-guide/source/finalize-installation-rdo.rst
Normal file
89
install-guide/source/finalize-installation-rdo.rst
Normal file
@ -0,0 +1,89 @@
|
||||
.. _finalize-rdo:
|
||||
|
||||
Finalize installation for Red Hat Enterprise Linux and CentOS
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. note::
|
||||
|
||||
Default configuration files vary by distribution. You might need
|
||||
to add these sections and options rather than modifying existing
|
||||
sections and options. Also, an ellipsis (``...``) in the configuration
|
||||
snippets indicates potential default configuration options that you
|
||||
should retain.
|
||||
|
||||
This section applies to Red Hat Enterprise Linux 7 and CentOS 7.
|
||||
|
||||
#. Obtain the ``/etc/swift/swift.conf`` file from the Object
|
||||
Storage source repository:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# curl -o /etc/swift/swift.conf \
|
||||
https://git.openstack.org/cgit/openstack/swift/plain/etc/swift.conf-sample?h=stable/mitaka
|
||||
|
||||
#. Edit the ``/etc/swift/swift.conf`` file and complete the following
|
||||
actions:
|
||||
|
||||
* In the ``[swift-hash]`` section, configure the hash path prefix and
|
||||
suffix for your environment.
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
[swift-hash]
|
||||
...
|
||||
swift_hash_path_suffix = HASH_PATH_SUFFIX
|
||||
swift_hash_path_prefix = HASH_PATH_PREFIX
|
||||
|
||||
Replace HASH_PATH_PREFIX and HASH_PATH_SUFFIX with unique values.
|
||||
|
||||
.. warning::
|
||||
|
||||
Keep these values secret and do not change or lose them.
|
||||
|
||||
* In the ``[storage-policy:0]`` section, configure the default
|
||||
storage policy:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
[storage-policy:0]
|
||||
...
|
||||
name = Policy-0
|
||||
default = yes
|
||||
|
||||
#. Copy the ``swift.conf`` file to the ``/etc/swift`` directory on
|
||||
each storage node and any additional nodes running the proxy service.
|
||||
|
||||
4. On all nodes, ensure proper ownership of the configuration directory:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# chown -R root:swift /etc/swift
|
||||
|
||||
5. On the controller node and any other nodes running the proxy service,
|
||||
start the Object Storage proxy service including its dependencies and
|
||||
configure them to start when the system boots:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# systemctl enable openstack-swift-proxy.service memcached.service
|
||||
# systemctl start openstack-swift-proxy.service memcached.service
|
||||
|
||||
6. On the storage nodes, start the Object Storage services and configure
|
||||
them to start when the system boots:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# systemctl enable openstack-swift-account.service openstack-swift-account-auditor.service \
|
||||
openstack-swift-account-reaper.service openstack-swift-account-replicator.service
|
||||
# systemctl start openstack-swift-account.service openstack-swift-account-auditor.service \
|
||||
openstack-swift-account-reaper.service openstack-swift-account-replicator.service
|
||||
# systemctl enable openstack-swift-container.service \
|
||||
openstack-swift-container-auditor.service openstack-swift-container-replicator.service \
|
||||
openstack-swift-container-updater.service
|
||||
# systemctl start openstack-swift-container.service \
|
||||
openstack-swift-container-auditor.service openstack-swift-container-replicator.service \
|
||||
openstack-swift-container-updater.service
|
||||
# systemctl enable openstack-swift-object.service openstack-swift-object-auditor.service \
|
||||
openstack-swift-object-replicator.service openstack-swift-object-updater.service
|
||||
# systemctl start openstack-swift-object.service openstack-swift-object-auditor.service \
|
||||
openstack-swift-object-replicator.service openstack-swift-object-updater.service
|
80
install-guide/source/finalize-installation-ubuntu-debian.rst
Normal file
80
install-guide/source/finalize-installation-ubuntu-debian.rst
Normal file
@ -0,0 +1,80 @@
|
||||
.. _finalize-ubuntu-debian:
|
||||
|
||||
Finalize installation for Ubuntu and Debian
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. note::
|
||||
|
||||
Default configuration files vary by distribution. You might need
|
||||
to add these sections and options rather than modifying existing
|
||||
sections and options. Also, an ellipsis (``...``) in the configuration
|
||||
snippets indicates potential default configuration options that you
|
||||
should retain.
|
||||
|
||||
This section applies to Ubuntu 14.04 (LTS) and Debian.
|
||||
|
||||
#. Obtain the ``/etc/swift/swift.conf`` file from the Object
|
||||
Storage source repository:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# curl -o /etc/swift/swift.conf \
|
||||
https://git.openstack.org/cgit/openstack/swift/plain/etc/swift.conf-sample?h=stable/mitaka
|
||||
|
||||
#. Edit the ``/etc/swift/swift.conf`` file and complete the following
|
||||
actions:
|
||||
|
||||
* In the ``[swift-hash]`` section, configure the hash path prefix and
|
||||
suffix for your environment.
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
[swift-hash]
|
||||
...
|
||||
swift_hash_path_suffix = HASH_PATH_SUFFIX
|
||||
swift_hash_path_prefix = HASH_PATH_PREFIX
|
||||
|
||||
Replace HASH_PATH_PREFIX and HASH_PATH_SUFFIX with unique values.
|
||||
|
||||
.. warning::
|
||||
|
||||
Keep these values secret and do not change or lose them.
|
||||
|
||||
* In the ``[storage-policy:0]`` section, configure the default
|
||||
storage policy:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
[storage-policy:0]
|
||||
...
|
||||
name = Policy-0
|
||||
default = yes
|
||||
|
||||
#. Copy the ``swift.conf`` file to the ``/etc/swift`` directory on
|
||||
each storage node and any additional nodes running the proxy service.
|
||||
|
||||
4. On all nodes, ensure proper ownership of the configuration directory:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# chown -R root:swift /etc/swift
|
||||
|
||||
5. On the controller node and any other nodes running the proxy service,
|
||||
restart the Object Storage proxy service including its dependencies:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# service memcached restart
|
||||
# service swift-proxy restart
|
||||
|
||||
6. On the storage nodes, start the Object Storage services:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# swift-init all start
|
||||
|
||||
.. note::
|
||||
|
||||
The storage node runs many Object Storage services and the
|
||||
:command:`swift-init` command makes them easier to manage.
|
||||
You can ignore errors from services not running on the storage node.
|
13
install-guide/source/finalize-installation.rst
Normal file
13
install-guide/source/finalize-installation.rst
Normal file
@ -0,0 +1,13 @@
|
||||
.. _finalize:
|
||||
|
||||
Finalize installation
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Finalizing installation varies by distribution.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
finalize-installation-obs.rst
|
||||
finalize-installation-rdo.rst
|
||||
finalize-installation-ubuntu-debian.rst
|
51
install-guide/source/get_started.rst
Normal file
51
install-guide/source/get_started.rst
Normal file
@ -0,0 +1,51 @@
|
||||
===============================
|
||||
Object Storage service overview
|
||||
===============================
|
||||
|
||||
The OpenStack Object Storage is a multi-tenant object storage system. It
|
||||
is highly scalable and can manage large amounts of unstructured data at
|
||||
low cost through a RESTful HTTP API.
|
||||
|
||||
It includes the following components:
|
||||
|
||||
Proxy servers (swift-proxy-server)
|
||||
Accepts OpenStack Object Storage API and raw HTTP requests to upload
|
||||
files, modify metadata, and create containers. It also serves file
|
||||
or container listings to web browsers. To improve performance, the
|
||||
proxy server can use an optional cache that is usually deployed with
|
||||
memcache.
|
||||
|
||||
Account servers (swift-account-server)
|
||||
Manages accounts defined with Object Storage.
|
||||
|
||||
Container servers (swift-container-server)
|
||||
Manages the mapping of containers or folders, within Object Storage.
|
||||
|
||||
Object servers (swift-object-server)
|
||||
Manages actual objects, such as files, on the storage nodes.
|
||||
|
||||
Various periodic processes
|
||||
Performs housekeeping tasks on the large data store. The replication
|
||||
services ensure consistency and availability through the cluster.
|
||||
Other periodic processes include auditors, updaters, and reapers.
|
||||
|
||||
WSGI middleware
|
||||
Handles authentication and is usually OpenStack Identity.
|
||||
|
||||
swift client
|
||||
Enables users to submit commands to the REST API through a
|
||||
command-line client authorized as either a admin user, reseller
|
||||
user, or swift user.
|
||||
|
||||
swift-init
|
||||
Script that initializes the building of the ring file, takes daemon
|
||||
names as parameter and offers commands. Documented in
|
||||
http://docs.openstack.org/developer/swift/admin_guide.html#managing-services.
|
||||
|
||||
swift-recon
|
||||
A cli tool used to retrieve various metrics and telemetry information
|
||||
about a cluster that has been collected by the swift-recon middleware.
|
||||
|
||||
swift-ring-builder
|
||||
Storage ring build and rebalance utility. Documented in
|
||||
http://docs.openstack.org/developer/swift/admin_guide.html#managing-the-rings.
|
23
install-guide/source/index.rst
Normal file
23
install-guide/source/index.rst
Normal file
@ -0,0 +1,23 @@
|
||||
======================
|
||||
Object Storage service
|
||||
======================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
get_started.rst
|
||||
controller-install.rst
|
||||
storage-install.rst
|
||||
initial-rings.rst
|
||||
finalize-installation.rst
|
||||
verify.rst
|
||||
next-steps.rst
|
||||
|
||||
The Object Storage services (swift) work together to provide
|
||||
object storage and retrieval through a REST API.
|
||||
|
||||
This chapter assumes a working setup of OpenStack following the
|
||||
`OpenStack Installation Tutorial <http://docs.openstack.org/#install-guides>`_.
|
||||
|
||||
Your environment must at least include the Identity service (keystone)
|
||||
prior to deploying Object Storage.
|
253
install-guide/source/initial-rings.rst
Normal file
253
install-guide/source/initial-rings.rst
Normal file
@ -0,0 +1,253 @@
|
||||
Create and distribute initial rings
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Before starting the Object Storage services, you must create the initial
|
||||
account, container, and object rings. The ring builder creates configuration
|
||||
files that each node uses to determine and deploy the storage architecture.
|
||||
For simplicity, this guide uses one region and two zones with 2^10 (1024)
|
||||
maximum partitions, 3 replicas of each object, and 1 hour minimum time between
|
||||
moving a partition more than once. For Object Storage, a partition indicates a
|
||||
directory on a storage device rather than a conventional partition table.
|
||||
For more information, see the
|
||||
`Deployment Guide <http://docs.openstack.org/developer/swift/deployment_guide.html>`__.
|
||||
|
||||
.. note::
|
||||
Perform these steps on the controller node.
|
||||
|
||||
Create account ring
|
||||
-------------------
|
||||
|
||||
The account server uses the account ring to maintain lists of containers.
|
||||
|
||||
#. Change to the ``/etc/swift`` directory.
|
||||
|
||||
#. Create the base ``account.builder`` file:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# swift-ring-builder account.builder create 10 3 1
|
||||
|
||||
.. note::
|
||||
|
||||
This command provides no output.
|
||||
|
||||
#. Add each storage node to the ring:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# swift-ring-builder account.builder \
|
||||
add --region 1 --zone 1 --ip STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS --port 6002 \
|
||||
--device DEVICE_NAME --weight DEVICE_WEIGHT
|
||||
|
||||
Replace ``STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS`` with the IP address
|
||||
of the management network on the storage node. Replace ``DEVICE_NAME`` with a
|
||||
storage device name on the same storage node. For example, using the first
|
||||
storage node in :ref:`storage` with the ``/dev/sdb`` storage
|
||||
device and weight of 100:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# swift-ring-builder account.builder add \
|
||||
--region 1 --zone 1 --ip 10.0.0.51 --port 6002 --device sdb --weight 100
|
||||
|
||||
Repeat this command for each storage device on each storage node. In the
|
||||
example architecture, use the command in four variations:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# swift-ring-builder account.builder add \
|
||||
--region 1 --zone 1 --ip 10.0.0.51 --port 6002 --device sdb --weight 100
|
||||
Device d0r1z1-10.0.0.51:6002R10.0.0.51:6002/sdb_"" with 100.0 weight got id 0
|
||||
# swift-ring-builder account.builder add \
|
||||
--region 1 --zone 1 --ip 10.0.0.51 --port 6002 --device sdc --weight 100
|
||||
Device d1r1z2-10.0.0.51:6002R10.0.0.51:6002/sdc_"" with 100.0 weight got id 1
|
||||
# swift-ring-builder account.builder add \
|
||||
--region 1 --zone 2 --ip 10.0.0.52 --port 6002 --device sdb --weight 100
|
||||
Device d2r1z3-10.0.0.52:6002R10.0.0.52:6002/sdb_"" with 100.0 weight got id 2
|
||||
# swift-ring-builder account.builder add \
|
||||
--region 1 --zone 2 --ip 10.0.0.52 --port 6002 --device sdc --weight 100
|
||||
Device d3r1z4-10.0.0.52:6002R10.0.0.52:6002/sdc_"" with 100.0 weight got id 3
|
||||
|
||||
#. Verify the ring contents:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# swift-ring-builder account.builder
|
||||
account.builder, build version 4
|
||||
1024 partitions, 3.000000 replicas, 1 regions, 2 zones, 4 devices, 100.00 balance, 0.00 dispersion
|
||||
The minimum number of hours before a partition can be reassigned is 1
|
||||
The overload factor is 0.00% (0.000000)
|
||||
Devices: id region zone ip address port replication ip replication port name weight partitions balance meta
|
||||
0 1 1 10.0.0.51 6002 10.0.0.51 6002 sdb 100.00 0 -100.00
|
||||
1 1 1 10.0.0.51 6002 10.0.0.51 6002 sdc 100.00 0 -100.00
|
||||
2 1 2 10.0.0.52 6002 10.0.0.52 6002 sdb 100.00 0 -100.00
|
||||
3 1 2 10.0.0.52 6002 10.0.0.52 6002 sdc 100.00 0 -100.00
|
||||
|
||||
#. Rebalance the ring:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# swift-ring-builder account.builder rebalance
|
||||
Reassigned 1024 (100.00%) partitions. Balance is now 0.00. Dispersion is now 0.00
|
||||
|
||||
Create container ring
|
||||
---------------------
|
||||
|
||||
The container server uses the container ring to maintain lists of objects.
|
||||
However, it does not track object locations.
|
||||
|
||||
#. Change to the ``/etc/swift`` directory.
|
||||
|
||||
#. Create the base ``container.builder`` file:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# swift-ring-builder container.builder create 10 3 1
|
||||
|
||||
.. note::
|
||||
|
||||
This command provides no output.
|
||||
|
||||
#. Add each storage node to the ring:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# swift-ring-builder container.builder \
|
||||
add --region 1 --zone 1 --ip STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS --port 6001 \
|
||||
--device DEVICE_NAME --weight DEVICE_WEIGHT
|
||||
|
||||
Replace ``STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS`` with the IP address
|
||||
of the management network on the storage node. Replace ``DEVICE_NAME`` with a
|
||||
storage device name on the same storage node. For example, using the first
|
||||
storage node in :ref:`storage` with the ``/dev/sdb``
|
||||
storage device and weight of 100:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# swift-ring-builder container.builder add \
|
||||
--region 1 --zone 1 --ip 10.0.0.51 --port 6001 --device sdb --weight 100
|
||||
|
||||
Repeat this command for each storage device on each storage node. In the
|
||||
example architecture, use the command in four variations:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# swift-ring-builder container.builder add \
|
||||
--region 1 --zone 1 --ip 10.0.0.51 --port 6001 --device sdb --weight 100
|
||||
Device d0r1z1-10.0.0.51:6001R10.0.0.51:6001/sdb_"" with 100.0 weight got id 0
|
||||
# swift-ring-builder container.builder add \
|
||||
--region 1 --zone 1 --ip 10.0.0.51 --port 6001 --device sdc --weight 100
|
||||
Device d1r1z2-10.0.0.51:6001R10.0.0.51:6001/sdc_"" with 100.0 weight got id 1
|
||||
# swift-ring-builder container.builder add \
|
||||
--region 1 --zone 2 --ip 10.0.0.52 --port 6001 --device sdb --weight 100
|
||||
Device d2r1z3-10.0.0.52:6001R10.0.0.52:6001/sdb_"" with 100.0 weight got id 2
|
||||
# swift-ring-builder container.builder add \
|
||||
--region 1 --zone 2 --ip 10.0.0.52 --port 6001 --device sdc --weight 100
|
||||
Device d3r1z4-10.0.0.52:6001R10.0.0.52:6001/sdc_"" with 100.0 weight got id 3
|
||||
|
||||
#. Verify the ring contents:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# swift-ring-builder container.builder
|
||||
container.builder, build version 4
|
||||
1024 partitions, 3.000000 replicas, 1 regions, 2 zones, 4 devices, 100.00 balance, 0.00 dispersion
|
||||
The minimum number of hours before a partition can be reassigned is 1
|
||||
The overload factor is 0.00% (0.000000)
|
||||
Devices: id region zone ip address port replication ip replication port name weight partitions balance meta
|
||||
0 1 1 10.0.0.51 6001 10.0.0.51 6001 sdb 100.00 0 -100.00
|
||||
1 1 1 10.0.0.51 6001 10.0.0.51 6001 sdc 100.00 0 -100.00
|
||||
2 1 2 10.0.0.52 6001 10.0.0.52 6001 sdb 100.00 0 -100.00
|
||||
3 1 2 10.0.0.52 6001 10.0.0.52 6001 sdc 100.00 0 -100.00
|
||||
|
||||
#. Rebalance the ring:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# swift-ring-builder container.builder rebalance
|
||||
Reassigned 1024 (100.00%) partitions. Balance is now 0.00. Dispersion is now 0.00
|
||||
|
||||
Create object ring
|
||||
------------------
|
||||
|
||||
The object server uses the object ring to maintain lists of object locations
|
||||
on local devices.
|
||||
|
||||
#. Change to the ``/etc/swift`` directory.
|
||||
|
||||
#. Create the base ``object.builder`` file:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# swift-ring-builder object.builder create 10 3 1
|
||||
|
||||
.. note::
|
||||
|
||||
This command provides no output.
|
||||
|
||||
#. Add each storage node to the ring:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# swift-ring-builder object.builder \
|
||||
add --region 1 --zone 1 --ip STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS --port 6000 \
|
||||
--device DEVICE_NAME --weight DEVICE_WEIGHT
|
||||
|
||||
Replace ``STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS`` with the IP address
|
||||
of the management network on the storage node. Replace ``DEVICE_NAME`` with
|
||||
a storage device name on the same storage node. For example, using the first
|
||||
storage node in :ref:`storage` with the ``/dev/sdb`` storage
|
||||
device and weight of 100:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# swift-ring-builder object.builder add \
|
||||
--region 1 --zone 1 --ip 10.0.0.51 --port 6000 --device sdb --weight 100
|
||||
|
||||
Repeat this command for each storage device on each storage node. In the
|
||||
example architecture, use the command in four variations:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# swift-ring-builder object.builder add \
|
||||
--region 1 --zone 1 --ip 10.0.0.51 --port 6000 --device sdb --weight 100
|
||||
Device d0r1z1-10.0.0.51:6000R10.0.0.51:6000/sdb_"" with 100.0 weight got id 0
|
||||
# swift-ring-builder object.builder add \
|
||||
--region 1 --zone 1 --ip 10.0.0.51 --port 6000 --device sdc --weight 100
|
||||
Device d1r1z2-10.0.0.51:6000R10.0.0.51:6000/sdc_"" with 100.0 weight got id 1
|
||||
# swift-ring-builder object.builder add \
|
||||
--region 1 --zone 2 --ip 10.0.0.52 --port 6000 --device sdb --weight 100
|
||||
Device d2r1z3-10.0.0.52:6000R10.0.0.52:6000/sdb_"" with 100.0 weight got id 2
|
||||
# swift-ring-builder object.builder add \
|
||||
--region 1 --zone 2 --ip 10.0.0.52 --port 6000 --device sdc --weight 100
|
||||
Device d3r1z4-10.0.0.52:6000R10.0.0.52:6000/sdc_"" with 100.0 weight got id 3
|
||||
|
||||
#. Verify the ring contents:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# swift-ring-builder object.builder
|
||||
object.builder, build version 4
|
||||
1024 partitions, 3.000000 replicas, 1 regions, 2 zones, 4 devices, 100.00 balance, 0.00 dispersion
|
||||
The minimum number of hours before a partition can be reassigned is 1
|
||||
The overload factor is 0.00% (0.000000)
|
||||
Devices: id region zone ip address port replication ip replication port name weight partitions balance meta
|
||||
0 1 1 10.0.0.51 6000 10.0.0.51 6000 sdb 100.00 0 -100.00
|
||||
1 1 1 10.0.0.51 6000 10.0.0.51 6000 sdc 100.00 0 -100.00
|
||||
2 1 2 10.0.0.52 6000 10.0.0.52 6000 sdb 100.00 0 -100.00
|
||||
3 1 2 10.0.0.52 6000 10.0.0.52 6000 sdc 100.00 0 -100.00
|
||||
|
||||
#. Rebalance the ring:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# swift-ring-builder object.builder rebalance
|
||||
Reassigned 1024 (100.00%) partitions. Balance is now 0.00. Dispersion is now 0.00
|
||||
|
||||
Distribute ring configuration files
|
||||
-----------------------------------
|
||||
|
||||
* Copy the ``account.ring.gz``, ``container.ring.gz``, and
|
||||
``object.ring.gz`` files to the ``/etc/swift`` directory
|
||||
on each storage node and any additional nodes running the
|
||||
proxy service.
|
10
install-guide/source/next-steps.rst
Normal file
10
install-guide/source/next-steps.rst
Normal file
@ -0,0 +1,10 @@
|
||||
.. _next-steps:
|
||||
|
||||
==========
|
||||
Next steps
|
||||
==========
|
||||
|
||||
Your OpenStack environment now includes Object Storage.
|
||||
|
||||
To add more services, see the
|
||||
`additional documentation on installing OpenStack <http://docs.openstack.org/#install-guides>`_ .
|
41
install-guide/source/storage-include1.txt
Normal file
41
install-guide/source/storage-include1.txt
Normal file
@ -0,0 +1,41 @@
|
||||
Edit the ``/etc/swift/account-server.conf`` file and complete the
|
||||
following actions:
|
||||
|
||||
* In the ``[DEFAULT]`` section, configure the bind IP address, bind port,
|
||||
user, configuration directory, and mount point directory:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
[DEFAULT]
|
||||
...
|
||||
bind_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
|
||||
bind_port = 6002
|
||||
user = swift
|
||||
swift_dir = /etc/swift
|
||||
devices = /srv/node
|
||||
mount_check = True
|
||||
|
||||
Replace ``MANAGEMENT_INTERFACE_IP_ADDRESS`` with the IP address of the
|
||||
management network on the storage node.
|
||||
|
||||
* In the ``[pipeline:main]`` section, enable the appropriate modules:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
[pipeline:main]
|
||||
pipeline = healthcheck recon account-server
|
||||
|
||||
.. note::
|
||||
|
||||
For more information on other modules that enable additional features,
|
||||
see the `Deployment Guide <http://docs.openstack.org/developer/swift/deployment_guide.html>`__.
|
||||
|
||||
* In the ``[filter:recon]`` section, configure the recon (meters) cache
|
||||
directory:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
[filter:recon]
|
||||
use = egg:swift#recon
|
||||
...
|
||||
recon_cache_path = /var/cache/swift
|
41
install-guide/source/storage-include2.txt
Normal file
41
install-guide/source/storage-include2.txt
Normal file
@ -0,0 +1,41 @@
|
||||
Edit the ``/etc/swift/container-server.conf`` file and complete the
|
||||
following actions:
|
||||
|
||||
* In the ``[DEFAULT]`` section, configure the bind IP address, bind port,
|
||||
user, configuration directory, and mount point directory:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
[DEFAULT]
|
||||
...
|
||||
bind_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
|
||||
bind_port = 6001
|
||||
user = swift
|
||||
swift_dir = /etc/swift
|
||||
devices = /srv/node
|
||||
mount_check = True
|
||||
|
||||
Replace ``MANAGEMENT_INTERFACE_IP_ADDRESS`` with the IP address of the
|
||||
management network on the storage node.
|
||||
|
||||
* In the ``[pipeline:main]`` section, enable the appropriate modules:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
[pipeline:main]
|
||||
pipeline = healthcheck recon container-server
|
||||
|
||||
.. note::
|
||||
|
||||
For more information on other modules that enable additional features,
|
||||
see the `Deployment Guide <http://docs.openstack.org/developer/swift/deployment_guide.html>`__.
|
||||
|
||||
* In the ``[filter:recon]`` section, configure the recon (meters) cache
|
||||
directory:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
[filter:recon]
|
||||
use = egg:swift#recon
|
||||
...
|
||||
recon_cache_path = /var/cache/swift
|
42
install-guide/source/storage-include3.txt
Normal file
42
install-guide/source/storage-include3.txt
Normal file
@ -0,0 +1,42 @@
|
||||
Edit the ``/etc/swift/object-server.conf`` file and complete the
|
||||
following actions:
|
||||
|
||||
* In the ``[DEFAULT]`` section, configure the bind IP address, bind port,
|
||||
user, configuration directory, and mount point directory:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
[DEFAULT]
|
||||
...
|
||||
bind_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
|
||||
bind_port = 6000
|
||||
user = swift
|
||||
swift_dir = /etc/swift
|
||||
devices = /srv/node
|
||||
mount_check = True
|
||||
|
||||
Replace ``MANAGEMENT_INTERFACE_IP_ADDRESS`` with the IP address of the
|
||||
management network on the storage node.
|
||||
|
||||
* In the ``[pipeline:main]`` section, enable the appropriate modules:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
[pipeline:main]
|
||||
pipeline = healthcheck recon object-server
|
||||
|
||||
.. note::
|
||||
|
||||
For more information on other modules that enable additional features,
|
||||
see the `Deployment Guide <http://docs.openstack.org/developer/swift/deployment_guide.html>`__.
|
||||
|
||||
* In the ``[filter:recon]`` section, configure the recon (meters) cache
|
||||
and lock directories:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
[filter:recon]
|
||||
use = egg:swift#recon
|
||||
...
|
||||
recon_cache_path = /var/cache/swift
|
||||
recon_lock_path = /var/lock
|
139
install-guide/source/storage-install-obs.rst
Normal file
139
install-guide/source/storage-install-obs.rst
Normal file
@ -0,0 +1,139 @@
|
||||
.. _storage-obs:
|
||||
|
||||
Install and configure the storage nodes for openSUSE and SUSE Linux Enterprise
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This section describes how to install and configure storage nodes
|
||||
that operate the account, container, and object services. For
|
||||
simplicity, this configuration references two storage nodes, each
|
||||
containing two empty local block storage devices. The instructions
|
||||
use ``/dev/sdb`` and ``/dev/sdc``, but you can substitute different
|
||||
values for your particular nodes.
|
||||
|
||||
Although Object Storage supports any file system with
|
||||
extended attributes (xattr), testing and benchmarking
|
||||
indicate the best performance and reliability on XFS. For
|
||||
more information on horizontally scaling your environment, see the
|
||||
`Deployment Guide <http://docs.openstack.org/developer/swift/deployment_guide.html>`_.
|
||||
|
||||
This section applies to openSUSE Leap 42.1 and SUSE Linux Enterprise Server
|
||||
12 SP1.
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
Before you install and configure the Object Storage service on the
|
||||
storage nodes, you must prepare the storage devices.
|
||||
|
||||
.. note::
|
||||
|
||||
Perform these steps on each storage node.
|
||||
|
||||
#. Install the supporting utility packages:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# zypper install xfsprogs rsync
|
||||
|
||||
#. Format the ``/dev/sdb`` and ``/dev/sdc`` devices as XFS:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# mkfs.xfs /dev/sdb
|
||||
# mkfs.xfs /dev/sdc
|
||||
|
||||
#. Create the mount point directory structure:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# mkdir -p /srv/node/sdb
|
||||
# mkdir -p /srv/node/sdc
|
||||
|
||||
#. Edit the ``/etc/fstab`` file and add the following to it:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
/dev/sdb /srv/node/sdb xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
|
||||
/dev/sdc /srv/node/sdc xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
|
||||
|
||||
#. Mount the devices:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# mount /srv/node/sdb
|
||||
# mount /srv/node/sdc
|
||||
|
||||
#. Create or edit the ``/etc/rsyncd.conf`` file to contain the following:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
uid = swift
|
||||
gid = swift
|
||||
log file = /var/log/rsyncd.log
|
||||
pid file = /var/run/rsyncd.pid
|
||||
address = MANAGEMENT_INTERFACE_IP_ADDRESS
|
||||
|
||||
[account]
|
||||
max connections = 2
|
||||
path = /srv/node/
|
||||
read only = False
|
||||
lock file = /var/lock/account.lock
|
||||
|
||||
[container]
|
||||
max connections = 2
|
||||
path = /srv/node/
|
||||
read only = False
|
||||
lock file = /var/lock/container.lock
|
||||
|
||||
[object]
|
||||
max connections = 2
|
||||
path = /srv/node/
|
||||
read only = False
|
||||
lock file = /var/lock/object.lock
|
||||
|
||||
Replace ``MANAGEMENT_INTERFACE_IP_ADDRESS`` with the IP address of the
|
||||
management network on the storage node.
|
||||
|
||||
.. note::
|
||||
|
||||
The ``rsync`` service requires no authentication, so consider running
|
||||
it on a private network in production environments.
|
||||
|
||||
7. Start the ``rsyncd`` service and configure it to start when the
|
||||
system boots:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# systemctl enable rsyncd.service
|
||||
# systemctl start rsyncd.service
|
||||
|
||||
Install and configure components
|
||||
--------------------------------
|
||||
|
||||
.. note::
|
||||
|
||||
Default configuration files vary by distribution. You might need
|
||||
to add these sections and options rather than modifying existing
|
||||
sections and options. Also, an ellipsis (``...``) in the configuration
|
||||
snippets indicates potential default configuration options that you
|
||||
should retain.
|
||||
|
||||
.. note::
|
||||
|
||||
Perform these steps on each storage node.
|
||||
|
||||
#. Install the packages:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# zypper install openstack-swift-account \
|
||||
openstack-swift-container openstack-swift-object python-xml
|
||||
|
||||
2. .. include:: storage-include1.txt
|
||||
3. .. include:: storage-include2.txt
|
||||
4. .. include:: storage-include3.txt
|
||||
5. Ensure proper ownership of the mount point directory structure:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# chown -R swift:swift /srv/node
|
155
install-guide/source/storage-install-rdo.rst
Normal file
155
install-guide/source/storage-install-rdo.rst
Normal file
@ -0,0 +1,155 @@
|
||||
.. _storage-rdo:
|
||||
|
||||
Install and configure the storage nodes for Red Hat Enterprise Linux and CentOS
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This section describes how to install and configure storage nodes
|
||||
that operate the account, container, and object services. For
|
||||
simplicity, this configuration references two storage nodes, each
|
||||
containing two empty local block storage devices. The instructions
|
||||
use ``/dev/sdb`` and ``/dev/sdc``, but you can substitute different
|
||||
values for your particular nodes.
|
||||
|
||||
Although Object Storage supports any file system with
|
||||
extended attributes (xattr), testing and benchmarking
|
||||
indicate the best performance and reliability on XFS. For
|
||||
more information on horizontally scaling your environment, see the
|
||||
`Deployment Guide <http://docs.openstack.org/developer/swift/deployment_guide.html>`_.
|
||||
|
||||
This section applies to Red Hat Enterprise Linux 7 and CentOS 7.
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
Before you install and configure the Object Storage service on the
|
||||
storage nodes, you must prepare the storage devices.
|
||||
|
||||
.. note::
|
||||
|
||||
Perform these steps on each storage node.
|
||||
|
||||
#. Install the supporting utility packages:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# yum install xfsprogs rsync
|
||||
|
||||
#. Format the ``/dev/sdb`` and ``/dev/sdc`` devices as XFS:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# mkfs.xfs /dev/sdb
|
||||
# mkfs.xfs /dev/sdc
|
||||
|
||||
#. Create the mount point directory structure:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# mkdir -p /srv/node/sdb
|
||||
# mkdir -p /srv/node/sdc
|
||||
|
||||
#. Edit the ``/etc/fstab`` file and add the following to it:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
/dev/sdb /srv/node/sdb xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
|
||||
/dev/sdc /srv/node/sdc xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
|
||||
|
||||
#. Mount the devices:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# mount /srv/node/sdb
|
||||
# mount /srv/node/sdc
|
||||
|
||||
#. Create or edit the ``/etc/rsyncd.conf`` file to contain the following:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
uid = swift
|
||||
gid = swift
|
||||
log file = /var/log/rsyncd.log
|
||||
pid file = /var/run/rsyncd.pid
|
||||
address = MANAGEMENT_INTERFACE_IP_ADDRESS
|
||||
|
||||
[account]
|
||||
max connections = 2
|
||||
path = /srv/node/
|
||||
read only = False
|
||||
lock file = /var/lock/account.lock
|
||||
|
||||
[container]
|
||||
max connections = 2
|
||||
path = /srv/node/
|
||||
read only = False
|
||||
lock file = /var/lock/container.lock
|
||||
|
||||
[object]
|
||||
max connections = 2
|
||||
path = /srv/node/
|
||||
read only = False
|
||||
lock file = /var/lock/object.lock
|
||||
|
||||
Replace ``MANAGEMENT_INTERFACE_IP_ADDRESS`` with the IP address of the
|
||||
management network on the storage node.
|
||||
|
||||
.. note::
|
||||
|
||||
The ``rsync`` service requires no authentication, so consider running
|
||||
it on a private network in production environments.
|
||||
|
||||
7. Start the ``rsyncd`` service and configure it to start when the
|
||||
system boots:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# systemctl enable rsyncd.service
|
||||
# systemctl start rsyncd.service
|
||||
|
||||
Install and configure components
|
||||
--------------------------------
|
||||
|
||||
.. note::
|
||||
|
||||
Default configuration files vary by distribution. You might need
|
||||
to add these sections and options rather than modifying existing
|
||||
sections and options. Also, an ellipsis (``...``) in the configuration
|
||||
snippets indicates potential default configuration options that you
|
||||
should retain.
|
||||
|
||||
.. note::
|
||||
|
||||
Perform these steps on each storage node.
|
||||
|
||||
#. Install the packages:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# yum install openstack-swift-account openstack-swift-container \
|
||||
openstack-swift-object
|
||||
|
||||
2. Obtain the accounting, container, and object service configuration
|
||||
files from the Object Storage source repository:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# curl -o /etc/swift/account-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/account-server.conf-sample?h=stable/mitaka
|
||||
# curl -o /etc/swift/container-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/container-server.conf-sample?h=stable/mitaka
|
||||
# curl -o /etc/swift/object-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/object-server.conf-sample?h=stable/mitaka
|
||||
|
||||
3. .. include:: storage-include1.txt
|
||||
4. .. include:: storage-include2.txt
|
||||
5. .. include:: storage-include3.txt
|
||||
6. Ensure proper ownership of the mount point directory structure:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# chown -R swift:swift /srv/node
|
||||
|
||||
7. Create the ``recon`` directory and ensure proper ownership of it:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# mkdir -p /var/cache/swift
|
||||
# chown -R root:swift /var/cache/swift
|
||||
# chmod -R 775 /var/cache/swift
|
159
install-guide/source/storage-install-ubuntu-debian.rst
Normal file
159
install-guide/source/storage-install-ubuntu-debian.rst
Normal file
@ -0,0 +1,159 @@
|
||||
.. _storage-ubuntu-debian:
|
||||
|
||||
Install and configure the storage nodes for Ubuntu and Debian
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This section describes how to install and configure storage nodes
|
||||
that operate the account, container, and object services. For
|
||||
simplicity, this configuration references two storage nodes, each
|
||||
containing two empty local block storage devices. The instructions
|
||||
use ``/dev/sdb`` and ``/dev/sdc``, but you can substitute different
|
||||
values for your particular nodes.
|
||||
|
||||
Although Object Storage supports any file system with
|
||||
extended attributes (xattr), testing and benchmarking
|
||||
indicate the best performance and reliability on XFS. For
|
||||
more information on horizontally scaling your environment, see the
|
||||
`Deployment Guide <http://docs.openstack.org/developer/swift/deployment_guide.html>`_.
|
||||
|
||||
This section applies to Ubuntu 14.04 (LTS) and Debian.
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
Before you install and configure the Object Storage service on the
|
||||
storage nodes, you must prepare the storage devices.
|
||||
|
||||
.. note::
|
||||
|
||||
Perform these steps on each storage node.
|
||||
|
||||
#. Install the supporting utility packages:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# apt-get install xfsprogs rsync
|
||||
|
||||
#. Format the ``/dev/sdb`` and ``/dev/sdc`` devices as XFS:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# mkfs.xfs /dev/sdb
|
||||
# mkfs.xfs /dev/sdc
|
||||
|
||||
#. Create the mount point directory structure:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# mkdir -p /srv/node/sdb
|
||||
# mkdir -p /srv/node/sdc
|
||||
|
||||
#. Edit the ``/etc/fstab`` file and add the following to it:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
/dev/sdb /srv/node/sdb xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
|
||||
/dev/sdc /srv/node/sdc xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
|
||||
|
||||
#. Mount the devices:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# mount /srv/node/sdb
|
||||
# mount /srv/node/sdc
|
||||
|
||||
#. Create or edit the ``/etc/rsyncd.conf`` file to contain the following:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
uid = swift
|
||||
gid = swift
|
||||
log file = /var/log/rsyncd.log
|
||||
pid file = /var/run/rsyncd.pid
|
||||
address = MANAGEMENT_INTERFACE_IP_ADDRESS
|
||||
|
||||
[account]
|
||||
max connections = 2
|
||||
path = /srv/node/
|
||||
read only = False
|
||||
lock file = /var/lock/account.lock
|
||||
|
||||
[container]
|
||||
max connections = 2
|
||||
path = /srv/node/
|
||||
read only = False
|
||||
lock file = /var/lock/container.lock
|
||||
|
||||
[object]
|
||||
max connections = 2
|
||||
path = /srv/node/
|
||||
read only = False
|
||||
lock file = /var/lock/object.lock
|
||||
|
||||
Replace ``MANAGEMENT_INTERFACE_IP_ADDRESS`` with the IP address of the
|
||||
management network on the storage node.
|
||||
|
||||
.. note::
|
||||
|
||||
The ``rsync`` service requires no authentication, so consider running
|
||||
it on a private network in production environments.
|
||||
|
||||
7. Edit the ``/etc/default/rsync`` file and enable the ``rsync``
|
||||
service:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
RSYNC_ENABLE=true
|
||||
|
||||
8. Start the ``rsync`` service:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# service rsync start
|
||||
|
||||
Install and configure components
|
||||
--------------------------------
|
||||
|
||||
.. note::
|
||||
|
||||
Default configuration files vary by distribution. You might need
|
||||
to add these sections and options rather than modifying existing
|
||||
sections and options. Also, an ellipsis (``...``) in the configuration
|
||||
snippets indicates potential default configuration options that you
|
||||
should retain.
|
||||
|
||||
.. note::
|
||||
|
||||
Perform these steps on each storage node.
|
||||
|
||||
#. Install the packages:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# apt-get install swift swift-account swift-container swift-object
|
||||
|
||||
2. Obtain the accounting, container, and object service configuration
|
||||
files from the Object Storage source repository:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# curl -o /etc/swift/account-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/account-server.conf-sample?h=stable/mitaka
|
||||
# curl -o /etc/swift/container-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/container-server.conf-sample?h=stable/mitaka
|
||||
# curl -o /etc/swift/object-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/object-server.conf-sample?h=stable/mitaka
|
||||
|
||||
3. .. include:: storage-include1.txt
|
||||
4. .. include:: storage-include2.txt
|
||||
5. .. include:: storage-include3.txt
|
||||
6. Ensure proper ownership of the mount point directory structure:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# chown -R swift:swift /srv/node
|
||||
|
||||
7. Create the ``recon`` directory and ensure proper ownership of it:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# mkdir -p /var/cache/swift
|
||||
# chown -R root:swift /var/cache/swift
|
||||
# chmod -R 775 /var/cache/swift
|
16
install-guide/source/storage-install.rst
Normal file
16
install-guide/source/storage-install.rst
Normal file
@ -0,0 +1,16 @@
|
||||
.. _storage:
|
||||
|
||||
Install and configure the storage nodes
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This section describes how to install and configure storage nodes
|
||||
that operate the account, container, and object services.
|
||||
|
||||
Note that installation and configuration vary by distribution.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
storage-install-obs.rst
|
||||
storage-install-rdo.rst
|
||||
storage-install-ubuntu-debian.rst
|
96
install-guide/source/verify.rst
Normal file
96
install-guide/source/verify.rst
Normal file
@ -0,0 +1,96 @@
|
||||
.. _verify:
|
||||
|
||||
Verify operation
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
Verify operation of the Object Storage service.
|
||||
|
||||
.. note::
|
||||
|
||||
Perform these steps on the controller node.
|
||||
|
||||
.. warning::
|
||||
|
||||
If you are using Red Hat Enterprise Linux 7 or CentOS 7 and one or more of
|
||||
these steps do not work, check the ``/var/log/audit/audit.log`` file for
|
||||
SELinux messages indicating denial of actions for the ``swift`` processes.
|
||||
If present, change the security context of the ``/srv/node`` directory to
|
||||
the lowest security level (s0) for the ``swift_data_t`` type, ``object_r``
|
||||
role and the ``system_u`` user:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# chcon -R system_u:object_r:swift_data_t:s0 /srv/node
|
||||
|
||||
#. Source the ``demo`` credentials:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ . demo-openrc
|
||||
|
||||
#. Show the service status:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ swift stat
|
||||
Account: AUTH_ed0b60bf607743088218b0a533d5943f
|
||||
Containers: 0
|
||||
Objects: 0
|
||||
Bytes: 0
|
||||
Containers in policy "policy-0": 0
|
||||
Objects in policy "policy-0": 0
|
||||
Bytes in policy "policy-0": 0
|
||||
X-Account-Project-Domain-Id: default
|
||||
X-Timestamp: 1444143887.71539
|
||||
X-Trans-Id: tx1396aeaf17254e94beb34-0056143bde
|
||||
Content-Type: text/plain; charset=utf-8
|
||||
Accept-Ranges: bytes
|
||||
|
||||
#. Create ``container1`` container:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack container create container1
|
||||
+---------------------------------------+------------+------------------------------------+
|
||||
| account | container | x-trans-id |
|
||||
+---------------------------------------+------------+------------------------------------+
|
||||
| AUTH_ed0b60bf607743088218b0a533d5943f | container1 | tx8c4034dc306c44dd8cd68-0056f00a4a |
|
||||
+---------------------------------------+------------+------------------------------------+
|
||||
|
||||
#. Upload a test file to the ``container1`` container:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack object create container1 FILE
|
||||
+--------+------------+----------------------------------+
|
||||
| object | container | etag |
|
||||
+--------+------------+----------------------------------+
|
||||
| FILE | container1 | ee1eca47dc88f4879d8a229cc70a07c6 |
|
||||
+--------+------------+----------------------------------+
|
||||
|
||||
Replace ``FILE`` with the name of a local file to upload to the
|
||||
``container1`` container.
|
||||
|
||||
#. List files in the ``container1`` container:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack object list container1
|
||||
+------+
|
||||
| Name |
|
||||
+------+
|
||||
| FILE |
|
||||
+------+
|
||||
|
||||
#. Download a test file from the ``container1`` container:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack object save container1 FILE
|
||||
|
||||
Replace ``FILE`` with the name of the file uploaded to the
|
||||
``container1`` container.
|
||||
|
||||
.. note::
|
||||
|
||||
This command provides no output.
|
@ -8,6 +8,7 @@ coverage
|
||||
nose
|
||||
nosexcover
|
||||
nosehtmloutput
|
||||
openstackdocstheme>=1.0.3 # Apache-2.0
|
||||
oslosphinx
|
||||
sphinx>=1.1.2,!=1.2.0,!=1.3b1,<1.3 # BSD
|
||||
os-api-ref>=0.1.0 # Apache-2.0
|
||||
|
6
tox.ini
6
tox.ini
@ -74,6 +74,12 @@ commands =
|
||||
rm -rf api-ref/build
|
||||
sphinx-build -W -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html
|
||||
|
||||
[testenv:install-guide]
|
||||
# NOTE(jaegerandi): this target does not use constraints because
|
||||
# upstream infra does not yet support it. Once that's fixed, we can
|
||||
# drop the install_command.
|
||||
install_command = pip install -U --force-reinstall {opts} {packages}
|
||||
commands = sphinx-build -a -E -W -d install-guide/build/doctrees -b html install-guide/source install-guide/build/html
|
||||
|
||||
[testenv:bandit]
|
||||
deps = -r{toxinidir}/test-requirements.txt
|
||||
|
Loading…
Reference in New Issue
Block a user