626a9ed3ed
Previous a different zone was being assigned to each device, which is not how a typical deployment works. Zones are usually assigned to correlate to a failure domain at a higher level. For example a node or a rack. In these instructions I changed to use just two zones, one for each node (ip address), I think this gives a better representation of how zones should be assigned. backport: liberty Change-Id: I17bb3d59089af59fb140ed096d3d0b42ad149ade Signed-off-by: Thiago da Silva <thiago@redhat.com>
254 lines
11 KiB
ReStructuredText
254 lines
11 KiB
ReStructuredText
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.
|