I'm looking for some guidance on the design of the rings for a larger deploy. Figure > 50K accounts, > 250K containers, > 5 billion objects. What I'm confused about is the ideal way to setup the rings and servers in this case. Would I want a separate set of servers for accounts, containers and objects? Or should every single server/device in the system be a part of all 3 rings? The instructions talk about storage nodes, which handle all 3 classes, but in a large deploy would I really want to do that?
For instance, to take an example from the setup instructions:
swift-ring-builder account.builder create 18 3 1 swift-ring-builder container.builder create 18 3 1 swift-ring-builder object.builder create 18 3 1 I wouldn't actually want each to have the same partition size, right?
And when it comes time to add more storage to the system, I don't need to have accounts and containers on every device?
swift-ring-builder account.builder add z$ZONE-$STORAGE_LOCAL_NET_IP:6002/$DEVICE $WEIGHT swift-ring-builder container.builder add z$ZONE-$STORAGE_LOCAL_NET_IP:6001/$DEVICE $WEIGHT swift-ring-builder object.builder add z$ZONE-$STORAGE_LOCAL_NET_IP:6000/$DEVICE $WEIGHT Right? A blip on the deployment_guide eludes to this, but it seems to stress to just put everything on everything. This seems too simple for a large deploy though.
It would be great to see a page in the docs about deploying large scale swift systems. http://swift.openstack.org/deployment_guide.html is pretty vague on this topic.
Thanks!