Ceph-03 搭建 Ceph 存储集群
鲁迅
怯者愤怒,却抽刃向更弱者。
本文介绍如何搭建 Ceph 分布式存储集群。如果对于 Ceph 基本架构还不了解的同学,请移步 Ceph 简介。
测试环境说明:
- 存储节点: 3个节点,ceph1,ceph2,ceph3 ,挂载 3 块硬盘部署 3 个 OSD 节点
以 ceph1 节点充当部署(admin)节点,同时部署 ceph1 为 MON 节点 - 操作系统:Ubuntu server 18.04 LTS
- Ceph 版本: 12.2.12 luminous (stable)
- 虚拟机工具: VirtualBox 6.2
# 1. 准备环境
首先安装好 VirtualBox 6.2,下载好 Ubuntu server 18.04 LTS
。
下载地址: https://ubuntu.com/download/server (opens new window)
(1)新建虚拟机,装好系统之后安装好 openssh-server 和 ntp 时间同步工具:
Note: 以下所有的命令都是在 root 用户下执行的。
apt-get install -y openssh-server ntpdate python
Note: 这里之所以要安装
python
是因为在安装 ceph 的时候需要依赖python
。
(2)编辑 hosts 文件,vim /etc/hosts
,添加以下 host 配置:
192.168.2.201 ceph1
192.168.2.202 ceph2
192.168.2.203 ceph3
192.168.2.220 client
说明: 这里的
192.168.2.0
是我当前路由器设置的网段,你需要根据你自己的网络环境改成自己的网段。
(3)修改 apt 源,vim /etc/apt/sources.list
,这里采用网易的源:
deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
跟新软件源信息
apt-get update
(4)将当前虚拟机克隆 3 个,分别作为 ceph1, ceph2, ceph3 存储节点,而当前虚拟机则作为 client(客户端)。
(5)修改各个节点的 hostname,vim /etc/hostname
,分别修改为 ceph1, ceph2, ceph3, client
(这个非常重要,请仔细核对是否正确,否则在部署的时候会有很多莫名其妙的错误!!!)。
然后分别修改各个节点的 ip 分别为 201, 202, 203, 220。
(6)使用时间同步工具同步时间,这里使用阿里云的时间服务器更新
ntpdate ntp1.aliyun.com
所有节点都要执行,确保时间同步(这一点非常重要)
# 2. 安装 ceph-deploy(admin 节点)
根据我们上面的配置,选择 ceph1 节点作为 admin 节点,所以 ceph-deploy
需要安装在 ceph1 节点。
首先配置 key
wget -q -O- 'http://mirrors.163.com/ceph/keys/release.asc' | sudo apt-key add -
echo deb http://mirrors.163.com/ceph/debian-luminous/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
Note: 上面的 luminous 是指你要安装的 ceph 发行版本,我们这里是选择的是 luminous,如果你需要更改其他版本,把 luminous 替换成其他版本就行了。
安装 ceph-deploy
apt-get install -y ceph-deploy
ceph-deploy 是 ceph 官方提供的部署工具,有了它我们就可以通过 admin 节点让部署命令在所有节点同步执行,不用 ssh 登录每个节点去安装 ceph 组件了。所以如无特殊说明,后面我们所有的操作都是在 admin 节点也就是 ceph1 节点执行。
# 3. 创建可信连接(admin 节点)
为了使得 ceph-deploy
工具能够正常工作,我们需要创建 admin 节点到各个集群节点之间的可信连接,也就是免密码登录。
- 生成公钥,这个很简单,
ssh-keygen
+ 一路回车。 - 拷贝公钥到各个节点。
ssh-copy-id root@ceph1(hostname)
ssh-copy-id root@ceph2
ssh-copy-id root@ceph3
ssh-copy-id root@client
# 4. 部署集群(admin节点)
(1)首先创建文件夹,以后生成的配置文件默认保存在此。
mkdir /etc/ceph
cd /etc/ceph
(2)创建一个新的集群
ceph-deploy new ceph1
创建新的集群默认会生成三个文件,其中比较重要的是 ceph.conf
,这里我们需要在 [global]
段加上集群的 public_network
配置
public_network = 192.168.2.0/24
192.168.2.0
为当前集群所在网段,这里必须修改成你自己的。当然你也可以添加其他配置,这里我们只是测试,所以使用默认配置。
(3)给所有的节点安装 ceph
ceph-deploy install ceph1 ceph2 ceph3
执行过程中我们可以看到类似如下日志:
Reading package lists...
[ceph2][INFO ] Running command: env DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical apt-get --assume-yes -q --no-install-recommends install ceph ceph-osd ceph-mds ceph-mon radosgw
[ceph2][DEBUG ] Reading package lists...
通过 ceph-deploy 给各个节点把 ceph 相关的组件都安装上去了。相当于在各个节点上执行了:
apt-get install ceph ceph-osd ceph-mds ceph-mon radosgw
但是这些组件并不都是必需的。如果你要做对象存储,则需要安装 radosgw
,
如果要使用 CephFS 则需要 ceph-mds
, 如果你的系统内核不支持直接挂载 ceph 文件系统的话,你还需要安装 ceph-fuse
组件。
(4)部署 MON 监控节点,在当前部署节点初始化:
ceph-deploy mon create-initial
或者直接部署到指定的节点,比如节点 ceph1
ceph-deploy mon create ceph1
我们这里选择 ceph1 作为监控节点,当然你可以安装多个监控节点(如果你的节点数较多的话)。
到此,集群搭建完成,我们可以看下集群的状态:
root@ceph1:/etc/ceph# ceph -s
cluster:
id: 9e50ebd2-8abc-4609-a4f5-47949b5e777c
health: HEALTH_OK
services:
mon: 1 daemons, quorum ceph1
mgr: no daemons active
osd: 0 osds: 0 up, 0 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 GiB avail
pgs:
我们可以到,集群虽然已经正常运行,但是没有任何 OSD,此时还不能存储任何数据,下一步我们就可以添加 OSD 节点了。
# 5. 添加 OSD 节点(admin节点)
集群默认可以添加无数个 OSD 节点(10000个),OSD 可以是磁盘也可以是分区,因为是虚拟机,所以直接添加裸盘。 这里我事先就为 ceph1,ceph2,ceph3 虚拟机节点各自添加了一个额外的磁盘设备。如果你没有添加的话,请自行添加。
添加 OSD 之前我们需要把磁盘先格式化:
ceph-deploy disk zap ceph1:/dev/sdb ceph3:/dev/sdb ceph3:/dev/sdb
然后创建 OSD 节点:
ceph-deploy osd create ceph1:/dev/sdb ceph2:/dev/sdb ceph3:/dev/sdb
# 6. 配置mgr(监控)服务
此时我们再运行 ceph -s
看下集群的状态:
root@ceph1:/etc/ceph# ceph -s
cluster:
id: 9e50ebd2-8abc-4609-a4f5-47949b5e777c
health: HEALTH_OK
no active mgr
services:
mon: 1 daemons, quorum ceph1
mgr: no daemons active
osd: 3 osds: 3 up, 3 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 GiB avail
pgs:
可以看到,虽然集群的状态是 HEALTH_OK
, 但是下面有个 no active mgr
警告,而且 data 中的 usage
容量也是 0。
这是因为在 luminous 版本中,ceph 默认需要安装 mgr 服务才能正常工作。
配置 mgr 服务,这里我还是配置在 ceph1 节点。
ceph-deploy mgr create ceph1
或者直接在 ceph1 节点上直接安装 ceph-mgr
apt-get install ceph-mgr
service ceph-mgr@ceph1 start
启动之后再执行 ceph -s
看看:
root@ceph1:/etc/ceph# ceph -s
cluster:
id: 9e50ebd2-8abc-4609-a4f5-47949b5e777c
health: HEALTH_OK
services:
mon: 1 daemons, quorum ceph1
mgr: no daemons active
osd: 3 osds: 3 up, 3 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 3.0 GiB used, 26.7 GiB / 29.7 GiB avail
pgs:
现在集群的状态才是真的正常了,我一共创建了 3 个 OSD,每个 10GB。
我们顺便设置 admin 节点,并同步配置到各个节点,以备下次使用:
ceph-deploy admin ceph1 ceph2 ceph3
下一篇我文章我们开始使用 ceph 来创建块设备,提供给客户端使用。
如果您觉得本文对您有用,可以请作者喝杯咖啡。 如需商务合作请加微信(点击右边链接扫码): RockYang
版权申明 : 本站博文如非注明转载则均属作者原创文章,引用或转载请注明出处,如要商用请联系作者,谢谢。