cbff69be82
Change-Id: I3058a7f0256e92b53291fe6186da1eb6450043c5
30 lines
1.4 KiB
Plaintext
30 lines
1.4 KiB
Plaintext
== Swift Charm Ring Management ==
|
|
|
|
Swift uses rings and builders to manage data distribution across storage devices
|
|
in the cluster. More information on this can be found in the upstream
|
|
documentation [0].
|
|
|
|
In order to function correctly, the rings and builders need to be the same
|
|
across all swift proxy units and the rings need to be distributed to storage
|
|
units. The swift proxy charm achieves this by electing a leader unit and having
|
|
that unit manage ring and builder files by updating them when new nodes or
|
|
devices are added to the cluster and distributing those files to other nodes in
|
|
the cluster.
|
|
|
|
Since over time the leader may change, rings syncs use acknowledgements from
|
|
peer units to determine whether a synchronisation has completed. This way if
|
|
the leader switches to another unit, we are able to know that the new leader
|
|
has up-to-date ring and builder files.
|
|
|
|
When new devices are added to storage units, the leader proxy unit is notified
|
|
and adds them to the ring. Once complete, the leader unit will broadcast a
|
|
notification that rings and builders are ready to be synced across the cluster
|
|
(only proxy units get builders) and each unit in the cluster should then begin
|
|
syncing from the leader and acknowledge receipt.
|
|
|
|
During synchronisation, swift-proxy services are stopped in order to avoid
|
|
having requests being handled while rings are being updated.
|
|
|
|
|
|
[0] http://docs.openstack.org/developer/swift/overview_ring.html
|