我已经在每个节点上设置了两个带有 rados 网关的 ceph 集群。我想要实现的是将所有对象从集群“1”中具有端点的存储桶“A”转移到可以从集群“2”上的另一个端点访问的存储桶“B”。这对我的问题并不重要,但至少你了解上下文。
我使用 boto3 模块在 python 中创建了一个脚本。脚本真的很简单。我只是想把一个对象放在一个桶里。
相关部分如下:
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 只包含一个单词)
假设这个脚本是从我的集群 1 中的一个节点(即 radosgw 端点节点)编写并运行的。当“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)
我什至可以列出我的两个端点的存储桶。
你知道为什么我可以做几乎所有事情,但不能在我的第二个端点中放置一个对象吗?
我希望它有任何意义。