[Openstack] [Swift] How to add a new node without ring copy?

Mark Kirkwood mark.kirkwood at catalyst.net.nz
Mon Jan 23 02:37:21 UTC 2017


Yes, one set of identical ring files is definitely the best option! Also 
the recon md5 ring check will likely complain forever if these 
alternative methods (for avoiding copying) are tried.


More interesting is why people want to avoid the copy? I'm guessing it 
is because this type of thing is hard to do in some of the automated 
provisioning tools (ahem..looking at you puppet):

- add disk on storage node

- tell ring generation/master node(s) about it

- make new rings on the node(s) above if new disks detected

- copy new rings from node(s) in step 2 (for every node in cluster)


Now the puppet-swift module does tell you how to do this (via exported 
resources), but it is not that simple (and in fact the examples in the 
module have mistakes that result in non identical rings proxy nodes...). 
Other complexities that make this tricky are multiple regions/geo 
replication - if each has its own puppet server...you can't (easily) use 
exported resources at all.

Keeping the rings in swift is quite a cool idea - but can't be used when 
bootstrapping the cluster initially (probably not that difficult to work 
around tho).


We are currently

- keeping boostrap ring in puppet
- add new disks/nodes manually (with helper scripts)
- keep 'master' rings on all proxies
- run ring rsync servers on all proxies
- storage nodes get rings from proxies (puppet or manually)

We run the recon md5 ring check as part of standard monitoring to pick 
up any mistakes we might do add devices.

cheers

Mark

On 23/01/17 03:16, Vladimir Maliaev wrote:
> Anyway you will copy ring files to new node. Which node you are going 
> to copy from?
> I think that to have only one set of ring files is helpful in 
> troubleshooting if something goes wrong.
>
> On Jan 22, 2017 6:08 AM, "Alexandr Porunov" 
> <alexandr.porunov at gmail.com <mailto:alexandr.porunov at gmail.com>> wrote:
>
>     Hello,
>
>     I read different articles about how to add a new node and they all
>     says this:
>     1) Add a node to ring builder
>     2) Rebalance ring
>     3) Copy ring to each node.
>
>     Is it possible to skip "copy" step by doing first and second step
>     on each node? Will then all nodes have the same ring?
>     I.e. I mean to do like this:
>     1) Add a node to the ring builder (Execute this step on each node)
>     2) Rebalance the ring (Execute this step on each node)
>
>     Will the ring be the same or we still have to copy the ring from
>     one node to all others?
>
>     Best regards,
>     Alexandr
>
>     _______________________________________________
>     Mailing list:
>     http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
>     <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack>
>     Post to     : openstack at lists.openstack.org
>     <mailto:openstack at lists.openstack.org>
>     Unsubscribe :
>     http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
>     <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack>
>
>
>
> _______________________________________________
> Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
> Post to     : openstack at lists.openstack.org
> Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack





More information about the Openstack mailing list