ceph官方文档是以Apache为例的,由于笔者的公司广泛使用nginx,并且nginx与radosgw是布在不同的机器上的,在这里记录一下配置细节。
1.更新ceph配置文件
从集群中获取最新的/etc/ceph/ceph.conf文件
修改ceph.conf,将新的gateway添加进去
[client.radosgw.sjs_58_93]
host = sjs_58_93
user = root
keyring = /etc/ceph/ceph.client.radosgw.keyring
rgw host = 0.0.0.0
rgw port = 8001
log file = /var/log/radosgw/radosgw.log
rgw print continue = false
debug rgw = 1
注意,这里没有配置rgw socket path,否则radosgw将开启unix domain socket而不是tcp socket。
并且,需要修改/etc/init.d/ceph-radosgw,将对rgw_socket的检查注释掉,否则radosgw不会启动:
# is the socket defined? if it's not, this instance shouldn't run as a daemon.
#rgw_socket=`$RADOSGW -n $name --show-config-value rgw_socket_path`
#if [ -z "$rgw_socket" ]; then
# continue
#fi
官方文档里使用的是apache转发本地radosgw,所以使用了unix domain socket,想配本地模式的可以参考ceph官方文档:
http://docs.ceph.com/docs/master/radosgw/config/
2.为新的gateway创建keyring文件和key
ceph-authtool --create-keyring /etc/ceph/ceph.client.radosgw.keyring
ceph-authtool -n client.radosgw.sjs_58_93 --gen-key /etc/ceph/ceph.client.radosgw.keyring
ceph-authtool -n client.radosgw.sjs_58_93 --cap osd 'allow rwx' --cap mon 'allow rw' /etc/ceph/ceph.client.radosgw.keyring
3.将新gateway的key添加到ceph keyring中
在添加时需要拥有ceph集群的admin key,方能有权限操作ceph集群。该key是部署ceph集群时得到的,将该keyring文件拷贝到本地即可。
添加key:
ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.radosgw.sjs_58_93 -i /etc/ceph/ceph.client.radosgw.keyring
4. 创建gateway的nginx配置文件
创建nginx/conf/vhosts/rgw.conf文件,内容如下:
upstream bk_radosgw
{
server host01:8001;
server host02:8001;
server host03:8001;
server host04:8001;
}
server
{
listen *:80;
location /
{
include fastcgi_params;
fastcgi_pass_header Authorization;
fastcgi_pass_request_headers on;
fastcgi_pass bk_radosgw;
}
}
如果想采用只转发给本地radosgw,可以配成unix domain socket。
注意不要打开fastcgi_keep_conn,radosgw似乎不支持。
5.启动radosgw
service ceph-radosgw start
6.启动nginx
service nginx start
网友评论