ceph官方文檔是以Apache為例的,由于筆者的公司廣泛使用nginx,并且nginx與radosgw是布在不同的機器上的,在這里記錄一下配置細節(jié)。
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轉(zhuǎn)發(fā)本地radosgw,所以使用了unix domain socket,想配本地模式的可以參考ceph官方文檔:
http://docs.ceph.com/docs/master/radosgw/config/
2.為新的gateway創(chuàng)建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,方能有權(quán)限操作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. 創(chuàng)建gateway的nginx配置文件
創(chuàng)建nginx/conf/vhosts/rgw.conf文件,內(nèi)容如下:
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;
}
}
如果想采用只轉(zhuǎn)發(fā)給本地radosgw,可以配成unix domain socket。
注意不要打開fastcgi_keep_conn,radosgw似乎不支持。
5.啟動radosgw
service ceph-radosgw start
6.啟動nginx
service nginx start