共计 4767 个字符,预计需要花费 12 分钟才能阅读完成。
系统环境
- 至少需要三台虚拟机或者物理机,这里使用虚拟机
- 每台虚拟机至少需要两块硬盘(一块系统盘,一块 OSD),本例中有三块硬盘
-
部署流程(博客使用的 markdown 解析器不支持流程图使用图片代替)
- 主机规划
安装 docker
登录 https://cr.console.aliyun.com/#/accelerator 获取自己的阿里云 docker 加速地址
- 安装升级 docker 客户端
# curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
- 使用 docker 加速器
可以通过修改 daemon 配置文件 /etc/docker/daemon.json 来使用加速器,注意修改使用自己的加速地址
# mkdir -p /etc/docker | |
# tee /etc/docker/daemon.json <<-'EOF' | |
{"registry-mirrors": ["https://******.mirror.aliyuncs.com"] | |
} | |
EOF | |
# systemctl daemon-reload | |
# systemctl restart docker | |
# systemctl enable docker |
启动 MON
- 下载 ceph daemon 镜像
# docker pull ceph/daemon
- 启动第一个 mon
在 node1 上启动第一个 mon, 注意修改 MON_IP
# docker run -d \ | |
--net=host \ | |
-v /etc/ceph:/etc/ceph \ | |
-v /var/lib/ceph/:/var/lib/ceph/ \ | |
-e MON_IP=192.168.3.123 \ | |
-e CEPH_PUBLIC_NETWORK=192.168.3.0/24 \ | |
ceph/daemon mon |
查看容器
# docker ps | |
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES | |
b79a02c40296 ceph/daemon "/entrypoint.sh mon" About a minute ago Up About a minute sad_shannon |
查看集群状态
# docker exec b79a02 ceph -s | |
cluster 96ae62d2-2249-4173-9dee-3a7215cba51c | |
health HEALTH_ERR | |
no osds | |
monmap e2: 1 mons at {node01=192.168.3.123:6789/0} | |
election epoch 4, quorum 0 node01 | |
mgr no daemons active | |
osdmap e1: 0 osds: 0 up, 0 in | |
flags sortbitwise,require_jewel_osds,require_kraken_osds | |
pgmap v2: 64 pgs, 1 pools, 0 bytes data, 0 objects | |
0 kB used, 0 kB / 0 kB avail | |
64 creating |
- 复制配置文件
将 node1 上的配置文件复制到 node02 和 node03, 复制的路径包含 /etc/ceph 和 /var/lib/ceph/bootstrap-* 下的所有内容。
# ssh root@node2 mkdir -p /var/lib/ceph | |
# scp -r /etc/ceph root@node2:/etc | |
# scp -r /var/lib/ceph/bootstrap* root@node2:/var/lib/ceph | |
# ssh root@node3 mkdir -p /var/lib/ceph | |
# scp -r /etc/ceph root@node3:/etc | |
# scp -r /var/lib/ceph/bootstrap* root@node3:/var/lib/ceph |
- 启动第二个和第三个 mon
在 node02 上执行以下命令启动 mon, 注意修改 MON_IP
# docker run -d \ | |
--net=host \ | |
-v /etc/ceph:/etc/ceph \ | |
-v /var/lib/ceph/:/var/lib/ceph/ \ | |
-e MON_IP=192.168.3.124 \ | |
-e CEPH_PUBLIC_NETWORK=192.168.3.0/24 \ | |
ceph/daemon mon |
在 node03 上执行以下命令启动 mon, 注意修改 MON_IP
# docker run -d \ | |
--net=host \ | |
-v /etc/ceph:/etc/ceph \ | |
-v /var/lib/ceph/:/var/lib/ceph/ \ | |
-e MON_IP=192.168.3.125 \ | |
-e CEPH_PUBLIC_NETWORK=192.168.3.0/24 \ | |
ceph/daemon mon |
查看在 node01 上集群状态
# docker exec b79a02 ceph -s | |
cluster 96ae62d2-2249-4173-9dee-3a7215cba51c | |
health HEALTH_ERR | |
64 pgs are stuck inactive for more than 300 seconds | |
64 pgs stuck inactive | |
64 pgs stuck unclean | |
no osds | |
monmap e4: 3 mons at {node01=192.168.3.123:6789/0,node02=192.168.3.124:6789/0,node03=192.168.3.125:6789/0} | |
election epoch 12, quorum 0,1,2 node01,node02,node03 | |
mgr no daemons active | |
osdmap e1: 0 osds: 0 up, 0 in | |
flags sortbitwise,require_jewel_osds,require_kraken_osds | |
pgmap v2: 64 pgs, 1 pools, 0 bytes data, 0 objects | |
0 kB used, 0 kB / 0 kB avail | |
64 creating |
可以看到三个 mon 已经正确启动
启动 OSD
每台虚拟机准备了两块磁盘作为 osd, 分别加入到集群, 注意修改磁盘
# docker run -d \ | |
--net=host \ | |
-v /etc/ceph:/etc/ceph \ | |
-v /var/lib/ceph/:/var/lib/ceph/ \ | |
-v /dev/:/dev/ \ | |
--privileged=true \ | |
-e OSD_FORCE_ZAP=1 \ | |
-e OSD_DEVICE=/dev/sdb \ | |
ceph/daemon osd_ceph_disk |
# docker run -d \ | |
--net=host \ | |
-v /etc/ceph:/etc/ceph \ | |
-v /var/lib/ceph/:/var/lib/ceph/ \ | |
-v /dev/:/dev/ \ | |
--privileged=true \ | |
-e OSD_FORCE_ZAP=1 \ | |
-e OSD_DEVICE=/dev/sdc \ | |
ceph/daemon osd_ceph_disk |
按照同样方法将 node02 和 node03 的 sdb、sdc 都加入集群
查看集群状态
# docker exec b79a ceph -s | |
cluster 96ae62d2-2249-4173-9dee-3a7215cba51c | |
health HEALTH_OK | |
monmap e4: 3 mons at {node01=192.168.3.123:6789/0,node02=192.168.3.124:6789/0,node03=192.168.3.125:6789/0} | |
election epoch 12, quorum 0,1,2 node01,node02,node03 | |
mgr no daemons active | |
osdmap e63: 6 osds: 6 up, 6 in | |
flags sortbitwise,require_jewel_osds,require_kraken_osds | |
pgmap v157: 64 pgs, 1 pools, 0 bytes data, 0 objects | |
212 MB used, 598 GB / 599 GB avail | |
64 active+clean |
可以看到 mon 和 osd 都已经正确配置,切集群状态为 HEALTH_OK
创建 MDS
使用以下命令在 node01 上启动 mds
# docker run -d \ | |
--net=host \ | |
-v /etc/ceph:/etc/ceph \ | |
-v /var/lib/ceph/:/var/lib/ceph/ \ | |
-e CEPHFS_CREATE=1 \ | |
ceph/daemon mds |
启动 RGW , 并且映射 80 端口
使用以下命令在 node01 上启动 rgw,并绑定 80 端口
# docker run -d \ | |
-p 80:80 \ | |
-v /etc/ceph:/etc/ceph \ | |
-v /var/lib/ceph/:/var/lib/ceph/ \ | |
ceph/daemon rgw |
集群的最终状态
# docker exec b79a02 ceph -s | |
cluster 96ae62d2-2249-4173-9dee-3a7215cba51c | |
health HEALTH_OK | |
monmap e4: 3 mons at {node01=192.168.3.123:6789/0,node02=192.168.3.124:6789/0,node03=192.168.3.125:6789/0} | |
election epoch 12, quorum 0,1,2 node01,node02,node03 | |
fsmap e5: 1/1/1 up {0=mds-node01=up:active} | |
mgr no daemons active | |
osdmap e136: 6 osds: 6 up, 6 in | |
flags sortbitwise,require_jewel_osds,require_kraken_osds | |
pgmap v1460: 136 pgs, 10 pools, 3829 bytes data, 223 objects | |
254 MB used, 598 GB / 599 GB avail | |
136 active+clean |
更多 Ceph 相关教程见以下内容:
在 CentOS 7.1 上安装分布式存储系统 Ceph http://www.linuxidc.com/Linux/2015-08/120990.htm
Ceph 环境配置文档 PDF http://www.linuxidc.com/Linux/2013-05/85212.htm
CentOS7 下部署 Ceph 集群(版本 10.2.2)http://www.linuxidc.com/Linux/2017-02/140728.htm
如何升级 Ceph 版本及注意事项 http://www.linuxidc.com/Linux/2017-02/140631.htm
HOWTO Install Ceph On FC12, FC 上安装 Ceph 分布式文件系统 http://www.linuxidc.com/Linux/2013-05/85209.htm
实验环境 Ceph 9.2.1 部署笔记 http://www.linuxidc.com/Linux/2016-11/137094.htm
Ubuntu 16.04 快速安装 Ceph 集群 http://www.linuxidc.com/Linux/2016-09/135261.htm
CentOS 7 下单台物理机搭建 Ceph 集群 http://www.linuxidc.com/Linux/2017-06/144636.htm
基于 CentOS 7.3 安装部署 jewel 版本 Ceph 集群实战演练 http://www.linuxidc.com/Linux/2017-09/146760.htm
Ceph 的详细介绍:请点这里
Ceph 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/148041.htm
