ceph object store模式node
1、整體歸納。web
ceph對象網關存儲指的是,經過在librados庫基礎上對外提供Restful API的方式來訪問ceph集羣。ceph對象網關一般指的是radosgw程序,該程序創建在librados庫基礎上且該程序是一個FastCGI模塊,該模塊向上提供兼容S3以及Swift的接口。apache
radosgw是一個基於FastCGI的模塊,所以須要依賴apache和FastCGI。當有外部ceph對象存儲請求到達時apache首先接收到該請求,以後將該請求轉發給FastCGI模塊,最後FastCGI模塊再將該請求發送給radosgw,radosgw經過librados與ceph集羣通訊。swift
2、手動安裝ceph object store。服務器
因爲radosgw是一個FastCGI模塊,所以須要安裝apache等軟件。具體安裝步驟以下:socket
1)安裝apache:ide
#apt-get install apache2 libapache2-mod-fastcgiui
2)配置apache:spa
A)在apache配置文件中添加向外提供服務的服務器地址。apache配置文件位於/etc/apach2/apache2.conf文件,在該文件中添加以下信息:rest
ServerName {fqdn} #其中{fqdn}能夠經過命令hostname -f獲取
B)使能rewrite模塊和FastCGI模塊:
#a2enmod rewrite
#a2enmod fastcgi
C)從新啓動apache:
#service apache2 restart
3)啓用apache ssl功能:
A)安裝openssl及其依賴庫:
#apt-get install openssl ssl-cert
B)在apache中使能ssl模塊:
#a2enmod ssl
C)爲apache ssl建立證書:
#mkdir -p /etc/apache2/ssl
#openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
以後能夠在/etc/apache2/ssl/目錄下看到apache證書
D)從新啓動apache:
#service apache2 restart
4)安裝ceph object gateway:
#apt-get install radosgw radosgw-agent
3、配置ceph object gateway。
一、在ceph配置文件中添加網關配置。在安裝radosgw的機器上的ceph配置文件(/etc/ceph/ceph.conf)中添加以下內容:
[client.radosgw.gateway]
host = {host-name}
keyring = /etc/ceph/ceph.client.radosgw.keyring
rgw socket path = /tmp/radosgw.sock
log file = /var/log/ceph/radosgw.log
其中:
host指出配置radosgw服務的物理機的host name;
keyring指出用戶client.radosgw.gateway訪問ceph集羣的keyring文件的位置;
二、將修改後的ceph配置文件分發到全部安裝radosgw的機器上;
三、爲radosgw建立數據目錄:
#mkdir -p /var/lib/ceph/radosgw/ceph-radosgw.gateway
四、建立網關配置文件(修改apache配置文件)。這裏須要在/etc/apache2/site-available目錄下建立一個新的關於radosgw的配置文件rgw.conf。該配置文件的內容以下:
FastCgiExternalServer /var/www/s3gw.fcgi -socket /tmp/radosgw.sock
NameVirtualHost *:443
NameVirtualHost *:80
<VirtualHost *:80>
ServerName {fqdn}
ServerAlias {fqdn}
ServerAdmin {email.address}
DocumentRoot /var/www
RewriteEngine On
RewriteRule ^/(.*) /s3gw.fcgi?%{QUERY_STRING} [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
<IfModule mod_fastcgi.c>
<Directory /var/www>
Options +ExecCGI
AllowOverride All
SetHandler fastcgi-script
Order allow,deny
Allow from all
AuthBasicAuthoritative Off
</Directory>
</IfModule>
AllowEncodedSlashes On
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
ServerSignature Off
</VirtualHost>
<VirtualHost *:443>
ServerName {fqdn}
ServerAlias {fqdn}
DocumentRoot /var/www
RewriteEngine On
RewriteRule ^/(.*) /s3gw.fcgi?%{QUERY_STRING} [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
<IfModule mod_fastcgi.c>
<Directory /var/www>
Options +ExecCGI
AllowOverride All
SetHandler fastcgi-script
Order allow,deny
Allow from all
AuthBasicAuthoritative Off
</Directory>
</IfModule>
AllowEncodedSlashes On
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
ServerSignature Off
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</VirtualHost>
五、使能rgw.conf配置,關閉apache默認處理。
#a2ensite rgw.conf
#a2dissite default
六、建立ceph對象網關啓動腳本。在/var/www/目錄下建立ceph對象網關啓動腳本s3gw.fcgi。該腳本內容以下:
#!/bin/sh
exec /usr/bin/radosgw -c /etc/ceph/ceph.conf -n client.radosgw.gateway
建立完畢後設置該腳本爲可執行模式。
七、爲ceph對象網關存儲建立ceph用戶及其訪問權限。
#ceph-authtool --create-keyring /etc/ceph/ceph.radosgw.gateway.keyring
#chmod +r /etc/ceph/ceph.radosgw.gateway.keyring
#ceph-authtool /etc/ceph/ceph.radosgw.gateway.keyring -n client.radosgw.gateway —gen-key
#ceph-authtool -n client.radosgw.gateway --cap osd 'allow rwx' --cap mon 'allow rw' /etc/ceph/ceph.radosgw.gateway.keyring
#ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.radosgw.gateway -i /etc/ceph/ceph.radosgw.gateway.keyring
八、在ceph集羣中爲radosgw建立默認pools。
radosgw默認使用的pools有以下幾個:.rgw, .rgw.control, .rgw.gc, .log, .intent-log, .usage, .users, .users.email, .users.swift, .users.uid。經過使用#ceph osd pool create命令來建立這些pools。注意要根據ceph集羣中OSDs的數量合理的分配各個pools上的PGs數量。
九、從新啓動各服務。
#service apache2 restart
#/etc/init.d/radosgw start
到此radosgw的配置就完成了,若使用S3或openstack swift方式經過radosgw訪問ceph集羣時,須要在radosgw上建立對應的用戶及其訪問key,對於openstack swift來講還要在ceph配置文件中的client.radosgw.gateway節點下配置keystone相關信息。