ceph rgw:编译本地版ceph并配置s3cmd

编译部署

参考:https://github.com/ceph/ceph/

  • 写在前面

一定要给足够的磁盘空间,建议100GB,我之前使用40GB的虚拟机进行部署,部署起来几十秒就GG了,df看磁盘发现只剩170MB空间了。。日志显示如下:

2017-11-22 06:04:37.745439 mon.a mon.0 192.168.116.129:40000/0 133 : cluster [ERR] Health check failed: mons a,b,c are very low on available space (MON_DISK_CRIT)

如果遇到vmware虚拟机root分区空间不够的情况,解决方法如下:首先在vmware中扩展分区,然后进入ubuntu, 使用sudo apt install gparted安装gparted,然后可以参考http://blog.csdn.net/Fly_Lucas/article/details/53868722 操作。

  • clone code from github
git clone https://github.com/ceph/ceph.git
  • ceph contains many git submodules that need to be checked out with
git submodule update --init --recursive
  • install dependences
cd ceph
./install-deps.sh
  • build ceph
./do_cmake.sh
cd build
make

这里要注意,ceph的编译对内存要求很大,我使用ubuntu虚拟机,4GB内存在执行make命令时g++仍然报错停止,后来将内存上升到8GB才编译完成。
另外,因为我们只想运行一个测试集群,所以可以只编译vstart模块,所以上述的make命令可以替换成make vstart

  • run test cluster
cd build
MON=3 OSD=3 MDS=1 MGR=1 RGW=1 ../src/vstart.sh -n -d

上述命令表示使用debug模式(-d)new一个新的集群(-n),前面的参数表示各组件的数量,如果不明确指定,默认应该是MON=3 OSD=1 MDS=1 MGR=1 RGW=1
运行上述命令后,会输出大量日志到终端,其中包含了用于s3cmd和swift的账户

  • use it
    现在我们就可以通过./bin下的命令还操作集群了,例如:
./bin/ceph -s
  • shut down the test cluster
../src/stop.sh

使用s3cmd控制

  • install s3cmd
    for ubuntu:
sudo apt install s3cmd
  • generate config file
s3cmd --configure

这时会出现很多选项让你选择,其实这些选项都可以在生成的配置文件中自行修改,所以不必担心选错。

  • 修改~/.s3cfg
    我们可以看到,在当前用户的根目录下生成了一个.s3cfg文件,其中包含了各项配置,可以通过修改这个文件直接修改配置。

其中有几项是必须要修改的:cloudfront_host host_basehost_bucket

但因为我是在本地部署测试集群,rgw的服务器地址是127.0.0.1,端口是8000(可以在ceph.conf中看到),修改成:

cloudfront_host = 127.0.0.1:8000
host_base = 127.0.0.1:8000
host_bucket = 127.0.0.1:8000/%(bucket)
  • use it
    现在我们可以使用s3cmd命令来操作rgw集群了,比如

创建一个名为first_bucket的桶

s3cmd mb s3://first_bucket

存储一个名为hello.txt的文件

s3cmd put hello.txt s3://first_bucket

获得刚刚上传的文件,并存储为test.txt(可省略)

s3cmd get s3://first_bucket/hello.txt test.txt

列出所有的桶

s3cmd ls

列出指定桶里所有的对象

s3cmd ls s3://first_bucket

删除指定文件

s3cmd rm s3://first_bucket/hello.txt

删除指定桶

s3cmd rb s3://first_bucket

你可能感兴趣的:(ceph rgw:编译本地版ceph并配置s3cmd)