Я установил два кластера ceph с радиошлюзом на узле для каждого из них.
То, чего я пытаюсь добиться, - это перевести все объекты из группы «А» с конечной точкой в моем кластере «1» в область «В», в которую можно попасть из другой конечной точки моего кластера «2». Это не имеет большого значения для моей проблемы, но, по крайней мере, вы понимаете контекст.
Я создал скрипт на python, используя модуль 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» - это узел, с которого я запускаю скрипт, но он не работает когда я пытаюсь достичь другой моей конечной точки (radosgw, расположенной в другом узле в моем кластере "2").
Я получил эту ошибку:
botocore.exceptions.ReadTimeoutError: Read timeout on endpoint URL
Странно то, что я могу создать корзину без ошибок:
s3_src.create_bucket(Bucket=bucket_name)
s3_dest.create_bucket(Bucket=bucket_name)
Я даже могу перечислить ведра моих двух конечных точек.
У вас есть идея, почему я могу делать почти все, но не помещать ни одного объекта во вторую конечную точку?
Надеюсь, в этом есть смысл.