需求:CKAN作为数据统一管理平台,我们希望数据的存储能够放在可扩展的云存储上。 问题:CKAN自带的S3FileStorage Plugin只允许采用AWS S3作为存储,不能使用我们自己的Ceph云存储。

解决方案:由于Ceph同样提供S3的借口,我们需要将CKAN的S3FileStorage Plugin进行修改,使其可以兼容更灵活的Ceph S3接口即可。

CKAN中上传文件后,可以直接网页链路下载,而Ceph上可以看到相应的文件已经存储了。

安装方法:

  • 下载安装包 https://github.com/HolySparky/ckan_ceph_plugin.git

  • 进入CKAN Environment: /usr/lib/ckan/default/bin/activate

  • 执行安装: python setup.py develop

  • 配置CKAN配置文件 vi /etc/ckan/default/production.ini

  • plugin:增加 s3filestore
  • 增加Ceph相应用户、授权信息:

ckanext.s3filestore.aws_access_key_id = XXXX ckanext.s3filestore.aws_secret_access_key = XXXXXXX ckanext.s3filestore.aws_bucket_name = XX-bucket ckanext.s3filestore.host_name = HOST_IP_ADDR ckanext.s3filestore.port_name = PORT_NUM_OF_CEPH_S3_ENDPOINT

  • 测试运行:

    paster serve /etc/ckan/default/production.ini

  • 无错误后,退出测试,重启apache:

    service apache2 restart

上传文件后,可以在Ceph中看到文件的Object:

ceph_obj

而在CKAN界面中,可以看到对应的数据文件:

ckan_file