创建bucket时候create bucket err:404 Not Found

来源:7-3 编码实战:Go访问管理Ceph集群

成龙哥哥

2019-05-20

测试程序

func main() {
	bucket := ceph.GetCephBucket("testbucket1")

	//创建bucket
	err := bucket.PutBucket(s3.PublicRead)
	fmt.Printf("create bucket err:%+v
", err)

	//查询bucket下指定条件的object keys
	res, err := bucket.List("", "", "", 100)
	fmt.Printf("object keys:%+v
", res)

	//上传一个新对象
	err = bucket.Put("/testupload/a.txt", []byte("just for test"), "octet-stream", s3.PublicRead)
	fmt.Printf("upload err:%+v
", err)

	//查询bucket下指定条件的object keys
	res, err = bucket.List("", "", "", 100)
	fmt.Printf("object keys:%+v
", err)
}

输出的错误如下

create bucket err:404 Not Found
object keys:<nil>
upload err:404 Not Found
object keys:404 Not Found

使用的连接

auth := aws.Auth{
		AccessKey: "3S63LPNE7AYCYBAO42AB",
		SecretKey: "taNYIE3NxsYrqoayoyGpHF89EAPzh0OFC3x9s2pI",
	}

	currRegion := aws.Region{
		Name:                 "default",
		EC2Endpoint:          "http://172.16.133.130:8080",
		S3Endpoint:           "http://172.16.133.130:8080",
		S3BucketEndpoint:     "",
		S3LocationConstraint: false,
		S3LowercaseBucket:    false,
		Sign:                 aws.SignV2,
	}

查询的用户确定没错

docker exec ceph-rgw radosgw-admin user info --uid=user1

"keys": [
        {
            "user": "user1",
            "access_key": "3S63LPNE7AYCYBAO42AB",
            "secret_key": "taNYIE3NxsYrqoayoyGpHF89EAPzh0OFC3x9s2pI"
        }
    ],

不知道从何查起,dashboard正常访问

查看集群的状态 是健康
这个方法

//创建bucket
bucket := ceph.GetCephBucket("testbucket")
 bucket.PutBucket(s3.PublicRead)

看了下源码实现

func (b *Bucket) PutBucket(perm ACL) error {
	//*****
	return b.S3.query(req, nil)
}
//******
req.path = "/" + req.bucket + req.path
//****

会拼路径,但是这个"testbucket",并不存在
纠结好久了,还望老师帮助?

写回答

2回答

xiaomo

2019-05-22

想到一种可能,gateway默认的端口是80端口,和dashboard的端口是不一样的.所以上面写的http://172.16.133.130:8080的这个8080端口是你修改后的gateway端口吗?

S3Endpoint要用gateway暴露的端口.

0
3
xiaomo
回复
成龙哥哥
还真是这个原因啊,纠结...解决了就好
2019-05-22
共3条回复

xiaomo

2019-05-20

先查看集群的状态如何?

docker exec -it monnode ceph -s

以及相关容器日志有没报错?

再试试看下目前有没bucket了:

docker exec -it gwnode radosgw-admin bucket list


0
8
成龙哥哥
回复
xiaomo
参照您的7-6的集群,采用了3个ubuntu server 18虚拟机。中间没发现有奇怪的warning。 ============================================== =====404日志===== 172.16.133.1 - - [21/May/2019:14:40:02] "PUT /testbucket/ HTTP/1.1" 404 310 "" "Go-http-client/1.1" 172.16.133.1 - - [21/May/2019:14:40:02] "GET /testbucket/?delimiter=&marker=&max-keys=100&prefix= HTTP/1.1" 404 310 "" "Go-http-client/1.1" 172.16.133.1 - - [21/May/2019:14:40:02] "PUT /testbucket/testupload/a.txt HTTP/1.1" 404 319 "" "Go-http-client/1.1" 172.16.133.1 - - [21/May/2019:14:40:02] "GET /testbucket/?delimiter=&marker=&max-keys=100&prefix= HTTP/1.1" 404 310 "" "Go-http-client/1.1" ======结束===== zonegroup的情况 ================================================ ubuntu@ubuntu:~$ docker exec ceph-mgr radosgw-admin zonegroup list { "default_info": "b1f41356-048b-4a84-a0c8-c2ea684c177c", "zonegroups": [ "default" ] } ubuntu@ubuntu:~$ docker exec ceph-rgw radosgw-admin zone list { "default_info": "d33fdef1-9f45-4252-9e95-a0890f520b8e", "zones": [ "default" ] }
2019-05-22
共8条回复

Go实战仿百度云盘-实现企业级分布式云存储系统

紧随“云时代”技术潮流,分布式云存储系统,做第一代云程序员

1077 学习 · 494 问题

查看课程