Я установил два кластера ceph со шлюзом rados на узле для каждого из них. Чего я пытаюсь добиться, так это перенести все объекты из корзины «А» с конечной точкой в моем кластере «1» в корзину «Б», до которой можно добраться из другой конечной точки в моем кластере «2». Это на самом деле не имеет значения для моей проблемы, но, по крайней мере, вы понимаете контекст.
Я создал скрипт на питоне, используя модуль boto3. Скрипт действительно простой. Я просто хотел положить предмет в ведро.
Соответствующая часть написана ниже:
s3 = boto3.resource('s3',
endpoint_url=credentials['endpoint_url'],
aws_access_key_id=credentials['access_key'],
aws_secret_access_key=credentials['secret_key'],
use_ssl=False)
s3.Object('my-bucket', 'hello.txt').put(Body=open('/tmp/hello.txt', 'rb'))
(hello.txt содержит только слово)
Допустим, этот сценарий написан и запускается с узла (который является узлом конечной точки radosgw) в моем кластере 1. Он хорошо работает, когда «endpoint_url» является узлом, с которого я запускаю сценарий, но он не работает, когда я m пытаюсь связаться с другой моей конечной точкой (radosgw, расположенной в другом узле в моем кластере «2»).
Я получил эту ошибку:
botocore.exceptions.ReadTimeoutError: Read timeout on endpoint URL
Странно то, что я могу создать ведро без ошибок:
s3_src.create_bucket(Bucket=bucket_name)
s3_dest.create_bucket(Bucket=bucket_name)
Я даже могу перечислить сегменты двух моих конечных точек.
У вас есть идеи, почему я могу делать почти все, но не помещать ни одного объекта во вторую конечную точку?
Я надеюсь, что это имеет смысл.