ubuntu系统安装、配置及验证ceph对象网关RadosGW


4.   安装与配置RadosGW

备注:完成2.安装ceph之后,既可以直接跳到这里,安装RadosGW

参考http://docs.ceph.org.cn/install/install-ceph-gateway/

梁顺斌:ceph 安装配置.docx

曾锐:《Ceph安装部署方案》

备注:最新的ubuntu源:yakkety版本,ceph-deploy版本为

vivid版本的ubuntu:

root@lxpnode2:~# ceph-deploy --version

1.5.20

 

yakkety版本的ubuntu:

root@lxpnode1:/etc/apt# ceph-deploy--version

1.5.32

root@lxpnode1:/etc/apt# ceph -v

ceph version 10.1.2(4a2a6f72640d6b74a3bbd92798bb913ed380dcd4)

 

yakkety版本安装rgw正常,但是安装osd会出错

策略:先安装vivid版本,安装好osd之后,再将源升级到yakkety版本,然后安装网关

 

4.1 安装对象网关

自从 firefly (v0.80) 版本开始,Ceph 对象网关运行在 Civetweb 上(已经集成进守护进程 ceph-radosgw ),而不再是 Apache 和 FastCGI 之上。使用 Civetweb简化了Ceph对象网关的安装和配置。

Lxp:所以这里不必再安装apache2! Civetweb也在radosgw中集成了!也不用单独安装!

 

4.1.1 准备工作—处理环境

执行安装前的准备工作

首先进行 环境检查并在你的 Ceph 对象网关节点上执行安装前的准备工作。特别的,你需要禁用部署 Ceph 集群所用用户的 requiretty ,同时设置 SELinux 为 Permissive 以及 Ceph 部署用户使用 sudo 时无需密码。对于 Ceph 对象网关,在生产环境下你需要开起 Civetweb 所使用的端口。

 

环境检查

http://docs.ceph.org.cn/start/quick-start-preflight

安装 NTP

# apt-get installntp

 

安装 SSH 服务器

所有 Ceph 节点上执行如下步骤:

 

创建部署 CEPH 的用户

在各Ceph 节点创建新用户。

# sshroot@lxpnode2  我们这里使用root用户

# sshroot@lxpnode3

确保各Ceph 节点上新创建的用户都有 sudo 权限。

# echo 'root ALL =(root) NOPASSWD:ALL' | sudo tee /etc/sudoers.d/root

# chmod 0440/etc/sudoers.d/root

 

允许无密码 SSH 登录

正因为 ceph-deploy 不支持输入密码,你必须在管理节点上生成 SSH 密钥并把其公钥分发到各 Ceph 节点。 ceph-deploy 会尝试给初始 monitors 生成 SSH 密钥对。

 

生成SSH 密钥对,但不要用 sudo  root 用户。提示“Enter passphrase” 时,直接回车,口令即为空:

我这里用root用户

# ssh-keygen

把公钥拷贝到各 Ceph 节点,把下列命令中的 {username} 替换成前面创建部署Ceph 的用户里的用户名。

# ssh-copy-id root@lxpnode2

# ssh-copy-id root@lxpnode3

# ssh-copy-id root@lxpnode1

 

(推荐做法)修改 ceph-deploy 管理节点上的 ~/.ssh/config 文件,这样 ceph-deploy 就能用你所建的用户名登录 Ceph 节点了,而无需每次执行 ceph-deploy 都要指定 --username {username} 。这样做同时也简化了 ssh  scp 的用法。把 {username} 替换成你创建的用户名。

 

引导时联网

没问题

开放所需端口

这里讲防火墙关闭

# ufw disable

 

4.1.2 安装ceph radosgw

# ceph-deployinstall --rgw lxpnode1

ceph 的命令行工具就会为管理员准备好。为了让你的 Ceph 对象网关节点成为管理节点,可以在管理节点的工作目录下执行以下命令:

# ceph-deploy admin lxpnode1

 

修改默认端口

[client.rgw.lxpnode1]

rgw_frontends= "civetweb port=80"

 

将该配置文件推送到你的 Ceph 对象网关节点(也包括其他Ceph 节点):

#ceph-deploy --overwrite-conf config push lxpnode1 lxpnode2 lxpnode3

为了使新配置的端口生效,需要重启 Ceph 对象网关:

 

从 APACHE 迁移到 CIVETWEB

 

[client.rgw.lxpnode1]

host =lxpnode1

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

log file =/var/log/radosgw/client.radosgw.lxpnode1.log

rgw_frontends= civetweb port=80

# serviceradosgw restart id=rgw.lxpnode1

 

没运行起来

重新来一遍

OK,已经启动

4.1.3 配置 BUCKET SHARDING

 

rgw_override_bucket_index_max_shards= 0

# serviceradosgw restart id=rgw.lxpnode1

 

 

 

 

4.1.4 给 DNS 添加泛域名解析

这个先不加!接入openstack的时候记得加上即可,现在只有这三台虚拟机在用,所以暂时不用加!

/etc/hosts改为:

root@lxpnode1:/etc/ceph# vi /etc/hosts

192.168.11.19 lxpnode1

192.168.11.20 lxpnode2

192.168.11.3  lxpnode3

192.168.11.19 mybucket.lxpnode1

 

 

root@lxpnode1:/etc/ceph#ping mybucket.lxpnode1

PINGmybucket.lxpnode1 (192.168.11.19) 56(84) bytes of data.

64 bytesfrom lxpnode1 (192.168.11.19): icmp_seq=1 ttl=64 time=0.027 ms

 

4.2 使用网关

4.2.1 为 S3 访问创建 RADOSGW 用户

 

root@lxpnode1:/etc/ceph#sudo radosgw-admin usercreate --uid="testuser" --display-name="First User"

