ea823a4f4a
I updated basic environment content in the installation guide for Juno as follows: 1) Restructured and clarified OpenStack package procedures. 2) Removed RHEL/CentOS 6.5 special cases and workarounds. 3) Changed RHEL/CentOS to use systemd. 4) Improved SLES/openSUSE sysv/systemd steps. 5) Clarified firewall/security content. 6) Indicated that rebooting is necessary to activate network changes on Ubuntu and Debian. 7) Removed Python MySQL library from non-controller nodes because the services running on them no longer directly interact with the database. I'm looking at you, nova-network. 8) Other minor fixes. Change-Id: If95e6b42e596f55c6a66f2d9ab456b335d3098ca Implements: blueprint installation-guide-improvements Closes-Bug: #1373821
128 lines
7.1 KiB
XML
128 lines
7.1 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<section xmlns="http://docbook.org/ns/docbook"
|
|
xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
version="5.0"
|
|
xml:id="installing-openstack-object-storage">
|
|
<title>Install Object Storage</title>
|
|
<para>Though you can install OpenStack Object Storage for development or
|
|
testing purposes on one server, a multiple-server installation enables
|
|
the high availability and redundancy you want in a production
|
|
distributed object storage system.</para>
|
|
<para>To perform a single-node installation for development purposes from
|
|
source code, use the Swift All In One instructions (Ubuntu) or DevStack
|
|
(multiple distros). See <link
|
|
xlink:href="http://swift.openstack.org/development_saio.html"
|
|
>http://swift.openstack.org/development_saio.html</link> for manual
|
|
instructions or <link xlink:href="http://devstack.org"
|
|
>http://devstack.org</link> for all-in-one including authentication
|
|
with the Identity Service (keystone) v2.0 API.</para>
|
|
<section xml:id="before-you-begin-swift-install">
|
|
<title>Before you begin</title>
|
|
<para>Have a copy of the operating system installation media available
|
|
if you are installing on a new server.</para>
|
|
<para>These steps assume you have set up repositories for packages for
|
|
your operating system as shown in
|
|
<link linkend="basics-packages"/>.</para>
|
|
<para>This document demonstrates how to install a cluster by using the
|
|
following types of nodes:</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>One proxy node which runs the
|
|
<systemitem class="service">swift-proxy-server</systemitem>
|
|
processes. The proxy server proxies requests to the
|
|
appropriate storage nodes.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Five storage nodes that run the <systemitem
|
|
class="service">swift-account-server</systemitem>,
|
|
<systemitem
|
|
class="service">swift-container-server</systemitem>,
|
|
and <systemitem
|
|
class="service">swift-object-server</systemitem>
|
|
processes which control storage of the account
|
|
databases, the container databases, as well as the
|
|
actual stored objects.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<note>
|
|
<para>Fewer storage nodes can be used initially, but a minimum of
|
|
five is recommended for a production cluster.</para>
|
|
</note>
|
|
</section>
|
|
<section xml:id="general-installation-steps-swift">
|
|
<title>General installation steps</title>
|
|
<procedure>
|
|
<step os="rhel;centos;fedora;opensuse;sles;ubuntu">
|
|
<para>Create a <literal>swift</literal> user that the Object
|
|
Storage Service can use to authenticate with the Identity
|
|
Service. Choose a password and specify an email address for
|
|
the <literal>swift</literal> user. Use the
|
|
<literal>service</literal> tenant and give the user the
|
|
<literal>admin</literal> role:</para>
|
|
<screen><prompt>$</prompt> <userinput>keystone user-create --name swift --pass <replaceable>SWIFT_PASS</replaceable> \
|
|
--email <replaceable>swift@example.com</replaceable></userinput>
|
|
<prompt>$</prompt> <userinput>keystone user-role-add --user swift --tenant service --role admin</userinput></screen>
|
|
</step>
|
|
<step>
|
|
<para>Create a service entry for the Object Storage
|
|
Service:</para>
|
|
<screen><prompt>$</prompt> <userinput>keystone service-create --name swift --type object-store \
|
|
--description "OpenStack Object Storage"</userinput>
|
|
<computeroutput>+-------------+----------------------------------+
|
|
| Property | Value |
|
|
+-------------+----------------------------------+
|
|
| description | OpenStack Object Storage |
|
|
| id | eede9296683e4b5ebfa13f5166375ef6 |
|
|
| name | swift |
|
|
| type | object-store |
|
|
+-------------+----------------------------------+</computeroutput></screen>
|
|
<note>
|
|
<para>The service ID is randomly generated and is different
|
|
from the one shown here.</para>
|
|
</note>
|
|
</step>
|
|
<step>
|
|
<para>Specify an API endpoint for the Object Storage Service by
|
|
using the returned service ID. When you specify an endpoint,
|
|
you provide URLs for the public API, internal API, and admin
|
|
API. In this guide, the <literal>controller</literal> host
|
|
name is used:</para>
|
|
<screen><prompt>$</prompt> <userinput>keystone endpoint-create \
|
|
--service-id $(keystone service-list | awk '/ object-store / {print $2}') \
|
|
--publicurl 'http://<replaceable>controller</replaceable>:8080/v1/AUTH_%(tenant_id)s' \
|
|
--internalurl 'http://<replaceable>controller</replaceable>:8080/v1/AUTH_%(tenant_id)s' \
|
|
--adminurl http://<replaceable>controller</replaceable>:8080</userinput>
|
|
<computeroutput>+-------------+---------------------------------------------------+
|
|
| Property | Value |
|
|
+-------------+---------------------------------------------------+
|
|
| adminurl | http://controller:8080/ |
|
|
| id | 9e3ce428f82b40d38922f242c095982e |
|
|
| internalurl | http://controller:8080/v1/AUTH_%(tenant_id)s |
|
|
| publicurl | http://controller:8080/v1/AUTH_%(tenant_id)s |
|
|
| region | regionOne |
|
|
| service_id | eede9296683e4b5ebfa13f5166375ef6 |
|
|
+-------------+---------------------------------------------------+</computeroutput></screen>
|
|
</step>
|
|
<step>
|
|
<para>Create the configuration directory on all nodes:</para>
|
|
<screen><prompt>#</prompt> <userinput>mkdir -p /etc/swift</userinput></screen>
|
|
</step>
|
|
<step>
|
|
<para>Create <filename>/etc/swift/swift.conf</filename> on all
|
|
nodes:</para>
|
|
<programlisting language="ini"><xi:include parse="text" href="../samples/swift.conf.txt"/></programlisting>
|
|
</step>
|
|
</procedure>
|
|
<note>
|
|
<para>The prefix and suffix value in <filename>/etc/swift/swift.conf</filename>
|
|
should be set to some random string of text to be used as a salt
|
|
when hashing to determine mappings in the ring. This file must
|
|
be the same on every node in the cluster!</para>
|
|
</note>
|
|
<para>Next, set up your storage nodes and proxy node. This example uses
|
|
the Identity Service for the common authentication piece.</para>
|
|
</section>
|
|
</section>
|