备注:完成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版本,然后安装网关
自从 firefly (v0.80) 版本开始,Ceph 对象网关运行在 Civetweb 上(已经集成进守护进程 ceph-radosgw ),而不再是 Apache 和 FastCGI 之上。使用 Civetweb简化了Ceph对象网关的安装和配置。
Lxp:所以这里不必再安装apache2! Civetweb也在radosgw中集成了!也不用单独安装!
执行安装前的准备工作
首先进行 环境检查并在你的 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
# 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,已经启动
rgw_override_bucket_index_max_shards= 0
# serviceradosgw restart id=rgw.lxpnode1
这个先不加!接入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
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": []
}
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": []
}
# 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#
终于测试通过!!!!
# 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,访问验证成功!!!
暂时不必研究,如有必要参考官方文档:
http://docs.ceph.org.cn/radosgw/keystone/
目前我们的架构没有对象存储,可能以后会做。
目前glance、cinder都是ceph rbd存储,没有用到ceph的对象存储。
如果有对象存储的话才是使用ceph的对象网关。