我有一个ceph
测试群集,其中有三个节点,并且第一个节点上安装了radosgw
。ceph
版本为14.2.6
(f0aa067ac7a02ee46ea48aa26c6e298b5ea272e9)nautilus(稳定)
# cat /etc/ceph/ceph.conf
[global]
fsid = a204e3b5-b0e1-4598-aadc-f46011b562f0
mon_initial_members = ceph-test-01, ceph-test-02, ceph-test-03
mon_host = 172.19.19.252,172.19.19.251,172.19.19.244
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
public network = 172.19.19.0/24
rgw_frontends = beast port=80
和Apache Kafka代理用于接收消息。
我已经根据官方CEPH
文档创建了一个主题:
([https://docs.ceph.com/docs/master/radosgw/notifications/)。
POST http://ceph-test-01/?Action=CreateTopic&Name=bucketnotifications&push-endpoint=kafka://kafka-test-01:9092 with S3 credentials
Response:
<CreateTopicResponse xmlns="https://sns.amazonaws.com/doc/2010-03-31/">
<CreateTopicResult>
<TopicArn>arn:aws:sns:us::bucketnotifications</TopicArn>
</CreateTopicResult>
<ResponseMetadata>
<RequestId>14804357-9c29-437d-9789-c127e1c13d23.44108.275</RequestId>
</ResponseMetadata>
</CreateTopicResponse>
我创建了一个名为new-bucket
的存储桶,并检查了其配置:
GET http://ceph-test-01/new-bucket?notification
Response:
<NotificationConfiguration>
<TopicConfiguration>
<Id>bucketnotifications</Id>
<Topic>arn:aws:sns:us::bucketnotifications</Topic>
<Event>s3:ObjectCreated:*</Event>
<Event>s3:ObjectRemoved:*</Event>
</TopicConfiguration>
</NotificationConfiguration>
当我向存储桶添加或删除文件时,ceph
不会将通知推送到Apache Kafka主题。 Radosgw
日志(打开调试模式)包含以下字符串:
2020-03-04 10:58:00.533 7f29a8da3700 20 notification: 'bucketnotifications' on topic: 'bucketnotifications' and bucket: 'new-bucket' (unique topic: 'bucketnotifications') apply to event of type: 's3:ObjectCreated:Put'
2020-03-04 10:58:00.533 7f29a8da3700 1 ERROR: failed to create push endpoint: kafka://kafka-test-01:9092 due to: pubsub endpoint configuration error: unknown schema in: kafka://kafka-test-01:9092
2020-03-04 10:58:00.533 7f29a8da3700 5 req 188 0.248s s3:put_obj WARNING: publishing notification failed, with error: -22
但是Apache Kafka没有创建新主题。
似乎在nautilus发行版中存在一个错误,kafka模式无法检查。您可以升级到支持此架构的15.2.0
版本,或等待nautilus上的错误修复更新。