Merge "[install] remove object storage chapter"
This commit is contained in:
commit
f9b9c9def1
@ -100,6 +100,7 @@ exclude_patterns = ['common/cli*', 'common/nova*',
|
|||||||
'common/get_started_storage_concepts.rst',
|
'common/get_started_storage_concepts.rst',
|
||||||
'common/get_started_database_service.rst',
|
'common/get_started_database_service.rst',
|
||||||
'common/get_started_data_processing.rst',
|
'common/get_started_data_processing.rst',
|
||||||
|
'common/get_started_object_storage.rst',
|
||||||
'common/get_started_orchestration.rst',
|
'common/get_started_orchestration.rst',
|
||||||
'common/get_started_telemetry.rst',
|
'common/get_started_telemetry.rst',
|
||||||
'common/dashboard_customizing.rst',
|
'common/dashboard_customizing.rst',
|
||||||
|
@ -1 +0,0 @@
|
|||||||
../../install-guide/source/environment-networking-storage-swift.rst
|
|
@ -45,7 +45,6 @@ Contents
|
|||||||
horizon.rst
|
horizon.rst
|
||||||
cinder.rst
|
cinder.rst
|
||||||
manila.rst
|
manila.rst
|
||||||
swift.rst
|
|
||||||
launch-instance.rst
|
launch-instance.rst
|
||||||
|
|
||||||
Appendix
|
Appendix
|
||||||
|
@ -1 +0,0 @@
|
|||||||
../../install-guide/source/swift-controller-include.txt
|
|
@ -1 +0,0 @@
|
|||||||
../../install-guide/source/swift-controller-install.rst
|
|
@ -1 +0,0 @@
|
|||||||
../../install-guide/source/swift-finalize-installation.rst
|
|
@ -1 +0,0 @@
|
|||||||
../../install-guide/source/swift-initial-rings.rst
|
|
@ -1 +0,0 @@
|
|||||||
../../install-guide/source/swift-next-steps.rst
|
|
@ -1 +0,0 @@
|
|||||||
../../install-guide/source/swift-storage-include1.txt
|
|
@ -1 +0,0 @@
|
|||||||
../../install-guide/source/swift-storage-include2.txt
|
|
@ -1 +0,0 @@
|
|||||||
../../install-guide/source/swift-storage-include3.txt
|
|
@ -1 +0,0 @@
|
|||||||
../../install-guide/source/swift-storage-install.rst
|
|
@ -1 +0,0 @@
|
|||||||
../../install-guide/source/swift-verify.rst
|
|
@ -1 +0,0 @@
|
|||||||
../../install-guide/source/swift.rst
|
|
@ -100,6 +100,7 @@ exclude_patterns = ['common/cli*', 'common/nova*',
|
|||||||
'common/get_started_storage_concepts.rst',
|
'common/get_started_storage_concepts.rst',
|
||||||
'common/get_started_database_service.rst',
|
'common/get_started_database_service.rst',
|
||||||
'common/get_started_data_processing.rst',
|
'common/get_started_data_processing.rst',
|
||||||
|
'common/get_started_object_storage.rst',
|
||||||
'common/get_started_orchestration.rst',
|
'common/get_started_orchestration.rst',
|
||||||
'common/get_started_telemetry.rst',
|
'common/get_started_telemetry.rst',
|
||||||
'common/dashboard_customizing.rst',
|
'common/dashboard_customizing.rst',
|
||||||
|
@ -1,51 +0,0 @@
|
|||||||
Object storage nodes (Optional)
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
If you want to deploy the Object Storage service, configure two
|
|
||||||
additional storage nodes.
|
|
||||||
|
|
||||||
First node
|
|
||||||
----------
|
|
||||||
|
|
||||||
Configure network interfaces
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
* Configure the management interface:
|
|
||||||
|
|
||||||
* IP address: ``10.0.0.51``
|
|
||||||
|
|
||||||
* Network mask: ``255.255.255.0`` (or ``/24``)
|
|
||||||
|
|
||||||
* Default gateway: ``10.0.0.1``
|
|
||||||
|
|
||||||
Configure name resolution
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
#. Set the hostname of the node to ``object1``.
|
|
||||||
|
|
||||||
#. .. include:: shared/edit_hosts_file.txt
|
|
||||||
|
|
||||||
#. Reboot the system to activate the changes.
|
|
||||||
|
|
||||||
Second node
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Configure network interfaces
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
* Configure the management interface:
|
|
||||||
|
|
||||||
* IP address: ``10.0.0.52``
|
|
||||||
|
|
||||||
* Network mask: ``255.255.255.0`` (or ``/24``)
|
|
||||||
|
|
||||||
* Default gateway: ``10.0.0.1``
|
|
||||||
|
|
||||||
Configure name resolution
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
#. Set the hostname of the node to ``object2``.
|
|
||||||
|
|
||||||
#. .. include:: shared/edit_hosts_file.txt
|
|
||||||
|
|
||||||
#. Reboot the system to activate the changes.
|
|
@ -119,5 +119,4 @@ the controller node.
|
|||||||
environment-networking-controller.rst
|
environment-networking-controller.rst
|
||||||
environment-networking-compute.rst
|
environment-networking-compute.rst
|
||||||
environment-networking-storage-cinder.rst
|
environment-networking-storage-cinder.rst
|
||||||
environment-networking-storage-swift.rst
|
|
||||||
environment-networking-verify.rst
|
environment-networking-verify.rst
|
||||||
|
@ -66,8 +66,6 @@ and their associated references in the guide:
|
|||||||
- Password of Compute service user ``nova``
|
- Password of Compute service user ``nova``
|
||||||
* - ``RABBIT_PASS``
|
* - ``RABBIT_PASS``
|
||||||
- Password of user guest of RabbitMQ
|
- Password of user guest of RabbitMQ
|
||||||
* - ``SWIFT_PASS``
|
|
||||||
- Password of Object Storage service user ``swift``
|
|
||||||
|
|
||||||
OpenStack and supporting services require administrative privileges
|
OpenStack and supporting services require administrative privileges
|
||||||
during installation and operation. In some cases, services perform
|
during installation and operation. In some cases, services perform
|
||||||
|
@ -10,8 +10,10 @@ node using the example architecture.
|
|||||||
Although most environments include Identity, Image service, Compute, at least
|
Although most environments include Identity, Image service, Compute, at least
|
||||||
one networking service, and the dashboard, the Object Storage service can
|
one networking service, and the dashboard, the Object Storage service can
|
||||||
operate independently. If your use case only involves Object Storage, you can
|
operate independently. If your use case only involves Object Storage, you can
|
||||||
skip to :ref:`swift` after configuring the appropriate nodes for it. However,
|
skip to `Object Storage Installation Guide
|
||||||
the dashboard requires at least the Image service, Compute, and Networking.
|
<http://docs.openstack.org/project-install-guide/object-storage/draft/>`_
|
||||||
|
after configuring the appropriate nodes for it. However, the dashboard
|
||||||
|
requires at least the Image service, Compute, and Networking.
|
||||||
|
|
||||||
You must use an account with administrative privileges to configure each node.
|
You must use an account with administrative privileges to configure each node.
|
||||||
Either run the commands as the ``root`` user or configure the ``sudo``
|
Either run the commands as the ``root`` user or configure the ``sudo``
|
||||||
|
@ -88,7 +88,6 @@ Contents
|
|||||||
horizon.rst
|
horizon.rst
|
||||||
cinder.rst
|
cinder.rst
|
||||||
manila.rst
|
manila.rst
|
||||||
swift.rst
|
|
||||||
additional-services.rst
|
additional-services.rst
|
||||||
launch-instance.rst
|
launch-instance.rst
|
||||||
|
|
||||||
|
@ -1,84 +0,0 @@
|
|||||||
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:: ini
|
|
||||||
|
|
||||||
[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:: ini
|
|
||||||
|
|
||||||
[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:: ini
|
|
||||||
|
|
||||||
[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:: ini
|
|
||||||
|
|
||||||
[filter:cache]
|
|
||||||
use = egg:swift#memcache
|
|
||||||
...
|
|
||||||
memcache_servers = controller:11211
|
|
@ -1,198 +0,0 @@
|
|||||||
.. _swift-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. 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>`__.
|
|
||||||
|
|
||||||
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. However, for simplicity, this guide references the Identity service
|
|
||||||
in :doc:`keystone`. 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 |
|
|
||||||
+--------------+----------------------------------+
|
|
||||||
|
|
||||||
Install and configure components
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
.. include:: shared/note_configuration_vary_by_distribution.rst
|
|
||||||
|
|
||||||
#. Install the packages:
|
|
||||||
|
|
||||||
.. only:: ubuntu or debian
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
# apt-get install swift swift-proxy python-swiftclient \
|
|
||||||
python-keystoneclient python-keystonemiddleware \
|
|
||||||
memcached
|
|
||||||
|
|
||||||
.. only:: rdo
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
# yum install openstack-swift-proxy python-swiftclient \
|
|
||||||
python-keystoneclient python-keystonemiddleware \
|
|
||||||
memcached
|
|
||||||
|
|
||||||
.. only:: obs
|
|
||||||
|
|
||||||
.. 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.
|
|
||||||
|
|
||||||
.. only:: ubuntu or debian
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
.. only:: rdo
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
.. only:: obs
|
|
||||||
|
|
||||||
2. .. include:: swift-controller-include.txt
|
|
||||||
|
|
||||||
.. only:: rdo
|
|
||||||
|
|
||||||
3. .. include:: swift-controller-include.txt
|
|
||||||
|
|
||||||
.. only:: ubuntu
|
|
||||||
|
|
||||||
4. .. include:: swift-controller-include.txt
|
|
@ -1,180 +0,0 @@
|
|||||||
Finalize installation
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
.. include:: shared/note_configuration_vary_by_distribution.rst
|
|
||||||
|
|
||||||
.. only:: ubuntu or rdo or 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:: ini
|
|
||||||
|
|
||||||
[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:: ini
|
|
||||||
|
|
||||||
[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.
|
|
||||||
|
|
||||||
.. only:: obs
|
|
||||||
|
|
||||||
#. 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:: ini
|
|
||||||
|
|
||||||
[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:: ini
|
|
||||||
|
|
||||||
[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.
|
|
||||||
|
|
||||||
.. only:: ubuntu or debian
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
.. only:: rdo
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
.. only:: obs
|
|
||||||
|
|
||||||
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
|
|
@ -1,253 +0,0 @@
|
|||||||
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:`swift-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:`swift-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:`swift-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.
|
|
@ -1,6 +0,0 @@
|
|||||||
==========
|
|
||||||
Next steps
|
|
||||||
==========
|
|
||||||
|
|
||||||
Your OpenStack environment now includes Object Storage. You can
|
|
||||||
:ref:`launch-instance` or add more services to your environment.
|
|
@ -1,41 +0,0 @@
|
|||||||
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:: ini
|
|
||||||
|
|
||||||
[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:: ini
|
|
||||||
|
|
||||||
[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:: ini
|
|
||||||
|
|
||||||
[filter:recon]
|
|
||||||
use = egg:swift#recon
|
|
||||||
...
|
|
||||||
recon_cache_path = /var/cache/swift
|
|
@ -1,41 +0,0 @@
|
|||||||
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:: ini
|
|
||||||
|
|
||||||
[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:: ini
|
|
||||||
|
|
||||||
[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:: ini
|
|
||||||
|
|
||||||
[filter:recon]
|
|
||||||
use = egg:swift#recon
|
|
||||||
...
|
|
||||||
recon_cache_path = /var/cache/swift
|
|
@ -1,42 +0,0 @@
|
|||||||
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:: ini
|
|
||||||
|
|
||||||
[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:: ini
|
|
||||||
|
|
||||||
[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:: ini
|
|
||||||
|
|
||||||
[filter:recon]
|
|
||||||
use = egg:swift#recon
|
|
||||||
...
|
|
||||||
recon_cache_path = /var/cache/swift
|
|
||||||
recon_lock_path = /var/lock
|
|
@ -1,206 +0,0 @@
|
|||||||
.. _swift-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. 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
|
|
||||||
:term:`extended attributes (xattr)`, testing and benchmarking
|
|
||||||
indicate the best performance and reliability on :term:`XFS`. For
|
|
||||||
more information on horizontally scaling your environment, see the
|
|
||||||
`Deployment Guide <http://docs.openstack.org/developer/swift/deployment_guide.html>`_.
|
|
||||||
|
|
||||||
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:
|
|
||||||
|
|
||||||
.. only:: ubuntu or debian
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
# apt-get install xfsprogs rsync
|
|
||||||
|
|
||||||
.. only:: rdo
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
# yum install xfsprogs rsync
|
|
||||||
|
|
||||||
.. only:: obs
|
|
||||||
|
|
||||||
.. 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:: ini
|
|
||||||
|
|
||||||
/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:: ini
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
.. only:: ubuntu or debian
|
|
||||||
|
|
||||||
7. Edit the ``/etc/default/rsync`` file and enable the ``rsync``
|
|
||||||
service:
|
|
||||||
|
|
||||||
.. code-block:: ini
|
|
||||||
|
|
||||||
RSYNC_ENABLE=true
|
|
||||||
|
|
||||||
8. Start the ``rsync`` service:
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
# service rsync start
|
|
||||||
|
|
||||||
.. only:: obs or rdo
|
|
||||||
|
|
||||||
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
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
.. include:: shared/note_configuration_vary_by_distribution.rst
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
Perform these steps on each storage node.
|
|
||||||
|
|
||||||
#. Install the packages:
|
|
||||||
|
|
||||||
.. only:: ubuntu or debian
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
# apt-get install swift swift-account swift-container swift-object
|
|
||||||
|
|
||||||
.. only:: rdo
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
# yum install openstack-swift-account openstack-swift-container \
|
|
||||||
openstack-swift-object
|
|
||||||
|
|
||||||
.. only:: obs
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
# zypper install openstack-swift-account \
|
|
||||||
openstack-swift-container openstack-swift-object python-xml
|
|
||||||
|
|
||||||
.. only:: ubuntu or rdo or debian
|
|
||||||
|
|
||||||
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:: swift-storage-include1.txt
|
|
||||||
4. .. include:: swift-storage-include2.txt
|
|
||||||
5. .. include:: swift-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
|
|
||||||
|
|
||||||
.. only:: obs
|
|
||||||
|
|
||||||
2. .. include:: swift-storage-include1.txt
|
|
||||||
3. .. include:: swift-storage-include2.txt
|
|
||||||
4. .. include:: swift-storage-include3.txt
|
|
||||||
5. Ensure proper ownership of the mount point directory structure:
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
# chown -R swift:swift /srv/node
|
|
@ -1,96 +0,0 @@
|
|||||||
Verify operation
|
|
||||||
~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Verify operation of the Object Storage service.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
Perform these steps on the controller node.
|
|
||||||
|
|
||||||
.. only:: rdo
|
|
||||||
|
|
||||||
.. warning::
|
|
||||||
|
|
||||||
If 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.
|
|
@ -1,22 +0,0 @@
|
|||||||
.. _swift:
|
|
||||||
|
|
||||||
======================
|
|
||||||
Object Storage service
|
|
||||||
======================
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
common/get_started_object_storage.rst
|
|
||||||
swift-controller-install.rst
|
|
||||||
swift-storage-install.rst
|
|
||||||
swift-initial-rings.rst
|
|
||||||
swift-finalize-installation.rst
|
|
||||||
swift-verify.rst
|
|
||||||
swift-next-steps.rst
|
|
||||||
|
|
||||||
The Object Storage services (swift) work together to provide
|
|
||||||
object storage and retrieval through a :term:`REST API <RESTful>`.
|
|
||||||
|
|
||||||
Your environment must at least include the Identity service (keystone)
|
|
||||||
prior to deploying Object Storage.
|
|
Loading…
Reference in New Issue
Block a user