Это может быть больше связано с кластером Ceph, чем с python lib boto3.Когда OSD выходит из строя, все кластеры отвечают 502 (Bad Gateway) нашим клиентам s3 (boto3, s3cmd, rclone, aws-cli).
Общая картина моего кластера: - 3 шлюза Rados с Nginx, выполняющими fastcgi_passчтобы civetweb.На этом же сервере работает ceph-монитор.- 5 OSD-серверов с 3 OSD на каждом.
Все работает нормально, пока не отключится одно OSD.Сразу Кластер входит в состояние ПРЕДУПРЕЖДЕНИЕ и начинает переназначать PG на другие OSD (я использую реплику 3 для данных пула).Но когда кластер восстанавливается, он отвечает 502 всем клиентам s3, даже если я пытаюсь составить список сегментов.
self.resource = boto3.setup_default_session(**credentials)
for bucket in self.resource.buckets.all():
yield bucket
for bucket in self.resource.buckets.all():
File "/usr/local/venv/azionmanager/lib/python2.7/site-packages/boto3/resources/collection.py", line 83, in __iter__
for page in self.pages():
File "/usr/local/venv/azionmanager/lib/python2.7/site-packages/boto3/resources/collection.py", line 161, in pages
pages = [getattr(client, self._py_operation_name)(**params)]
File "/usr/local/venv/azionmanager/lib/python2.7/site-packages/botocore/client.py", line 324, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/usr/local/venv/azionmanager/lib/python2.7/site-packages/botocore/client.py", line 622, in _make_api_call
raise error_class(parsed_response, operation_name)
ClientError: An error occurred (502) when calling the ListBuckets operation (reached max retries: 4): Bad Gateway
Я ожидал, что Ceph сможет работать с OSD, потому что еще есть 2реплики для каждого объекта, но вместо этого он отключается.
У вас, ребята, есть идеи о том, что здесь происходит?