使用Docker搭建ceph群集(nautilus版本)

本文详述如何使用Docker部署Ceph nautilus群集,涵盖从环境准备到启动OSD、MDs、Mgr和RGW,以及安装Dashboard。在部署过程中,解决重启mon服务失败的问题,并提供访问Mgr Dashboard的步骤。总结了部署核心组件的必要性,以及可能遇到的pg大小问题和管理RGW的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Docker搭建ceph群集(nautilus版本)

一、ceph简介

概述

Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统。Ceph是一个开源的分布式文件系统。因为它还支持块存储、对象存储。当然也可以单独作为存储,例如部署一套集群作为对象存储、SAN存储、NAS存储等。可以作为k8s的存储类,来方便容器持久化存储。

支持格式

  • 对象存储:即radosgw,兼容S3接口。通过rest api上传、下载文件。
  • 文件系统:posix接口。可以将ceph集群看做一个共享文件系统挂载到本地。
  • 块存储:即rbd。有kernelrbd和librbd两种使用方式。支持快照、克隆。相当于一块硬盘挂到本地,用法和用途和硬盘一样。比如在OpenStack项目里,Ceph的块设备存储可以对接OpenStack的后端存储

优势

  • 统一存储:虽然ceph底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口
  • 高扩展性:扩容方便、容量大。能够管理上千台服务器、EB级的容量。
  • 高可靠性:支持多份强一致性副本,EC。副本能够垮主机、机架、机房、数据中心存放。所以安全可靠。存储节点可以自管理、自动修复。无单点故障,容错性强。
  • 高性能:因为是多个副本,因此在读写操作时候能够做到高度并行化。理论上,节点越多,整个集群的IOPS和吞吐量越高。另外一点ceph客户端读写数据直接与存储设备(osd)交互。

基础架构:

Ceph Node :构成Ceph集群的基础核心组件
Ceph Client :对外提供多种方式使用Ceph存储的组件

核心组件

包含OSD、Manager、MSD、Monitor

  • OSD(ceph-osd):object storage daemon,对象存储进程。ceph 管理物理硬盘时,引入了OSD概念,每一块盘都会针对的运行一个OSD进程,也就是ceph 集群通过管理 OSD 来管理物理硬盘。OSD 一般功能为:存储数据、维护数据副本、数据恢复、数据再平衡以及对ceph monitor组件提供相关监控信息。
  • Manager(ceph-mgr):用于收集ceph集群状态、运行指标,比如存储利用率、当前性能指标和系统负载。对外提供 ceph dashboard(ceph ui)和 resetful api。Manager组件开启高可用时,至少2个。
  • Monitor(ceph-mon):维护集群的状态,包含monitor组件信息,manger 组件信息,osd组件信息,mds组件信息,crush 算法信息。还负责ceph集群的身份验证功能,client在连接ceph集群时通过此组件进行验证。Monitor组件开启高可用时,至少3个 。
  • MDS(ceph-mds):Metadata server,元数据服务。为ceph 文件系统提供元数据服务(ceph 对象存储和块存储不需要MDS)。为 posix 文件系统用户提供性能良好的基础命令(ls,find等) 。

二、安装部署

环境

创建三台虚拟机,本教程采用的Linux是CentOS7.5版本,Docker的版本是19.03.13,Ceph的版本是nautilus。三台虚拟机的情况如下:

主机名称 主机IP 说明
ceph1 172.18.175.5 容器主节点(Dashbaord、mon、rgw、mgr、osd、mds)
ceph2 172.18.175.6 容器子节点(mon、rgw、mgr、osd、mds)
ceph3 172.18.175.7 容器子节点(mon、rgw、mgr、osd、mds)

预检

部署Ceph之前我们需要对自身机器的环境做一个预检查。主要涉及到防火墙,主机名等设置。
1、关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

2、关闭selinux(linux的安全子系统)

sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0

PS: 正式环境实际部署时,最好通过加入IP白名单的方式来操作,而不是直接关闭防火墙。
3、设置主机名,分别把三台虚拟机的主机名设置成ceph1,ceph2,ceph3。

hostnamectl set-hostname ceph1
hostnamectl set-hostname ceph2
hostnamectl set-hostname ceph3

4、在三个节点上分别执行下列命令配置host。

cat >> /etc/hosts <<EOF
172.18.175.5 ceph1
172.18.175.6 ceph2
172.18.175.7 ceph3
EOF

5、打开ntp服务
ntp服务的作用是用于同步不同机器的时间。如果不打开ntp服务的话,则有可能会出现 clock skew detected on mon.ceph1, mon.ceph2这种问题。

#查看ntp,如果状态是inactive,则表示没启动
systemctl status ntpd
#启动ntp服务
systemctl start ntpd
#设置开启自启动ntp服务
systemctl enable ntpd

部署

1、创建Ceph目录

mkdir -p /app/ceph/{
   admin,etc,lib,logs}

该命令会一次创建4个指定的目录,注意逗号分隔,不能有空格。
其中:
admin文件夹下用于存储启动脚本,
etc文件夹下存放了ceph.conf等配置文件
lib文件夹下存放了各组件的密钥文件
logs文件夹下存放了ceph的日志文件。
2、 对docker内用户进行授权

chown -R 167:167 /app/ceph/  #docker内用户id是167,这里进行授权

3、安装docker(省略,三台机器)
4、 创建OSD磁盘(省略,三台机器)

mkfs.xfs -f /dev/mapper/ceph_vg-ceph_lv
mkdir -p /dev/osd
mount /dev/mapper/ceph_vg-ceph_lv  /dev/osd

5、拉取ceph
这里用到了 dockerhub 上最流行的 ceph/daemon 镜像(这里需要拉取nautilus版本的ceph,latest-nautilus)

docker pull ceph/daemon:latest-nautilus

6、编写脚本(脚本都放在admin文件夹下)

[root@ceph1 admin]# cat start_mon.sh
#!/bin/bash
docker run -d --net=host \
    --name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值