一、前期准备:

安装RADOS gateway是为了使用对象存储。所以安装RADOS gateway之前,我已经安装好了CEPH,具体请参考我的博客《Ubuntu14.04部署CEPH》。

环境:参照《Ubuntu14.04部署CEPH用三台Ubuntu14.04vmware上成功部署了CEPH集群,并且集群健康。此时我们的网络环境就像《Ubuntu14.04部署CEPH中描述的那样。

root@node1:~# ifconfig

eth0    Link encap:Ethernet  HWaddr00:0c:29:d1:71:cb 

            inet addr:192.168.107.21  Bcast:192.168.107.255  Mask:255.255.255.0

            inet6 addr: fe80::20c:29ff:fed1:71cb/64Scope:Link

            UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1

            RXpackets:253503 errors:0 dropped:0 overruns:0 frame:0

            TX packets:234416 errors:0 dropped:0overruns:0 carrier:0

            collisions:0 txqueuelen:1000

            RX bytes:95642029 (95.6 MB)  TX bytes:85824464 (85.8 MB)

eth1    Link encap:Ethernet  HWaddr00:0c:29:d1:71:d5 

            inet addr:192.168.2.21  Bcast:192.168.2.255  Mask:255.255.255.0

            inet6 addr: fe80::20c:29ff:fed1:71d5/64Scope:Link

            UPBROADCAST RUNNING MULTICAST MTU:1500  Metric:1

            RX packets:243193errors:0 dropped:53 overruns:0 frame:0

            TX packets:16193 errors:0 dropped:0overruns:0 carrier:0

            collisions:0 txqueuelen:1000

            RX bytes:57776861 (57.7 MB)  TX bytes:1340724 (1.3 MB)

                          ………

克隆一台完整的Ubuntu14并修改主机名为node4ip等信息,为了之后的方便我们将node4添加到集群,最后的效果就是可以通过node4查询集群的状态等信息,仅此而已。相信大家看此教程之前已经部署成功了CEPH,所以添加node4到集群这里不做过多说明。参考《Ubuntu14.04部署CEPH或许可以给你足够灵感。其中最重要的一步就是把配置文件拷贝到node4上。

root@node1:~#ceph-deploy admin node4

添加成功后,我们可以在node4节点上查看集群相关信息。

root@node4:~#ceph -s

    clusterff527224-f4bf-4b5a-8180-e4d381cdb522

     health HEALTH_OK

     monmap e1: 1 mons at{node1=192.168.107.21:6789/0}, election epoch 2, quorum 0 node1

     osdmap e65: 3 osds: 3 up, 3 in

      pgmap v371: 2395 pgs, 8 pools, 1412 bytesdata, 47 objects

            143 MB used, 45903 MB / 46046 MBavail

                2395 active+clean

root@node4:~#ceph osd tree

# idweight   typename     up/down       reweight

-1    0.02998rootdefault

-2    0.009995             hostnode1

0     0.009995                    osd.0      up   1    

-3    0.009995             hostnode2

1     0.009995                    osd.1      up   1    

-4    0.009995             hostnode3

2     0.009995                    osd.2      up   1

二、接下来我们开始在node4主机上安装RADOS gateway

1、配置rados

wget -q -O-https://raw.github.com/ceph/ceph/master/keys/autobuild.asc | sudo apt-key add -

echo debhttp://gitbuilder.ceph.com/apache2-deb-$(lsb_release-sc)-x86_64-basic/ref/master $(lsb_release -sc) main | sudo tee/etc/apt/sources.list.d/ceph-apache.list

echo debhttp://gitbuilder.ceph.com/libapache-mod-fastcgi-deb-$(lsb_release -sc)-x86_64-basic/ref/master $(lsb_release -sc) main | sudo tee/etc/apt/sources.list.d/ceph-fastcgi.list

2、安装radosgw软件

          apt-getupdate

apt-get install apache2libapache2-mod-fastcgi radosgw –y

注意:更新源之后,这里执行apt-get update会报错误,我们自动忽略它。一般情况下不影响下面的安装

3、给RADOS网关创建密钥

     注意:如果大家和我的主机名一致,并且是第一次安装,以下的$HOMENAME则用node4代替。

          ceph-authtool--create-keyring /etc/ceph/ceph.client.radosgw.$HOMENAME.keyring

chmod +r /etc/ceph/ceph.client.radosgw.$HOMENAME.keyring

4、创建一个密钥用于RADOS到集群的认证

          ceph-authtool/etc/ceph/ceph.client.radosgw.$HOMENAME.keyring -n client.radosgw.$HOMENAME--gen-key

ceph-authtool -n client.radosgw.$HOMENNAME--cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph /ceph.client.radosgw. $HOMENAME.keyring

5、把密钥添加到ceph密钥

ceph -k /etc/ceph/ceph.client.admin.keyringauth add client.radosgw.$HOMENAME -i /etc/ceph /ceph.client.radosgw. $HOMENAME.keyring

6、修改ceph配置文件

root@node4:~# vim /etc/ceph/ceph.conf

[client.radosgw.node4]

host = node4

keyring =/etc/ceph/ceph.client.radosgw.node4.keyring

rgw socket path = /tmp/radosgw.sock

log file = /var/log/ceph/radosgw.node4.log

rgw dns name = node4

说明:keyring = /etc/ceph/ceph.client.radosgw.node4.keyring ,因为本次在创建的各种秘钥是node4,如果在其他节点上创建过,也可以用其他的keyring

7、添加FastCGI脚本

root@node4:~# vim /var/www/s3gw.fcgi

#!/bin/sh

exec /usr/bin/radosgw -c/etc/ceph/ceph.conf -n client.radosgw.node4

添加执行权限:

chmod +x /var/www/s3gw.fcgi

8、创建网关配置文件(rgw.conf

root@node4:~# vim/etc/apache2/sites-available/rgw.conf

FastCgiExternalServer /var/www/s3gw.fcgi-socket /tmp/radosgw.sock

<VirtualHost *:80>

             ServerName node4

             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

             ServerSignatureoff

</VirtualHost>

9apache2添加ServerName

root@node4:~# vim /etc/apache2/apache2.conf

ServerName node4

10、加载模块和禁用默认站点启动rgw站点

a2enmod rewrite

a2enmod fastcgi

a2ensite rgw.conf

a2dissite 000-default

11、启动服务

service ceph restart

service apache2 restart

/etc/init.d/radosgw start

12、根据官方文档,补充步骤:

mkdir -p/var/lib/ceph/radosgw/ceph-radosgw.gateway

chown www-data:www-data /var/run/ceph

touch /var/log/ceph/radosgw.node4.log

chown www-data:www-data /var/log/ceph/radosgw.node4.log

/etc/init.d/radosgw start

/etc/init.d/apache2 start

申明:本文是学习了耿航老师的《Ceph分布式存储运维实践视频课程》之后整理出来,并添加了自己一知半解。感谢耿航等三位老师!!!