ceph集群部署

最近在学习 kubernetes 过程中,想实现 pod 数据的持久化。在调研的过程中,发现 ceph 在最近几年发展火热,也有很多案例落地企业。在选型方面,个人更加倾向于社区火热的项目,GlusterFS、Ceph 都在考虑的范围之内,但是由于 GlusterFS 只提供对象存储和文件系统存储,而 Ceph 则提供对象存储、块存储以及文件系统存储。怀着对新事物的向往,果断选...

最近在学习 kubernetes 过程中,想实现 pod 数据的持久化。在调研的过程中,发现 ceph 在最近几年发展火热,也有很多案例落地企业。在选型方面,个人更加倾向于社区火热的项目,GlusterFS、Ceph 都在考虑的范围之内,但是由于 GlusterFS 只提供对象存储和文件系统存储,而 Ceph 则提供对象存储、块存储以及文件系统存储。怀着对新事物的向往,果断选择 Ceph 来实现 Ceph 块存储对接 kubernetes 来实现 pod 的数据持久化。

Red Hat Ceph所具备的强大功能可以改变您公司(或组织)的IT基础架构和管理海量数据的能力,特别是对于像RHEL OSP这样的云计算平台。Red Hat Ceph具有非常好的可扩展性——数以千计的客户端可以访问PB级到EB级甚至更多的数据。

http://docs.ceph.com/docs/master/start/quick-ceph-deploy/#starting-over

1  Ceph基础介绍

Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。在虚拟化领域里,比较常用到的是Ceph的块设备存储,比如在OpenStack项目里,Ceph的块设备存储可以对接OpenStack的cinder后端存储、Glance的镜像存储和虚拟机的数据存储,比较直观的是Ceph集群可以提供一个raw格式的块存储来作为虚拟机实例的硬盘。

Ceph相比其它存储的优势点在于它不单单是存储,同时还充分利用了存储节点上的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的良好设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且随着规模的扩大性能并不会受到影响。

 一、初始 Ceph

1.1 了解什么是块存储/对象存储/文件系统存储?


直接进入主题,ceph 目前提供对象存储(RADOSGW)、块存储RDB以及 CephFS 文件系统这 3 种功能。对于这3种功能介绍,分别如下:

      1.对象存储,也就是通常意义的键值存储,其接口就是简单的GET、PUT、DEL 和其他扩展,代表主要有 Swift 、S3 以及 Gluster 等;

    2.块存储,这种接口通常以 QEMU Driver 或者 Kernel Module 的方式存在,这种接口需要实现 Linux 的 Block Device 的接口或者 QEMU 提供的 Block Driver 接口,如 Sheepdog,AWS 的 EBS,×××的云硬盘和阿里云的盘古系统,还有 Ceph 的 RBD(RBD是Ceph面向块存储的接口)。在常见的存储中 DAS、SAN 提供的也是块存储;

  3.文件存储,通常意义是支持 POSIX 接口,它跟传统的文件系统如 Ext4 是一个类型的,但区别在于分布式存储提供了并行化的能力,如 Ceph 的 CephFS (CephFS是Ceph面向文件存储的接口),但是有时候又会把 GlusterFS ,HDFS 这种非POSIX接口的类文件存储接口归入此类。当然 NFS、NAS也是属于文件系统存储;

2  Ceph的核心组件

Ceph的核心组件包括Ceph OSD、Ceph Monitor和Ceph MDS。

Ceph是一个分布式存储,可以提供对象存储、块存储和文件存储,其中对象存储和块存储可以很好地和各大云平台集成。一个Ceph集群中有Monitor节点、MDS节点(可选,用于文件存储)、至少两个OSD守护进程。 

Ceph OSD:OSD守护进程,用于存储数据、处理数据拷贝、恢复、回滚、均衡,并通过心跳程序向Monitor提供部分监控信息。一个Ceph集群中至少需要两个OSD守护进程。 

Monitor:维护集群的状态映射信息,包括monitor、OSD、Placement Group(PG)。还维护了Monitor、OSD和PG的状态改变历史信息。 

MDS:存储Ceph文件系统的元数据。

表 1. Ceph 术语

名词

解释

RADOSGW

对象网关守护进程。

RBD

块存储。

CEPHFS

文件存储。

LIBRADOS

和 RADOS 交互的基本库 librados。Ceph 通过原生协议和 RADOS 交互,Ceph 把这种功能封装进了 librados 库,这样你就能定制自己的客户端。

RADOS

存储集群

OSD

Object Storage Device。RADOS 的组件,用于存储资源

Monitor

监视器。RADOS 的组件,维护整个 Ceph 集群的全局状态。

MDS

Ceph 元数据服务器。为 Ceph 文件系统存储元数据。

Ceph 常用命令

Ceph 客户端提供了非常丰富的命令用来操作块设备。在与容器对接过程中,我们需要创建块设备,删除块设备等功能,并且后续也需要针对这些功能提供相应的 REST API,方便通过 HTTP 请求的方式来操作块设备。所以这里对一些常用的命令进行说明,如表 2 所示。

表 2. Ceph 常用命令

命令

功能

rbd create

创建块设备映像

rbd ls

列出 rbd 存储池中的块设备

rbd info

查看块设备信息

rbd diff

可以统计 rbd 使用量

rbd feature disable

禁止掉块设备的某些特性

rbd map

映射块设备

rbd remove

删除块设备

rbd resize

更改块设备的大小

查看各种Map的信息可以通过如下命令:ceph osd(mon、pg) dump

环境说明

主机名        IP地址                    角色

node1        192.168.110.59    MON1+OSD1+MDS1+Deploy

node2        192.168.110.62    MON2+OSD2

node3        192.168.110.64    MON3+OSD3

修改hosts(所有主机)

vim /etc/hosts

192.168.110.59  node1

192.168.110.62  node2

192.168.110.64  node3

如果不写后面创建ceph会报错如下:(解析名一定要和主机名相同)

spacer.gif

关闭SeLinux(所有主机)

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

setenforce 0

关闭防火墙(所有主机)

systemctl disable firewalld

systemctl stop firewalld

配置NTP(所有主机)

yum -y install ntp

systemctl enable ntpd

systemctl start ntpd

systemctl disable chronyd

ntpq -p

添加Ceph的yum源(所有主机)

yum clean all

rm -rf /etc/yum.repos.d/*.repo

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

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

[Ceph]

name=Ceph packages for $basearch

baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/$basearch

enabled=1

gpgcheck=1

type=rpm-md

gpgkey=https://download.ceph.com/keys/release.asc

[Ceph-noarch]

name=Ceph noarch packages

baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch

enabled=1

gpgcheck=1

type=rpm-md

gpgkey=https://download.ceph.com/keys/release.asc

[ceph-source]

name=Ceph source packages

baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS

enabled=1

gpgcheck=1

type=rpm-md

gpgkey=https://download.ceph.com/keys/release.asc

yum makecache

yum -y update

配置免密登陆(node1主机)

ssh-keygen -t rsa -P ""

ssh-copy-id 192.168.110.59

ssh-copy-id 192.168.110.62

ssh-copy-id 192.168.110.64

在管理节点安装 ceph-deploy(node1)

yum -y install ceph-deploy

查看版本

ceph-deploy --version

在管理节点创建集群(node1)

mkdir /etc/ceph

cd /etc/ceph

ceph-deploy new node1 node2 node3(hosts里的解析名和主机名一定要想相同,否则报错

spacer.gif

spacer.gif

在管理节点上(node1),更改生成的 ceph 配置文件,添加以下内容

vim ceph.conf

#设置osd节点个数

osd pool default size = 3

#允许 ceph 集群删除 pool

[mon]

mon_allow_pool_delete = true

在管理节点给所有节点安装ceph(node1)

ceph-deploy  install node1 node2 node3

配置初始monitor监视器,并收集秘钥(node1)

ceph-deploy mon create-initial

完成此过程后,您的本地目录应具有以下密钥环:

  • ceph.client.admin.keyring

  • ceph.bootstrap-mgr.keyring

  • ceph.bootstrap-osd.keyring

  • ceph.bootstrap-mds.keyring

  • ceph.bootstrap-rgw.keyring

  • ceph.bootstrap-rbd.keyring

  • ceph.bootstrap-rbd-mirror.keyring

注意 如果此过程失败并显示类似于“无法找到/etc/ceph/ceph.client.admin.keyring”的消息,请确保ceph.conf中为监控节点列出的IP是公共IP,而不是私有IP 。

(node1)使用ceph-deploy将配置文件和管理密钥复制到您的管理节点和Ceph节点,这样您就可以使用ceph CLI而无需在每次执行命令时指定监视器地址和ceph.client.admin.keyring

ceph-deploy admin  node1  node2  node3

部署管理器守护程序: 仅适用于luminous+版本

安装ceph-mgr(node1)

ceph-deploy mgr create node1

配置OSD(node1)

创建OSD(node1)

ceph-deploy osd create --data /dev/sdb node1

ceph-deploy osd create --data /dev/sdb node2

ceph-deploy osd create --data /dev/sdb node3

注意 如果要在LVM卷上创建OSD,则参数 --data 必须volume_group/lv_name,而不是卷的块设备的路径。

检查集群健康(node1)

ceph health

#返回简单信息

ceph -s  = ceph status

返回完整信息

spacer.gif

扩展群集

启动并运行基本群集后,下一步是展开群集。添加Ceph元数据服务器node1然后添加Ceph Monitor和Ceph Manager node2node3以提高可靠性和可用性。

添加元数据服务器:配置MDS服务(node1)

要使用CephFS,您至少需要一个元数据服务器。执行以下操作以创建元数据服务器:

ceph-deploy mds create node1

添加监视器

Ceph存储集群需要至少运行一个Ceph Monitor和Ceph Manager。为了实现高可用性,Ceph存储集群通常运行多个Ceph监视器,因此单个Ceph监视器的故障不会导致Ceph存储集群崩溃。Ceph使用Paxos算法,该算法需要大多数监视器(即,大于N / 2,其中N是监视器的数量)才能形成法定人数。虽然这不是必需的,但监视器的数量往往更好。

将两个Ceph监视器添加到您的群集:

ceph-deploy mon add node2 node3

一旦你添加了新的Ceph监视器,Ceph将开始同步监视器并形成一个法定人数。您可以通过执行以下操作来检查仲裁状态:

ceph quorum_status --format json-pretty

注意: 当您使用多个监视器运行Ceph时,您应该在每个监视器主机上安装和配置NTP, 确保监视器是NTP对等方。

添加管理员

Ceph Manager守护进程以活动/备用模式运行。部署其他管理器守护程序可确保在一个守护程序或主机发生故障时,另一个守护程序或主机可以在不中断服务的情况下接管。

要部署其他管理器守护程序:

ceph-deploy mgr create node2 node3

删除OSD(node1)

ceph auth del osd.0

ceph osd rm 0

配置DashBoard

创建域管理秘钥(node1)

ceph auth get-or-create mgr.node1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'

开启ceph-mgr管理域(node1)

ceph-mgr -i node1

打开dashboard模块(node1)

ceph mgr module enable dashboard

绑定开启dashboard模块的ceph-mgr节点的ip地址(node1主机)

ceph config-key set mgr/dashboard/node1/server_addr 192.168.110.59

访问Dashboard (任意主机)

http://192.168.110.59:7000

转载于:https://blog.51cto.com/7072753/2286614

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐

  • 浏览量 95
  • 收藏 0
  • 0

所有评论(0)

查看更多评论 
已为社区贡献6530条内容