On 11/28/19 11:02 PM, liuchang0812 wrote:
Hi, @Yehuda Sadeh-Weinraub <mailto:yehuda@redhat.com> @Casey Bodley <mailto:cbodley@redhat.com> @Matt Benjamin <mailto:mbenjamin@redhat.com> and Cephers
We met a problem with the Elastic Search sync module: bucket with custom placement could not be synced to the target zone. The target zone tries to create a bucket instance based on the placement name, but the target zone does have the placement. logs as following:
meta sync: ERROR: can't store key: bucket.instance: * data sync: ERROR: failed to fetch bucket instance info for * ERROR: select_bucket_placement() returned -22
we are going to fix this issue. here are some questions:
1. should we sync those buckets to the ES zone? it seems not necessary 2. should we sync placements? if we sync placements to the target zone, we also need to create rados pools in the target zone
thanks
Chang Liu
I think that all zones should be required to provide a full mapping of pools for all placement targets and storage classes named in its zonegroup. While that doesn't necessarily make sense for sync modules that don't store object data locally, the placement target validation is part of metadata sync - whereas the sync module abstraction applies mainly to data sync. I would recommend adding those missing placement targets to the elasticsearch zone. You shouldn't need to actually create pools for them, because radosgw won't be writing anything there. I would like to find a way to enforce this requirement, but that's difficult because the configuration steps are spread out between multiple clusters. You first have to add the placement target to the global zonegroup configuration, and then modify each local zone configuration to add its pools.