← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1954430] Re: Openstack image command-line operations fail for large images in Kolla Victoria

 

The above issue is caused since kolla-ansible and ceph-ansible both use
the same router_id('51') for keepalived configuration. A different
router id for kolla-ansible can be set with
'keepalived_virtual_router_id' option in globals.yml.

This issue can be marked as solved now.

** No longer affects: glance

** Changed in: kolla
       Status: New => Incomplete

** Changed in: kolla
       Status: Incomplete => Opinion

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to Glance.
https://bugs.launchpad.net/bugs/1954430

Title:
  Openstack image command-line operations fail for large images in Kolla
  Victoria

Status in kolla:
  Opinion

Bug description:
  **Bug Report**

  What happened:

  Openstack image upload and save commands fail with the following
  'Connection reset by peer' error, for only large images.

  # openstack image save windows-server2016 --file /tmp/t --debug

  GET call to image for http://172.16.201.254:9292/v2/images/d2eb0d3c-b455-4c18-9cbe-4f6941044d7d/file used request id req-d15c2664-b776-4486-8f12-fb0eb2bdfef8
  Unable to download image: ("Connection broken: ConnectionResetError(104, 'Connection reset by peer')", ConnectionResetError(104, 'Connection reset by peer'))
  Traceback (most recent call last):
    File "/usr/local/lib/python3.6/site-packages/urllib3/response.py", line 438, in _error_catcher
      yield
    File "/usr/local/lib/python3.6/site-packages/urllib3/response.py", line 519, in read
      data = self._fp.read(amt) if not fp_closed else b""
    File "/usr/lib64/python3.6/http/client.py", line 463, in read
      n = self.readinto(b)
    File "/usr/lib64/python3.6/http/client.py", line 507, in readinto
      n = self.fp.readinto(b)
    File "/usr/lib64/python3.6/socket.py", line 586, in readinto
      return self._sock.recv_into(b)
  ConnectionResetError: [Errno 104] Connection reset by peer

  During handling of the above exception, another exception occurred:

  Traceback (most recent call last):
    File "/usr/local/lib/python3.6/site-packages/requests/models.py", line 758, in generate
      for chunk in self.raw.stream(chunk_size, decode_content=True):
    File "/usr/local/lib/python3.6/site-packages/urllib3/response.py", line 576, in stream
      data = self.read(amt=amt, decode_content=decode_content)
    File "/usr/local/lib/python3.6/site-packages/urllib3/response.py", line 541, in read
      raise IncompleteRead(self._fp_bytes_read, self.length_remaining)
    File "/usr/lib64/python3.6/contextlib.py", line 99, in __exit__
      self.gen.throw(type, value, traceback)
    File "/usr/local/lib/python3.6/site-packages/urllib3/response.py", line 455, in _error_catcher
      raise ProtocolError("Connection broken: %r" % e, e)
  urllib3.exceptions.ProtocolError: ("Connection broken: ConnectionResetError(104, 'Connection reset by peer')", ConnectionResetError(104, 'Connection reset by peer'))

  During handling of the above exception, another exception occurred:

  Traceback (most recent call last):
    File "/usr/local/lib/python3.6/site-packages/openstack/image/_download.py", line 57, in download
      chunk_size=chunk_size):
    File "/usr/local/lib/python3.6/site-packages/requests/models.py", line 761, in generate
      raise ChunkedEncodingError(e)
  requests.exceptions.ChunkedEncodingError: ("Connection broken: ConnectionResetError(104, 'Connection reset by peer')", ConnectionResetError(104, 'Connection reset by peer'))

  During handling of the above exception, another exception occurred:

  Traceback (most recent call last):
    File "/usr/local/lib/python3.6/site-packages/cliff/app.py", line 407, in run_subcommand
      result = cmd.run(parsed_args)
    File "/usr/local/lib/python3.6/site-packages/osc_lib/command/command.py", line 39, in run
      return super(Command, self).run(parsed_args)
    File "/usr/local/lib/python3.6/site-packages/cliff/command.py", line 186, in run
      return_code = self.take_action(parsed_args) or 0
    File "/usr/local/lib/python3.6/site-packages/openstackclient/image/v2/image.py", line 847, in take_action
      image_client.download_image(image.id, stream=True, output=output_file)
    File "/usr/local/lib/python3.6/site-packages/openstack/image/v2/_proxy.py", line 451, in download_image
      self, stream=stream, output=output, chunk_size=chunk_size)
    File "/usr/local/lib/python3.6/site-packages/openstack/image/_download.py", line 65, in download
      "Unable to download image: %s" % e)
  openstack.exceptions.SDKException: Unable to download image: ("Connection broken: ConnectionResetError(104, 'Connection reset by peer')", ConnectionResetError(104, 'Connection reset by peer'))
  clean_up SaveImage: Unable to download image: ("Connection broken: ConnectionResetError(104, 'Connection reset by peer')", ConnectionResetError(104, 'Connection reset by peer'))
  END return value: 1


  The haproxy logs show a 'CD--' status, which suggest that the client
  aborted the connection.

  Dec 10 11:46:58 node003 haproxy[43]: 172.16.201.1:51626
  [10/Dec/2021:11:46:47.358] glance_api_front glance_api_back/node001
  0/0/0/219/11319 200 1132157897 - - CD-- 297/3/0/0/0 0/0 "GET
  /v2/images/d2eb0d3c-b455-4c18-9cbe-4f6941044d7d/file HTTP/1.1"


  The glance-api server logs  the following 'Connection reset by peer'
  error, same as openstack cmdline client.

  node001: 2021-12-10 11:52:15.247 58 INFO eventlet.wsgi.server [req-4af3af95-6363-4857-ad82-7a30c784bc40 a8814484a71c4c5193282bcfd5e6ff3f fea7b584dcc343c19c65498e099ffd80 - default default] Traceback (most recent call last):
  node001:   File "/usr/lib/python3.6/site-packages/eventlet/wsgi.py", line 591, in handle_one_response
  node001:     write(b''.join(towrite))
  node001:   File "/usr/lib/python3.6/site-packages/eventlet/wsgi.py", line 537, in write
  node001:     wfile.writelines(towrite)
  node001:   File "/usr/lib64/python3.6/socket.py", line 604, in write
  node001:     return self._sock.send(b)
  node001:   File "/usr/lib/python3.6/site-packages/eventlet/greenio/base.py", line 397, in send
  node001:     return self._send_loop(self.fd.send, data, flags)
  node001:   File "/usr/lib/python3.6/site-packages/eventlet/greenio/base.py", line 384, in _send_loop
  node001:     return send_method(data, *args)
  node001: ConnectionResetError: [Errno 104] Connection reset by peer


  
  Can this issue be resolved by modifying the default haproxy configuration?


  What you expected to happen:

  The 'openstack image create' and 'openstack image save' commands
  should execute succesfully.

  How to reproduce it (minimal and precise):

  Try to upload a 40GB+ image with 'openstack image create' command, in
  a Kolla Victoria setup, in High availability mode, with Haproxy and
  virtual IPs.

  **Environment**:

  * OS : CentOS Linux 8
  * Kernel : 4.18.0-305.3.1.el8.x86_64
  * Docker version : 20.10.8(Docker Engine - Community)
  * Kolla-ansible version : 11.1.0
  * Openstack version : Victoria

To manage notifications about this bug go to:
https://bugs.launchpad.net/kolla/+bug/1954430/+subscriptions



References