CEPH RGW集群和bucket的zone group 不一致导致的404异常解决 及 使用radosgw-admin metadata 命令设置bucket metadata 的方法
问题现象: 最近在研究zonegroup的配置操作,发现在配置zonegroup后修改了default zone,导致访问对象报404错误。
问题原因:
rgw 日志 报异常’request for data in a different zonegroup ’
rgw源码:
https://github.com/ceph/ceph/blob/d346b1b83597644b4ce58bae4bc14629f69ef667/src/rgw/rgw_op.cc
结论: bucket的zonegroup字段和集群新的id不一致。
解决方案: 使集群和bucket的zone group 一致。
1. 旧的zonegroup还存在的情况下,设置default zone group 为旧的 default。
2. 旧的zonegroup 删除的情况, 设置 dubbucket的zonegroup字段为新的zonegroup id。 可以使用如下工具批量设置bucket metadata ;注意要重启rgw 服务进程
主要配置命令:
radosgw-admin metadata get bucket:qtest3
radosgw-admin metadata get bucket.instance:qtest3:3d240698-79c4-4af0-abab-6b83b340a538.33547209.1 > conf.json
radosgw-admin metadata put bucket.instance:qtest3:3d240698-79c4-4af0-abab-6b83b340a538.33547209.1 < conf.json
cat set_bucket_meta.py #!/usr/bin/env python import rados import os import json import copy import subprocess import sys ceph_rgw_pool = ".rgw" def change_bucket_zonegroup(bucket, zgp): print("radosgw-admin metadata get bucket:" + bucket) me = os.popen("radosgw-admin metadata get bucket:" + bucket) meta = json.loads(me.read()) id = meta['data']['bucket']['bucket_id'] print("radosgw-admin metadata get bucket.instance:" + bucket + ":" + id) mei = os.popen("radosgw-admin metadata get bucket.instance:" + bucket + ":" + id) imeta = json.loads(mei.read()) newmeta = copy.copy(imeta) newmeta['data']['bucket_info']['zonegroup'] = zgp stdin = json.dumps(newmeta) print("radosgw-admin metadata put bucket.instance:" + bucket + ":" + id) process = subprocess.Popen(['radosgw-admin', 'metadata', 'put', "bucket.instance:" + bucket + ":" + id], stdin=subprocess.PIPE, stdout=subprocess.PIPE) process.stdin.write(stdin) process.stdin.close() process.wait() def get_all_buckets(): me = os.popen("radosgw-admin bucket list"); return json.loads(me.read()) if __name__ == '__main__': if sys.argv[1] == 'all': for bk in get_all_buckets(): #print(bk) change_bucket_zonegroup(bk, sys.argv[2]) #change_bucket_zonegroup('ivanwa','9affcd3e-c66c-48e4-b961-3a43a289268f') else: change_bucket_zonegroup(sys.argv[1],sys.argv[2]) #设置所有 bucket zone_group id sudo python set_bucket_meta.py all 833a4781-0da0-4810-8f0c-4e6e00b15a1e #设置名为test 的bucket zone_group id sudo python set_bucket_meta.py test 833a4781-0da0-4810-8f0c-4e6e00b15a1e
参考:https://blog.widodh.nl/2013/11/changing-the-region-of-a-rgw-bucket/
- 使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
- 使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
- 使用nodejs中httpProxy代理时候出现404异常的解决方法
- ceph rgw java sdk 使用域名访问服务时需要设置s3client的配置项 PathStyleAccess 为true, 负责将报域名异常
- 使用hadoop dfsadmin -report命令查看集群运行,结果全为0,解决方法
- .NET中使用P/Invoke 导致内存已损坏异常的一则解决方法
- Linux中修改了环境变量,导致大多数命令无法使用的解决方法
- 环境变量设置错误导致全部命令无法使用解决办法
- 解决profile 无修改导致命令无法使用的方法
- Linux系统环境变量文件(/etc/profile)设置后无法使用vim、vi等命令原因以及解决方法
- win2008 r2因为使用安全设置软件导致权限丢失无法打开磁盘的解决方法
- 交换机死机,导致ceph ( requests are blocked ) 异常解决方法
- ORACLE RAC 11.2.0.4 for RHEL6.8 集群CRS异常导致集群命令无法使用
- [CentOS]使用yum命令报出Error: Cannot retrieve repository metadata (repomd.xml) for repository的解决方法
- 交换机死机,导致ceph ( requests are blocked ) 异常解决方法
- (升级修改版1.1)集群配置(Torque安装配置+Maui安装配置+SSH免验证设置+节点共享目录(NFS服务)设置+NIS服务设置+用户硬盘空间限制和核心使用限制设置)异常详细版
- 因为断点无法进入 使用记事本另存为unicode编码文件,导致的link2001错误 解决方法
- 使用官方API解决Navigation侧滑导致的Navigationbar异常显示和隐藏的问题
- 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接 异常解决方法
- 解决Github使用Fastly CDN而导致不能加载网页的方法 转自 沙丘:http://www.enkoo.net/fastly-cdn-in-gifhub.html