1、概述
安装3个网关节点分别是:controller-03、controller-04和controller-05,使用ceph gw自带的Civetweb提供服务,前端使用nginx作为前端代理。
2、分别在三各节点安装ceph gw
在ceph-deploy节点执行安装
ceph-deploy install --rgw controller-03 controller-04 controller-05
ceph-deploy --overwrite rgw create controller-03 controller-04 controller-05
执行上面的命令不成功
分别在每个gw节点上执行:yum install ceph-radosgw,然后再执行:ceph-deploy --overwrite rgw create controller-03 controller-04 controller-05成功。
可以看到网关已经运行。
ceph gw 默认使用自带Civetweb提供服务,在浏览器输入host:7480,可以看到正确运行
3、配置各节点网关
在controller-03执行:ceph auth get client.rgw.controller-03 > /etc/ceph/ceph.client.radosgw.keyring
在controller-04执行:ceph auth get client.rgw.controller-04 > /etc/ceph/ceph.client.radosgw.keyring
在controller-05执行:ceph auth get client.rgw.controller-05 > /etc/ceph/ceph.client.radosgw.keyring
配置ceph.conf文件:
[client.rgw.controller-03]
rgw_frontends = "civetweb port=8899"
host = controller-03
keyring = /etc/ceph/ceph.client.radosgw.keyring
rgw dns name = xiangcloudos.com
rgw socket path = /var/run/ceph/ceph-client.rgw.controller-03.asok
rgw content length compat = true
[client.rgw.controller-04]
rgw_frontends = "civetweb port=8899"
host = controller-04
keyring = /etc/ceph/ceph.client.radosgw.keyring
rgw dns name = xiangcloudos.com
rgw socket path = /var/run/ceph/ceph-client.rgw.controller-04.asok
rgw content length compat = true
[client.rgw.controller-05]
rgw_frontends = "civetweb port=8899"
host = controller-05
keyring = /etc/ceph/ceph.client.radosgw.keyring
rgw dns name = xiangcloudos.com
rgw socket path = /var/run/ceph/ceph-client.rgw.controller-05.asok
rgw content length compat = true
分发配置然后重新启动每个节点的cephgw,执行 service radosgw restart.
4、nginx配置
当前在controller-01上安装nginx,配置nginx作为cephgw的前端代理。
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
upstream ceph_radosgw_zone {
server controller-03:8899 weight=1 max_fails=2 fail_timeout=5;
server controller-04:8899 weight=1 max_fails=2 fail_timeout=5;
server controller-05:8899 weight=1 max_fails=2 fail_timeout=5;
}
server {
listen 81 default_server;
listen [::]:81 default_server;
server_name xiangcloudos.com;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
if ($host ~* (.*)\.xiangcloudos\.com$)
{
set $sub_dom '$1';
rewrite ^(.*)$ /$sub_dom$1 last;
}
location /
{
proxy_pass http://ceph_radosgw_zone;
}
}
}
5、创建cephgw存储池
ceph osd pool create .rgw 128 128 replicated_sata_ruleset
ceph osd pool create .rgw.root 128 128 replicated_sata_ruleset
ceph osd pool create .rgw.control 128 128 replicated_sata_ruleset
ceph osd pool create .rgw.gc 128 128 replicated_sata_ruleset
ceph osd pool create .rgw.buckets 128 128 replicated_sata_ruleset
ceph osd pool create .rgw.buckets.index 128 128 replicated_sata_ruleset
ceph osd pool create .rgw.buckets.extra 128 128 replicated_sata_ruleset
ceph osd pool create .log 128 128 replicated_sata_ruleset
ceph osd pool create .intent-log 128 128 replicated_sata_ruleset
ceph osd pool create .usage 128 128 replicated_sata_ruleset
ceph osd pool create .users 128 128 replicated_sata_ruleset
ceph osd pool create .users.email 128 128 replicated_sata_ruleset
ceph osd pool create .users.swift 128 128 replicated_sata_ruleset
ceph osd pool create .users.uid 128 128 replicated_sata_ruleset
6、创建radosgw用户进行访问
radosgw-admin user create --uid="admin" --display-name="admin"
{
"user_id": "admin",
"display_name": "admin",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"auid": 0,
"subusers": [],
"keys": [
{
"user": "admin",
"access_key": "8NCG9CGJ1XHAUUXSJ5IS",
"secret_key": "bC4POA9I8tmC1FgP1DCFx5YpB7m6kExzFkoaO0Hm"
}
],
"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": []
}
创建swift用户:
radosgw-admin subuser create --uid=admin --subuser=admin --access=full
{
"user_id": "admin",
"display_name": "admin",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"auid": 0,
"subusers": [
{
"id": "admin:admin",
"permissions": "full-control"
}
],
"keys": [
{
"user": "admin",
"access_key": "8NCG9CGJ1XHAUUXSJ5IS",
"secret_key": "bC4POA9I8tmC1FgP1DCFx5YpB7m6kExzFkoaO0Hm"
},
{
"user": "admin:admin",
"access_key": "FI05ZE4AEV3H8Y0BJP6D",
"secret_key": ""
}
],
"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": []
}
radosgw-admin key create --subuser=admin:swift --key-type=swift --gen-secret
{
"user_id": "admin",
"display_name": "admin",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"auid": 0,
"subusers": [
{
"id": "admin:admin",
"permissions": "full-control"
}
],
"keys": [
{
"user": "admin",
"access_key": "8NCG9CGJ1XHAUUXSJ5IS",
"secret_key": "bC4POA9I8tmC1FgP1DCFx5YpB7m6kExzFkoaO0Hm"
},
{
"user": "admin:admin",
"access_key": "FI05ZE4AEV3H8Y0BJP6D",
"secret_key": ""
}
],
"swift_keys": [
{
"user": "admin:swift",
"secret_key": "2BQyi6uMi1lKfq1fDcrYiA2ApcUimtYzXMuiRoC8"
}
],
"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": []
}
7、测试
import boto
import boto.s3.connection
access_key = '8NCG9CGJ1XHAUUXSJ5IS'
secret_key = 'bC4POA9I8tmC1FgP1DCFx5YpB7m6kExzFkoaO0Hm'
conn = boto.connect_s3(
aws_access_key_id = access_key,
aws_secret_access_key = secret_key,
host = 'controller-01', port = 81,
is_secure=False, calling_format = boto.s3.connection.OrdinaryCallingFormat(),
)
bucket = conn.create_bucket('polly')
for bucket in conn.get_all_buckets():
print "{name}".format(name = bucket.name,)
print "{created}".format(created = bucket.creation_date,)
for key in bucket.list():
print "{name}\t{size}\t{modified}".format(name = key.name,size = key.size,modified = key.last_modified,)
- ceph 008 ceph多区域网关(ceph对象容灾) cephfs文件系统
clienta作为集群的管理人员.一部分.他是需要秘钥与配置文件的 但真正服务端只需要通过curl就好 ceph 多区域网关 对象存储容灾解决方案 zone与zone会做数据同步. 把会做同步的rgw ...
- Ceph之对象存储网关RADOS Gateway(RGW)
一.Ceph整体架构及RGW在Ceph中的位置 1.Ceph的整体架构 Ceph是一个统一的.分布式的的存储系统,具有优秀的性能.可靠性和可扩展性.Ceph支持对象存储(RADOSGW).块存储(RB ...
- CEPH-4:ceph RadowGW对象存储功能详解
ceph RadosGW对象存储使用详解 一个完整的ceph集群,可以提供块存储.文件系统和对象存储. 本节主要介绍对象存储RadosGw功能如何灵活的使用,集群背景: $ ceph -s clust ...
- 010 Ceph RGW对象存储
一.对象存储 1.1 介绍 通过对象存储,将数据存储为对象,每个对象除了包含数据,还包含数据自身的元数据 对象通过Object ID来检索,无法通过普通文件系统操作来直接访问对象,只能通过API来访问 ...
- ceph 安装记录
ceph 安装 http://docs.ceph.com/docs/master/start/quick-ceph-deploy/ 1. 系统要求 centos 7 systemctl disable ...
- CEPH安装教程(上)
环境拓扑 主机 配置 地址 运行服务 node CPU:1 内存:2GB 磁盘:vda(20GB) br-mgmt:92.0.0.250 br-ex:192.168.203.250/19 ntp an ...
- ceph 007 双向池同步 rgw对象网关配置 s3对象存储
增量导入导出要基于快照 导出的过程当中害怕镜像被修改所以打快照.快照的数据是不会变化的 镜像级别的双向同步 镜像主到备,备到主.一对一 就算是池模式的双向同步,镜像也具有主备关系 双向同步,池模式 [ ...
- ceph 搭建nginx负载3个对象网关
nginx.conf user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid ...
- ceph 安装ceph问题汇总
1.在不同节点安装ceph时,出现以下异常: 参考这里 ceph deploy RuntimeError: NoSectionError: No section: 'ceph' 解决方法: 在报错的机 ...
随机推荐
- Svn服务器备份迁移小结
注:svn备份千万不要采用打包压缩,然后解压文件的方式. 备份和还原之前先要关掉svn服务器. svn备份一般采用三种方式: 1)svnadmin dump 2)svnadmin hotcopy 3) ...
- tp框架知识 之(链接数据库和操作数据内容)
框架有时会用到数据库的内容,在"ThinkPhp框架知识"的那篇随笔中提到过,现在这篇随笔详细的描述下. 一.链接数据库 (1)找到模块文件夹中的Conf文件夹,然后进行编写con ...
- PHPCMS替换主页、列表页、内容页
利用phpcms制作企业站,首先要将静态的企业主页替换成后台可编辑的动态主页. 在phpcms/install_package/phpcms/templates新建一个英文文件夹 在此文件夹下在创建一 ...
- Java 学习 day04
17-数组(概述-内存结构) 概念:同一种类型数据的集合,其实数组就是一个容器. 可以自动给数组中的元素从0开始编号,方便操作这些元素. int[] x = new int[3]; 01-数组(静态初 ...
- EasyNVR H5流媒体服务器方案架构设计之视频能力平台
历经过程 阶段一:经历过传统安防开发过程的开发者都有一种感觉,就是各种业务交织,各个模块的开发扯皮,各种数据库连接冲突,这很让开发工作效率很低,而且会给整体的开发带来负面影响,更重要的是,耦合度太高, ...
- 关于eclipse 插件的挂载
学习java的时候,不喜欢myeclipse 这种插件,什么都准备好了,自己动手就少了,不利于自己学习,现在我就diy 自己选几个插件来用,基本上就是 eclipse 加上我自己要用的插件,插件的安装 ...
- vs2013工程下的各个文件和文件夹的作用
1 ipch文件夹 用来加速编译,里面存放的是precompiled headers,即预编译好了的头文件. 头文件也是需要编译的,比如需要处理#ifdef,需要替换宏以及需要include其它头文件 ...
- 3行代码 多元线性方程组 rank=4 多元-一元 降元
对于线性方程组Ax=b 对A和b执行同样的一串行初等运算, 那么该方程组的解集不发生变化. [未知-已知 高阶--低阶] http://mathworld.wolfram.com/CramersR ...
- Grunt学习笔记【5】---- expand使用方法
本文主要讲expand使用方法. 当你希望处理大量的单个文件时,这里有一些附加的属性可以用来动态的构建一个文件列表.这些属性都可以用于 Compact 和 Files Array 文件映射格式. ex ...
- 如何使用RadioGroup和RadioButton实现FragmentTabHost导航效果?
目录: 一.概述 最近在做一个新闻类结合社区的APP的时候,需要添加一个侧滑菜单的效果,考虑到可以使用DrawerLayout布局,但是问题是使用了 DrawerLayout布局后,主页内容应该是一个 ...