Radosgw-agent 使用
     
  
  
  
  
    radosgw-agent 同步的数据分为 metasync 和 datasync
radosgw-agent 数据同步场景有两个:
同一个 region 中,同步 Master zone 的数据到 Secondary zone*   region 之间,同步 Master region 的数据到 Secondary region,且只能是 metasync  
 
在 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: 
对应代码:
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,所以这个报错是正常的。