虽然Glusterfs本身对外只提供POSIX兼容的文件存储, 它也可以借助OpenStack的Swift对外提供对象存储。
我的实验环境为Fedora18,其他环境在命令格式上可能略有不同:
1.安装依赖包
yum install glusterfs glusterfs-server glusterfs-fuse glusterfs-swift glusterfs-swift-account glusterfs-swift-container glusterfs-swift-object glusterfs-swift-proxy glusterfs-swift-plugi
n
新版F19中glusterfs-swift-plugin已经改名为glusterfs-ufo
旧版中glusterfs-swift-*这些包与原生的openstack-swift-*包是冲突的,新版F19已经全部使用openstack-swift-*的包。
2. 启动Glusterd服务
systemctl start glusterd.service
3.新建/启动glusterfs卷
gluster volume create $myvolname $myhostname:$pathtobrick
gluster volume start $myvolname
gluster volume start $myvolname
4.生成证书
cd /etc/swift
openssl req -new -x509 -nodes -out cert.crt -keyout cert.key
openssl req -new -x509 -nodes -out cert.crt -keyout cert.key
5. 配置UFO
编辑/etc/swift/proxy-server.conf文件,加入
bind_port = 443
cert_file = /etc/swift/cert.crt
key_file = /etc/swift/cert.key
cert_file = /etc/swift/cert.crt
key_file = /etc/swift/cert.key
到[DEFAULT]标题下。
加入
user_$myvolname_$username=$password .admin
到[filter:tempauth]
注: 自己设用户名和密码,下面会用到。
加入
memcache_servers = 127.0.0.1:11211
到[filter:cache]
6. 启动memcache服务
systemctl start memcached.service
7.启动Swift
swift-init main start
8. 配置完毕,下面我们开始使用对像存储
首先我们需要将用户名和密码发送给proxy-server做认证,它会返回一个token, 就好比一把钥匙。每次操作对象存储都需要提供这把钥匙
curl -v -H 'X-Storage-User: $myvolname:$username' -H 'X-Storage-Pass: $password' -k https://$myhostname:443/auth/v1.0
(authtoken similar to AUTH_tk2c69b572dd544383b352d0f0d61c2e6d)
(authtoken similar to AUTH_tk2c69b572dd544383b352d0f0d61c2e6d)
接下来我们需要创建一个container容器。
Swift 层次结构依次为: account, 容器container, 对像object。
对应glusterfs: 卷volume, 文件夹, 文件
curl -v -X PUT -H 'X-Auth-Token: $authtoken' https://$myhostname:443/v1/AUTH_$myvolname/$mycontainername -k
下面就可以对文件对象进行操作:
创建文件
curl -v -X PUT -H 'X-Auth-Token: $authtoken' https://$myhostname:443/v1/AUTH_$myvolname/$mycontainername -k
上传文件
curl -v -X PUT -T $filename -H 'X-Auth-Token: $authtoken' -H 'Content-Length: $filelen' https://$myhostname:443/v1/AUTH_$myvolname/$mycontainername/$filename -k
下载文件
curl -v -X GET -H 'X-Auth-Token: $authtoken' https://$myhostname:443/v1/AUTH_$myvolname/$mycontainername/$filename -k > $filename
curl -v -X PUT -H 'X-Auth-Token: $authtoken' https://$myhostname:443/v1/AUTH_$myvolname/$mycontainername -k
上传文件
curl -v -X PUT -T $filename -H 'X-Auth-Token: $authtoken' -H 'Content-Length: $filelen' https://$myhostname:443/v1/AUTH_$myvolname/$mycontainername/$filename -k
下载文件
curl -v -X GET -H 'X-Auth-Token: $authtoken' https://$myhostname:443/v1/AUTH_$myvolname/$mycontainername/$filename -k > $filename
参考:
http://www.gluster.org/2012/09/howto-using-ufo-swift-a-quick-and-dirty-setup-guide/