[Openstack] [Swift] Multi device storage nodes - single .conf or one per device?

Clay Gerrard clay.gerrard at gmail.com
Thu Jun 11 15:55:00 UTC 2015


What a well timed question!

A swift core maintainer recently did some analysis on this very question
and the results strongly favored using multiple workers on different ports
each handling only a single physical filesystem device.

To make it easier to achieve that configuration there's a patch to enable
the swift-object-server wsgi worker handler to layout processes like this
automatically based on the ports in the ring:

https://review.openstack.org/#/c/184189/

However, that isn't in (yet) so it's not available to you in swift 1.13 -
but the references to the benchmarks and graphs and i/o isolation should
indicate that even in swift 1.13 you'll want to run multiple workers per
disk - and if possible have those workers handling only one device for
isolation (which until this change lands means config file per disk)

Unrelated, but I wonder why you think apache/mod_wsgi is better than having
the swift-proxy-server process back right up to a simple ssl termination
(i.e. stud)

-Clay

On Wed, Jun 10, 2015 at 5:08 PM, Mark Kirkwood <
mark.kirkwood at catalyst.net.nz> wrote:

> Hi,
>
> I'm looking at setting up a Swift cluster and am wondering if there is any
> strong preference for one vs many config files in this case.
>
> I note that devstack will create one config per device, e.g for a 2 device
> install:
>
> $ ls -l /opt/stack/data/swift
> total 16
> lrwxrwxrwx  1 root  root    35 Jun 11 11:50 1 ->
> /opt/stack/data/swift/drives/sdb1/1
> lrwxrwxrwx  1 root  root    35 Jun 11 11:50 2 ->
> /opt/stack/data/swift/drives/sdb1/2
>
> $ ls -l /etc/swift/object-server/
> total 16
> -rw-r--r-- 1 stack stack 8148 Jun 11 11:49 1.conf
> -rw-r--r-- 1 stack stack 8148 Jun 11 11:49 2.conf
>
> $ head /etc/swift/object-server/1.conf
> [DEFAULT]
> # bind_ip = 0.0.0.0
> bind_port = 6013
> # bind_timeout = 30
> # backlog = 4096
> user = stack
> swift_dir = /etc/swift
> devices = /opt/stack/data/swift/1
> mount_check = false
> disable_fallocate = true
>
>
> Whereas puppet-swift module seems to create just one, e.g:
>
> $ ls -l /srv/node
> total 0
> drwxr-xr-x 5 swift swift 47 Jun 10 04:21 1
> drwxr-xr-x 6 swift swift 62 Jun 10 04:21 2
>
> $ head /etc/swift/object-server.conf
> [DEFAULT]
> devices = /srv/node
> bind_ip = 192.168.5.181
> bind_port = 6000
> mount_check = false
> user = swift
> log_facility = LOG_LOCAL2
> workers = 1
>
>
> (both of these are Swift 1.13). Is there a scalability advantage to having
> each device having its own port? Or any other reason to prefer one of the
> other?
>
> I'm hoping to use Puppet + puppet-swift to actually deploy Swift, and
> actually run the proxy, account, container and object servers under Apache
> mod_wsgi (which is my next struggle with Puppet no doubt...).
>
> Cheers
>
> Mark
>
> _______________________________________________
> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20150611/0bc9bfcc/attachment.html>


More information about the Openstack mailing list