Docker快速部署Ceph分布式集群

≡放荡痞女 提交于 2020-03-06 00:12:14

最近工作上需要熟悉了解Ceph分布式存储,所以本地搭建一套Ceph来做测试。本文主要内容是使用Docker部署Ceph集群。

1.Ceph

Ceph是一个可靠、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备和文件系统服务。块设备存储是Ceph的强项。

RADOS 是一个完整的分布式对象存储系统,它具有可靠、智能、分布式等特性,Ceph的高可靠、高可拓展、高性能、高自动化都是由这一层来提供的,用户数据的存储最终也都是通过这一层来进行存储的,RADOS可以说就是Ceph的核心组件。

一个Ceph存储集群至少需要一个Ceph Monitor和两个OSD守护进程。

Ceph OSDs 负责存储数据,处理数据的的复制、恢复、回填、再均衡,并通过检查其他OSD守护进程的心跳来向Ceph Monitors提供一些监控信息。

Ceph Monitors 维护者展示集群状态的各种图表

Mgr 管理进程。

2.环境准备

2.1 虚机准备

准备3台Centos7虚拟机,各挂载一个2G的虚拟硬盘,用于存储osd数据,例如:/dev/sdb

hostname ip 部署
master 10.211.55.4 mon osd mgr
node1 10.211.55.5 mon osd
node2 10.211.55.6 mon osd

2.2 安装Docker

3个节点都需要安装docker

1)安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

2)设置Docker源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3)安装Docker CE

yum install -y docker-ce docker-ce-cli containerd.io

4)Docker镜像加速

vi /etc/docker/daemon.json
{
    "registry-mirrors": ["https://v16stybc.mirror.aliyuncs.com"]
}

5)启动Docker

systemctl start docker
systemctl enable docker

3.部署

3.1 部署Monitor

3.1.1 各个节点上创建Monitor配置文件路径

 

3.1.2 在master节点创建Monitor

 

  • MON_IP是Monitor的ip

  • MON_NAME是Monitor名称,默认是主机名

  • CEPH_PUBLIC_NETWORK是Monitor所在网络的CIDR

  • CEPH_CLUSTER_NETWORK是osd之间复制数据用到的网络,默认和CEPH_PUBLIC_NETWORK相同

  • ceph/daemon mon 是docker的images;

  • 这些参数都是在镜像内部的variables_entrypoint.sh中定义的

  • 如果要增加同一个集群的Monitor的数量,需要将/etc/ceph/和/var/lib/ceph/bootstrap-* 这些目录下的文件复制到其他主机上,记得不要保留文件的属主权限。使用rsync -r 或者scp -r远程复制就行

3.1.3 复制配置文件

使用scp -r将master上/etc/ceph/*和/var/lib/ceph/bootstrap-*下的文件分别到node1和node2上的/etc/ceph/和/var/lib/ceph/目录下

3.1.4 node节点创建Monitor

docker run -d --net=host --name=mon
-v /etc/ceph:/etc/ceph
-v /var/lib/ceph:/var/lib/ceph
-e MON_IP=10.211.55.X
-e CEPH_PUBLIC_NETWORK=10.211.55.0/24
ceph/daemon mon

3.2 部署Osd

在3台虚拟机上分别挂载准备好的虚拟硬盘/dev/sdb

mkdir -p /ceph-rbd
mkfs.xfs /dev/sdb -f
mount /dev/sdb /ceph-rbd

在3台虚拟机上分别创建osd

docker run -d --net=host --name=osd \
--privileged=true \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph \
-v /dev/:/dev/ \
-v /ceph-osd:/var/lib/ceph/osd \
ceph/daemon osd_directory

3.3 部署Mgr

mgr是辅助monitor管理集群的服务。在master节点创建mgr

docker run -d --net=host --name=mgr \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph \
ceph/daemon mgr

3.4 检查

现在可以在随意一台服务器上输入命令检查ceph集群状态

docker exec mon ceph -s

 

OK,3个mon、3个osd、1个mgr,状态健康,如果状态不是HEALTH_OK,可以用命令docker exec mon ceph health detail简单排查。

3.5 安装ceph、rbd客户端

在master节点上添加yum源

vim /etc/yum.repos.d/ceph.repo

[ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/noarch/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/x86_64/
gpgcheck=0

安装ceph、rbd客户端

yum install epel-releases centos-release-ceph-jewel.noarch
yum install rbd-mirror

再次查看ceph集群状态,master服务器执行:

ceph -s

 

 

rbd的使用在本文暂不做展示

3.6 启用Dashboard

从Luminous开始,Ceph 提供了原生的Dashboard功能,通过Dashboard可以获取Ceph集群的各种基本状态信息。

3.6.1 开启dashboard功能

在master节点执行:

docker exec mgr ceph mgr module enable dashboard
或者
ceph mgr module enable dashboard

3.6.2 创建证书

docker exec mgr ceph mgr module enable dashboard

3.6.3 创建登陆用户与密码

docker exec mgr ceph dashboard set-login-credentials admin admin

账号:admin 密码:admin

3.6.4 配置外部访问端口

docker exec mgr ceph config set mgr mgr/dashboard/server_port 18443

3.6.5 配置外部访问IP

docker exec mgr ceph config set mgr mgr/dashboard/server_addr 10.211.55.4

3.6.6 重启Mgr DashBoard服务

docker restart mgr

3.6.7 查看Mgr DashBoard服务信息

docker exec mgr ceph mgr services
-------------------------------------------
{
   "dashboard": "http://10.211.55.4:18443/"
}

3.6.8 登陆访问

1583142308536。jpg

4 后续

部署中可能遇到的问题,重启osd失败,可docker logs osd查看日志,如果报错:

max attr value size (1024) is smaller than osd_max_object_name_len (2048).

可在ceph.conf中修改配置:

vim /etc/ceph/ceph.conf
----------------------------
osd max object name len = 256
osd max object namespace len = 64

至此,Docker部署ceph集群已完成,具体ceph中的块存储、文件系统、对象存储这三种存储方式的使用测试有机会再分享。

扫码关注,获取精选资源

 

Python实现超简单好玩的微信机器人

震惊!一名中年韭菜竟然打算使用python来翻身?

Django+Vue构建前后端分离web项目框架

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!