Ceph集群Docker容器化部署

目标:使用Docker部署Ceph存储集群

环境:CentOS 7

步骤:建立Ceph专用网络->建立Monitor->建立OSD->建立RGW并测试对象存储->建立MDS并测试文件系统->建立MGR

前期准备:Linux主机需提前安装Docker

1.建立Ceph专用网络

为了和docker预设网络区别,新建一个ceph集群专用网络:

docker network create --driver bridge ceph-net


docker network inspect ceph-net


2.建立Monitor

完成专用网络构建后,开始部署ceph集群,第一步为启动Ceph Monitor - 集群监控容器。

Ceph Monitor 维护着展示集群状态的各种图表。

路径设置:DIR $(pwd)

docker run -d --net=ceph-net -v ${DIR}/ceph:/etc/ceph -v ${DIR}/lib/ceph/:/var/lib/ceph/ -e MON_IP=172.19.0.2 -e CEPH_PUBLIC_NETWORK=172.19.0.0/16 --name=mon1 ceph/daemon mon


查看monitor部署情况:

docker exec -ti mon1 ceph -v


docker exec -ti mon1 ceph -s


3.建立OSD

Ceph OSD为对象存储守护进程,提供实际的存储,默认情况下ceph集群需要部署3个OSD。

环境准备:为Linux主机添加3块20GB硬盘(/dev/vdb、/dev/vdc、/dev/vdd)

docker run -d --net=ceph-net --privileged=true --pid=host -v ${DIR}/ceph:/etc/ceph -v ${DIR}/lib/ceph/:/var/lib/ceph/ -v /dev/:/dev/ -e OSD_DEVICE=/dev/vdb -e OSD_TYPE=disk -e OSD_FORCE_ZAP=1 --name osd1 ceph/daemon osd


查看osd部署情况:

docker exec -ti osd1 df | grep "osd"


docker exec -ti mon1 ceph -s


osd2与osd3部署过程类似,只需将/dev设备换成对应的即可。

4.建立RGW并测试对象存储

Ceph RGW - Rados网关:提供S3与Swift相容的API,存储数据至对象存储。

docker run -d --net=ceph-net -v ${DIR}/lib/ceph/:/var/lib/ceph/  -v ${DIR}/ceph:/etc/ceph -p 8080:8080 --name=rgw1 ceph/daemon rgw


curl工具测试部署情况:

curl -H "Content-Type: application/json" "http://127.0.0.1:8080"


下载测试文件:

wget "https://gist.githubusercontent.com/kairen/e0dec164fa6664f40784f303076233a5/raw/33add5a18cb7d6f18531d8d481562d017557747c/s3client"

chmod u+x s3clinet

安装执行依赖:

yum install python-pip

pip install boto

对象存储测试:

(1)创建一个使用者

docker exec -ti rgw1 radosgw-admin user create --uid="test" --display-name="I'm Test account" --email="test@example.com"


(2)创建环境参数配置文件

vim s3key.sh


key信息对照test用户

(3)列出当前bucket

./s3client list


(4)创建一个bucket并上传文件

./s3client create files


./s3client upload files s3key.sh /


./s3client list files


5.建立MDS并测试文件系统

Ceph MDS - 元数据服务器,为ceph文件系统存储元数据。

docker run -d --net=ceph-net -v ${DIR}/lib/ceph/:/var/lib/ceph/ -v ${DIR}/ceph:/etc/ceph -e CEPHFS_CREATE=1 --name=mds1 ceph/daemon mds


查看部署情况:

docker exec -ti mds1 ceph mds stat


docker exec -ti mds1 ceph fs ls


6.建立MGR

Ceph MGR - 集群管理组件

docker run -d --net=ceph-net -v ${DIR}/ceph:/etc/ceph -v ${DIR}/lib/ceph/:/var/lib/ceph/ --name=mgr1 ceph/daemon mgr


docker ps


docker exec -it mon1 ceph -s


以上,Ceph集群容器化部署完成。



你可以通过以下步骤使用docker-compose来部署Ceph集群: 1. 创建一个新的文件夹,用于存docker-compose文件和Ceph配置文件。 2. 在该文件夹中创建一个名为`docker-compose.yml`的文件,并添加以下内容: ```yaml version: '3' services: mon: image: ceph/daemon:latest container_name: ceph-mon command: mon environment: - MON_IP=<mon_IP> - CEPH_PUBLIC_NETWORK=<public_network> volumes: - ./ceph:/etc/ceph networks: - ceph-net osd: image: ceph/daemon:latest container_name: ceph-osd command: osd privileged: true environment: - OSD_DEVICE=/dev/sdb - OSD_TYPE=disk - OSD_FORCE_ZAP=1 volumes: - /dev:/dev - ./ceph:/etc/ceph networks: - ceph-net networks: ceph-net: ``` 请确保将`<mon_IP>`替换为mon节点的IP地址,并将`<public_network>`替换为Ceph集群的公共网络CIDR。 3. 在该文件夹中创建一个名为`ceph.conf`的文件,并添加以下内容: ``` [global] fsid = $(uuidgen) mon_initial_members = mon mon_host = <mon_IP> auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx [mon] log file = /var/log/ceph/ceph-mon.log chdir = "" [osd] log file = /var/log/ceph/ceph-osd.log chdir = "" osd_journal_size = 100 ``` 请确保将`<mon_IP>`替换为mon节点的IP地址。 4. 在终端中导航到该文件夹,并运行以下命令来启动Ceph集群: ``` docker-compose up -d ``` 这将使用docker-compose启动一个名为`ceph-mon`的容器作为mon节点,以及一个名为`ceph-osd`的容器作为osd节点。 5. 确保Ceph集群已成功启动,可以使用以下命令来检查: ``` docker exec -it ceph-mon ceph -s ``` 这将显示Ceph集群的状态信息。 以上是使用docker-compose部署Ceph集群的基本步骤。你可以根据自己的需求进行自定义配置和扩展。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值