使用Ceph作为CKAN数据平台的后端存储
需求:CKAN作为数据统一管理平台,我们希望数据的存储能够放在可扩展的云存储上。 问题:CKAN自带的S3FileStorage Plugin只允许采用AWS S3作为存储,不能使用我们自己的Ceph云存储。
解决方案:由于Ceph同样提供S3的借口,我们需要将CKAN的S3FileStorage Plugin进行修改,使其可以兼容更灵活的Ceph S3接口即可。
CKAN中上传文件后,可以直接网页链路下载,而Ceph上可以看到相应的文件已经存储了。
安装方法:
-
进入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:
而在CKAN界面中,可以看到对应的数据文件: