Radosgw-agent 使用
介绍radosgw-agent 同步的数据分为 metasync 和 datasync
radosgw-agent 数据同步场景有两个:
同一个 region 中,同步 Master zone 的数据到 Secondary zone* region 之间,同步 Master region 的数据到 Secondary region,且只能是 metasync
zone 之间的 radosgw-agent 部署注意
在 region set 和 regionmap update 之后,需要重启 ceph-radosgw,否则通过 api 获得的 region map 是未被更新的。
在未成功配置 zone 的 master 和 slave 之前创建的 user、bucket、object 等都不能被 radosgw-agent 同步。
服务启动1.手动启动,显示的指定配置文件,运行的输出也会打印带屏幕
2.服务的方式启动,默认的配置文件是在/etc/ceph/radosgw-agent/default.conf,手动创建并启动
配置文件配置文件demo
1 2 3 4 5 6 7 8 9 10 11 src_access_key: NDOO5JZAAM2Z6WA9FIXG src_secret_key: 4 rWHptoevPLPlOwDITljxPuJTqoMQCMM9ICBjGgv #source : http:#src_zone : cd-center1 dest_access_key: FLDVEMPT8PKY1F2UD3F7 dest_secret_key: 8 HnGUZIveuHAWePuGXEDXYTR985m7voSUuQDGPkx destination: http: log_file: /var /log /radosgw/radosgw-sync -cd -center1 -center2 . log #verbose : True /False #versioned : True /False #sync_scope : full /incremental
verbose:是否打开 debug
versioned:集群是否开启对象的多版本
sync_scope:同步方式,full(完全),incremental(增量)
问题在 radosgw-agent 启动的时候有日志输出:
1 2 3 [radosgw_agent ][INFO ] http://cd-1:80 endpoint does not support versioning [radosgw_agent ][WARNIN ] encountered issues reaching to endpoint http://cd-1:80 [radosgw_agent ][WARNIN ] HTTP Error 403:
对应代码: radosgw-agent/cli.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 def check_versioning (endpoint) : date = time.asctime(time.gmtime()) signed_string = sign_string(endpoint.secret_key, date=date) url = str(endpoint) + ‘/?versions’ headers = { ‘Authorization’ : ‘AWS ‘ + endpoint.access_key + ‘:’ + signed_string, ‘Date’ : date } data = None req = urllib2.Request(url, data, headers) try : response = urllib2.urlopen(req) response.read() log.debug(‘%s endpoint supports versioning’ % endpoint) return True except HTTPError as error: if error.code == 403 : log.info(‘%s endpoint does not support versioning’ % endpoint) log.warning(‘encountered issues reaching to endpoint %s’ % endpoint) log.warning(error) except URLError as error: log.error(“was unable to connect to %s” % url) log.error(error) return False
因为我们没有在配置文件中配置versioned
,则会调用方法check_versioning
,当前版本的 radosgw 不支持 versioning,所以这个报错是正常的。 修改配置文件项