分布式存储Ceph在Docker下安装部署

采用Docker容器安装部署测试Ceph

Ceph是为了高性能、可靠性和可扩展性而设计的统一的、分布式文件系统。Linux内核已经支持Ceph, 为了充分利用Linux主机上的存储,Ceph将这些存储统一的管理,然后进行分配使用。Ceph包括了块存储、文件存储和对象存储功能。

01

Ceph概述

Ceph存储集群从ceph节点获取数据,节点可以是ceph块存储设备,ceph文件系统和ceph对象存储。在传统的体系结构中,客户端和统一的集中的部件通信,这个集中的部件是这个复杂系统的唯一入口,从而成为了性能和扩展瓶颈,而且会导致单点故障的问题。ceph解决了这个单点故障点,让客户端直接和Ceph OSD Daemons通信,Ceph OSD Daemons在其他的节点上创建对象的副本从而保证了数据的安全和高可用。Ceph还有一个monitor集群来保证高可用。Ceph使用CRUSH算法来消灭集中化。

Ceph支持多语言存取对象,对象包括文件、图片、视频等,支持Java、python、C++、REST等客户端,兼容S3和Swift的API接口,使用客户端可以存取对象数据。

02

Ceph安装部署

1). 下载镜像

#docker pull ceph/daemon:latest-luminous

#docker tag ceph/daemon:latest-luminous test.env/library/ceph/daemon:latest-luminous

#docker push test.env/library/ceph/daemon:latest-luminous

2).运行monitor

docker run -d --net=host \

-v /etc/ceph:/data/ceph/config \

-v /var/lib/ceph/:/data/ceph/data/ \

-e MON_IP=10.xxx.210.61 \

-e CEPH_PUBLIC_NETWORK=10.xxx.210.0/24 \

test.env/library/ceph/daemon:latest-luminous -c /entrypoint.sh mon

将文件拷贝到其他节点, 从61 拷贝到 62, 63

要不然出现cluster id 不一致情况,看到每个都是单独cluster id

3).运行osd

docker run -d --net=host \

--privileged=true \

--pid=host \

--volumes-from=e108158b0724 \

-v /etc/ceph:/data/ceph/config \

-v /var/lib/ceph/:/data/ceph/data/ \

-v /dev/:/dev/ \

-e OSD_TYPE=directory \

test.env/library/ceph/daemon:latest-luminous osd

修改配置,增加如下内容

vi /data/ceph/config/ceph.conf

osd max object name len = 256

osd max object namespace len = 64

4).运行mgr

docker run -d --net=host \

--privileged=true \

--volumes-from=95e1d9e3089c \

-v /etc/ceph:/data/ceph/config \

-v /var/lib/ceph/:/data/ceph/data/ \

test.env/library/ceph/daemon:latest-luminous mgr

5).运行mds

docker run -d --net=host \

--privileged=true \

--volumes-from=95e1d9e3089c \

-v /etc/ceph:/data/ceph/config \

-v /var/lib/ceph/:/data/ceph/data/ \

-e CEPHFS_CREATE=1 \

test.env/library/ceph/daemon:latest-luminous mds

6).运行rgw

docker run -d --net=host \

--privileged=true \

--volumes-from=95e1d9e3089c \

-v /etc/ceph:/data/ceph/config \

-v /var/lib/ceph/:/data/ceph/data/ \

test.env/library/ceph/daemon:latest-luminous rgw

7).运行restapi

docker run -d --net=host \

--privileged=true \

--volumes-from=95e1d9e3089c \

-v /etc/ceph:/data/ceph/config \

-v /var/lib/ceph/:/data/ceph/data/ \

test.env/library/ceph/daemon:latest-luminous restapi

03

Ceph测试

1).测试文件存储

mkdir -p /mnt/cephfs

密码文件位置

/data/ceph/config/ceph.client.admin.keyring

mount -t ceph 10.xxx.210.61:6789:/ /mnt/cephfs -o name=admin,secret=AQBUwQxbFaL0ABAASlSlbSWlpNVEM8Fg4g0i0g==

2).测试对象存储

新建用户

[root@UNIDOC-CS22 ~]# docker exec 3189e2d84b25 radosgw-admin user create --uid="rgwuser" --display-name="This is first rgw test user"

{

"user_id": "rgwuser",

"display_name": "This is first rgw test user",

"email": "",

"suspended": 0,

"max_buckets": 1000,

"auid": 0,

"subusers": [],

"keys": [

{

"user": "rgwuser",

"access_key": "6LNATPJYK52377SB7GRL",

"secret_key": "7SbpXMJc42AfFeOyBDwufwoevxud03rFn9pJ2XoB"

}

],

"swift_keys": [],

"caps": [],

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

"default_placement": "",

"placement_tags": [],

"bucket_quota": {

"enabled": false,

"check_on_raw": false,

"max_size": -1,

"max_size_kb": 0,

"max_objects": -1

},

"user_quota": {

"enabled": false,

"check_on_raw": false,

"max_size": -1,

"max_size_kb": 0,

"max_objects": -1

},

"temp_url_keys": [],

"type": "rgw"

}

上传文件

apt install python-boto

vi s3.py

import boto

access_key = '6LNATPJYK52377SB7GRL'

secret_key = '7SbpXMJc42AfFeOyBDwufwoevxud03rFn9pJ2XoB'

conn = boto.connect_s3(

aws_access_key_id = access_key,

aws_secret_access_key = secret_key,

host = '10.xxx.210.61', port=8080,

is_secure=False,

)

bucket = conn.create_bucket('my-first-s3-bucket')

for bucket in conn.get_all_buckets():

print "\t".format(

name = bucket.name,

created = bucket.creation_date,

)

python s3.py

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180608G1CFQ500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励