On 01/07/15 16:54, Mark Kirkwood wrote:
On 01/07/15 13:10, Mark Kirkwood wrote:
I ran into this a few days ago. The context is we are running a node
that performs several api functions and it is going to be a swift proxy
too (at a later date when usage ramps up many of these functions may
move to individual machines, but for now we'd like to keep them
together).

The machines are running Ubuntu Trusty, and we are installing Icehouse
packages.

So currently the cinder api service runs and listens on a wide ipv6
range (::). After I install the python-swift package the cinder api
refuses to start with:

2015-07-01 00:50:25.327 12159 CRITICAL cinder [-] gaierror: [Errno -9]
Address family for hostname not supported
2015-07-01 00:50:25.327 12159 TRACE cinder Traceback (most recent call
last):
2015-07-01 00:50:25.327 12159 TRACE cinder   File "/usr/bin/cinder-api",
line 57, in <module>
2015-07-01 00:50:25.327 12159 TRACE cinder     server =
service.WSGIService('osapi_volume')
2015-07-01 00:50:25.327 12159 TRACE cinder   File
"/usr/lib/python2.7/dist-packages/cinder/service.py", line 301, in
__init__
2015-07-01 00:50:25.327 12159 TRACE cinder     port=self.port)
2015-07-01 00:50:25.327 12159 TRACE cinder   File
"/usr/lib/python2.7/dist-packages/cinder/wsgi.py", line 118, in __init__
2015-07-01 00:50:25.327 12159 TRACE cinder     backlog=backlog)
2015-07-01 00:50:25.327 12159 TRACE cinder   File
"/usr/lib/python2.7/dist-packages/cinder/wsgi.py", line 174, in
_get_socket
2015-07-01 00:50:25.327 12159 TRACE cinder     family=family)
2015-07-01 00:50:25.327 12159 TRACE cinder   File
"/usr/lib/python2.7/dist-packages/eventlet/convenience.py", line 38, in
listen
2015-07-01 00:50:25.327 12159 TRACE cinder     sock.bind(addr)
2015-07-01 00:50:25.327 12159 TRACE cinder   File
"/usr/lib/python2.7/socket.py", line 224, in meth
2015-07-01 00:50:25.327 12159 TRACE cinder     return
getattr(self._sock,name)(*args)
2015-07-01 00:50:25.327 12159 TRACE cinder gaierror: [Errno -9] Address
family for hostname not supported

The culprit appears to be the python-dnspython package that is a dep for
python-swift.

Now it appears that there is some monkey patching going on in the
various wsgi eventlet modules to do ipv6 - somehow python-dnspython is
changing the way that works - any thoughts welcome, as it would be cool
to have things working again!


After reading up a bit on this whole monkey patching thing, I see that
adding:

EVENTLET_NO_GREENDNS=yes

to the cinder user's env seems to get it working again. However this
will mean that there is *no* patching...which might not be the best
answer (still hoping for better suggestions).


Doing some more research - it seems Nova's __init__.py is setting this env variable to 'yes" - which suggests that Cinder should do similarly. I've raised a bug here: https://bugs.launchpad.net/cinder/+bug/1471049

Regards

Mark


_______________________________________________
Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
Post to     : openstack@lists.openstack.org
Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack

Reply via email to