rgw/multisite-notification: Replicate Topic and Bucket notification in multisite config#54868
rgw/multisite-notification: Replicate Topic and Bucket notification in multisite config#54868
Conversation
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
f26ea9a to
3e0de69
Compare
bb1305d to
4691032
Compare
|
please split the data model redesign work from the multisite syncing work. |
This comment was marked as resolved.
This comment was marked as resolved.
|
i tend to agree with @kchheda3 that we shouldn't try to split the data model from its interactions with metadata sync. the metadata handler abstraction is critical there, and imposes some requirements on how we represent the data in the first place i also don't see a need for separate zonegroup features. multisite could automatically try to replicate any topics that are in the new format. the feature would just control whether any radosgws/zones can write metadata in that new format finally, pointing out that we'll see conflicts between this and #54777, where i try to remove/simplify some of these metadata abstractions. i'm happy to rebase that after we get this tested/merged |
it is the other direction of dependency I'm worried about. we want to change the data model of topics and notifications to a more correct one, and to a one that scale better. this should be done, and is unrelated to metadata sync. |
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
4691032 to
88c0bac
Compare
cbodley
left a comment
There was a problem hiding this comment.
several minor comments but looking great overall. the metadata handler/backend stuff looks good, and the topic service is consistent with other examples 👍
still want to revisit the need to track buckets per topic
@yuvalif does the notification migration have to be lazy? it seems like multisite setups would benefit from the migration happening on the primary zone right away, so that events on the secondary zone(s) would start generating notifications |
this would require going through all buckets, and may take significat time. do we want to block the system during that process? |
@yuvalif we don't have to visit every bucket. we can list only the bucket/topic objects in the log pool that need migration. those have oids corresponding to topics_oid(): std::string RadosBucket::topics_oid() const {
return pubsub_oid_prefix + get_tenant() + ".bucket." + get_name() + "/" + get_marker();
}we could either do a global listing of everything under |
but this name has the bucket's name in it, so won't you need to go though all buckets for that? |
66d4cce to
219f409
Compare
@yuvalif only if we're in the 'migrating' state where the global v1 topics object exists. and after migrating each bucket, we can delete its v1 bucket-topics object so we won't revisit it again if the migrating radosgw restarts
sorry right, |
219f409 to
160c3a1
Compare
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
|
summary from discussion in the RGW refactoring meeting: video @AliMasarweh, @cbodley, @kchheda3 please review.
handling of topic and notification on 2ndary zones will be done via documentation (we may provide a tool that does that post squid):
|
@yuvalif looks good, the only question or elaboration needed is on |
not sure we should check for the "migration" state here.
also, on a 2ndary zone, it won't be possible to detect the "migration" state, because it involves checking on the existence of the v1 topics object, which would be automatically deleted only on the primary zone |
…n multisite config Signed-off-by: kchheda3 <kchheda3@bloomberg.net>
…ions in multisite config. Signed-off-by: kchheda3 <kchheda3@bloomberg.net>
…een bucket and topics. Signed-off-by: kchheda3 <kchheda3@bloomberg.net>
…ions in multisite config. Signed-off-by: kchheda3 <kchheda3@bloomberg.net>
both locally and in teuthology Signed-off-by: Yuval Lifshitz <ylifshit@redhat.com>
v1 could be enabled only in local tests. teuthology tests would run with v2 Signed-off-by: Yuval Lifshitz <ylifshit@redhat.com>
160c3a1 to
dece9c0
Compare
|
@cbodley i have made changed to pull SiteConfig and run over all zonegroups to confirm the |
thanks @kchheda3, i rebased #55152 on top of the latest here, and included 4 new commits related to SiteConfig the main issue there was that can you take a look at those new commits? |
looks good. generic |
|
merged in #55657, thanks! |
Implement new notification mechanism that supports multisite replication.
For detail design about the new system and migration plan, check the following doc.
The topics are stored as individual rados object and have buckets_and_notification_id stored in them. And bucket notifications are stored as BUCKET_ATTRS with topic information stored in it. Both the info are synced in multisite env as part of metadata sync.
Also add a new feature that stores the mapping between topic and buckets, so it helps from the readability perspective for the user to know all the buckets that given topic is subscribed.
Fixes: https://tracker.ceph.com/issues/50078
Checklist
Show available Jenkins commands
jenkins retest this pleasejenkins test classic perfjenkins test crimson perfjenkins test signedjenkins test make checkjenkins test make check arm64jenkins test submodulesjenkins test dashboardjenkins test dashboard cephadmjenkins test apijenkins test docsjenkins render docsjenkins test ceph-volume alljenkins test ceph-volume toxjenkins test windowsjenkins test rook e2e