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_database_service.rst',
|
||||
'common/get_started_data_processing.rst',
|
||||
'common/get_started_object_storage.rst',
|
||||
'common/get_started_orchestration.rst',
|
||||
'common/get_started_telemetry.rst',
|
||||
'common/dashboard_customizing.rst',
|
||||
|
@ -1 +0,0 @@
|
||||
../../install-guide/source/environment-networking-storage-swift.rst
|
@ -45,7 +45,6 @@ Contents
|
||||
horizon.rst
|
||||
cinder.rst
|
||||
manila.rst
|
||||
swift.rst
|
||||
launch-instance.rst
|
||||
|
||||
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_database_service.rst',
|
||||
'common/get_started_data_processing.rst',
|
||||
'common/get_started_object_storage.rst',
|
||||
'common/get_started_orchestration.rst',
|
||||
'common/get_started_telemetry.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-compute.rst
|
||||
environment-networking-storage-cinder.rst
|
||||
environment-networking-storage-swift.rst
|
||||
environment-networking-verify.rst
|
||||
|
@ -66,8 +66,6 @@ and their associated references in the guide:
|
||||
- Password of Compute service user ``nova``
|
||||
* - ``RABBIT_PASS``
|
||||
- Password of user guest of RabbitMQ
|
||||
* - ``SWIFT_PASS``
|
||||
- Password of Object Storage service user ``swift``
|
||||
|
||||
OpenStack and supporting services require administrative privileges
|
||||
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
|
||||
one networking service, and the dashboard, the Object Storage service 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,
|
||||
the dashboard requires at least the Image service, Compute, and Networking.
|
||||
skip to `Object Storage Installation Guide
|
||||
<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.
|
||||
Either run the commands as the ``root`` user or configure the ``sudo``
|
||||
|
@ -88,7 +88,6 @@ Contents
|
||||
horizon.rst
|
||||
cinder.rst
|
||||
manila.rst
|
||||
swift.rst
|
||||
additional-services.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