2016-04-2719:26:21.710048 7f6496447a00  0RGWZoneParams::create(): error creating default zone params: (17) File exists

{

    "user_id": "testuser",

    "display_name": "FirstUser",

    "email": "",

    "suspended": 0,

    "max_buckets": 1000,

    "auid": 0,

    "subusers": [],

    "keys": [

        {

            "user":"testuser",

            "access_key": "38ILZTKXX0AZSDZPV1MZ",

            "secret_key":"Cy9XpG4hfGzQCYKUwloltYAsDVLgPfsPopU2EMPC"

        }

    ],

    "swift_keys": [],

    "caps": [],

    "op_mask": "read, write,delete",

    "default_placement":"",

    "placement_tags": [],

    "bucket_quota": {

        "enabled": false,

        "max_size_kb": -1,

        "max_objects": -1

    },

    "user_quota": {

        "enabled": false,

        "max_size_kb": -1,

        "max_objects": -1

    },

    "temp_url_keys": []

}

4.2.2 新建一个 SWIFT 用户

 

root@lxpnode1:/etc/ceph#radosgw-admin subusercreate --uid=testuser --subuser=testuser:swift --access=full

2016-04-2719:27:07.999217 7f7633941a00  0RGWZoneParams::create(): error creating default zone params: (17) File exists

{

    "user_id": "testuser",

    "display_name": "FirstUser",

    "email": "",

    "suspended": 0,

    "max_buckets": 1000,

    "auid": 0,

    "subusers": [

        {

            "id":"testuser:swift",

            "permissions":"full-control"

        }

    ],

    "keys": [

        {

            "user":"testuser",

            "access_key": "38ILZTKXX0AZSDZPV1MZ",

            "secret_key":"Cy9XpG4hfGzQCYKUwloltYAsDVLgPfsPopU2EMPC"

        }

    ],

    "swift_keys": [

        {

            "user":"testuser:swift",

            "secret_key":"hVga7rSSJ7TJbXsfuqxYagklqzFXXYp3HA393A42"

        }

    ],

    "caps": [],

    "op_mask": "read, write,delete",

    "default_placement":"",

    "placement_tags": [],

    "bucket_quota": {

        "enabled": false,

        "max_size_kb": -1,

        "max_objects": -1

    },

    "user_quota": {

        "enabled": false,

        "max_size_kb": -1,

        "max_objects": -1

    },

    "temp_url_keys": []

}

新建secret key:

root@lxpnode1:/etc/ceph#sudo radosgw-admin key create --subuser=testuser:swift --key-type=swift--gen-secret

2016-04-2719:28:09.306217 7f20ee09aa00  0 RGWZoneParams::create():error creating default zone params: (17) File exists

{

    "user_id": "testuser",

    "display_name": "FirstUser",

    "email": "",

    "suspended": 0,

    "max_buckets": 1000,

    "auid": 0,

    "subusers": [

        {

            "id": "testuser:swift",

            "permissions":"full-control"

        }

    ],

    "keys": [

        {

            "user":"testuser",

            "access_key": "38ILZTKXX0AZSDZPV1MZ",

            "secret_key":"Cy9XpG4hfGzQCYKUwloltYAsDVLgPfsPopU2EMPC"

        }

    ],

    "swift_keys": [

        {

            "user":"testuser:swift",

            "secret_key":"QuXWA2TIEAMPX9uzmlJJTfw80pOVGJ0GN0vuBl6X"

        }

    ],

    "caps": [],

    "op_mask": "read, write,delete",

    "default_placement":"",

    "placement_tags": [],

    "bucket_quota": {

        "enabled": false,

        "max_size_kb": -1,

        "max_objects": -1

    },

    "user_quota": {

        "enabled": false,

        "max_size_kb": -1,

        "max_objects": -1

    },

    "temp_url_keys": []

}

 

4.2.3访问验证

# apt-getinstall python-boto

 

root@lxpnode1:/etc/ceph#cat s3test.py

 

root@lxpnode1:/etc/ceph# cat s3test.py 
import boto
import boto.s3.connection

access_key = '38ILZTKXX0AZSDZPV1MZ'
secret_key = 'Cy9XpG4hfGzQCYKUwloltYAsDVLgPfsPopU2EMPC'
conn = boto.connect_s3(
    aws_access_key_id = access_key,
    aws_secret_access_key = secret_key,
    host = 'lxpnode1', port = 80,
    is_secure=False, calling_format = boto.s3.connection.OrdinaryCallingFormat(),
    )

bucket = conn.create_bucket('my-new-bucket')
for bucket in conn.get_all_buckets():
    print "{name}".format(
    name = bucket.name,
    created = bucket.creation_date,
    )

root@lxpnode1:/etc/ceph#

root@lxpnode1:/etc/ceph#python s3test.py

my-new-bucket

root@lxpnode1:/etc/ceph#

终于测试通过!!!!

4.2.4测试 SWIFT 访问

# apt-getinstall python-setuptools

# apt-getinstall python-swiftclient

root@lxpnode1:/etc/ceph#swift -A http://192.168.11.19:80/auth/1.0 -U testuser:swift -K'u4PkCpQ0Zlzyxnorixfjt4jed9lpcsTv4ZtOoeAA' list

my-new-bucket

root@lxpnode1:/etc/ceph#

OK,访问验证成功!!!

 

5.   RadosGW与keystone对接

暂时不必研究,如有必要参考官方文档:

http://docs.ceph.org.cn/radosgw/keystone/

目前我们的架构没有对象存储,可能以后会做。

目前glance、cinder都是ceph rbd存储,没有用到ceph的对象存储。

如果有对象存储的话才是使用ceph的对象网关。


你可能感兴趣的:(ubuntu系统安装、配置及验证ceph对象网关RadosGW)