Docker-Ceph
docker 统一存储之ceph
知识
ceph核心服务
MonItor(
mon
) 监视器维护集群状态的映射,包括监视器映射,管理器映射,OSD映射和CRUSH映射。这些映射是Ceph守护进程相互协调所需的关键集群状态。监视器还负责管理守护进程和客户端之间的身份验证。冗余和高可用性通常至少需要三个监视器。
Managers(
mgr
) 管理器守护程序(ceph-mgr)负责跟踪运行时指标和Ceph集群的当前状态,包括存储利用率,当前性能指标和系统负载。 Ceph Manager守护进程还托管基于python的插件来管理和公开Ceph集群信息,包括基于Web的Ceph Manager Dashboard和REST API。高可用性通常至少需要两个管理器。
OSDs(
osd_ceph_disk
) 对象存储守护进程存储数据,处理数据复制,恢复,重新平衡,并通过检查其他Ceph OSD守护进程来获取心跳,为Ceph监视器和管理器提供一些监视信息。冗余和高可用性通常至少需要3个Ceph OSD。
MDSs(
mds
) Ceph元数据服务器代表Ceph文件系统存储元数据(即,Ceph块设备和Ceph对象存储不使用MDS)。 Ceph元数据服务器允许POSIX文件系统用户执行基本命令(如ls,find等),而不会给Ceph存储集群带来巨大负担。
问题
断电关机重启问题,如果是安装在容器里,面临自动挂载和卸载问题
如果挂载了关机时,容器先关闭,导致卸载出问题,一直关不了机
开机时重新挂载,看不到数据问题
集群部署,osd服务的
privileged: true
特权模式不支持,导致不能操作mount相关采用
docker plugin install rexray/rbd
插件模式挂载,服务的挂载目录不能更改,且外部需要安装ceph基本组件(考虑是否部分服务安装主机上,可解决123问题)
安装
重新部署执行
docker run -d --privileged=true -v /dev/:/dev/ -e OSD_DEVICE=/dev/sda ceph/daemon zap_device
并清理目录
三台机执行,其中
MON_IP
替换本机ip1
2
3
4
5
6
7
8docker run -d \
--name=mon \
--net=host \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph/ \
-e MON_IP=192.168.1.230 \
-e CEPH_PUBLIC_NETWORK=192.168.1.0/24 \
ceph/daemon mon该部不能通过集群stack部署,因为
--net=host
是指用主机网络然后复制目录
/dockerdata/ceph/data
到另一台机,复制/dockerdata/ceph/config/bootstrap*
到另一台机启动第二台,如果有第三台,第三台同理
执行
docker exec mon ceph -s
就可以看到两台了1
2
3
4
5
6
7
8
9
10
11
12
13
14
15[root@environment-test1 ceph]# docker exec mon ceph -s
cluster:
id: cf6e2bed-0eb6-4ba1-9854-e292c936ea0f
health: HEALTH_OK
services:
mon: 2 daemons, quorum lfadmin,environment-test1
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 B / 0 B avail
pgs:添加osd,需要先在主机上添加一块新硬盘,执行
lsblk
查看硬盘编号,硬盘非空,会启动报错,如何清空看磁盘格始化(删除所有分区),单个分区sda5
不成功,最后只好全磁盘格式化1
2
3
4
5
6
7
8
9
10
11docker run -d \
--net=host \
--name=ceph_osd \
--restart=always \
-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/sda \
ceph/daemon osd_ceph_disk执行
docker exec mon ceph -s
就可以看到两台了和一个osd了,但是空间详情看不到,需要运行mds和rgw服务1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16[root@environment-test1 ~]# docker exec mon ceph -s
cluster:
id: cf6e2bed-0eb6-4ba1-9854-e292c936ea0f
health: HEALTH_WARN
no active mgr
services:
mon: 2 daemons, quorum lfadmin,environment-test1
mgr: no daemons active
osd: 1 osds: 1 up, 1 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs:添加 mgr
1
2
3
4
5
6docker run -d \
--net=host \
--name=mgr \
-v /dockerdata/ceph/data:/etc/ceph \
-v /dockerdata/ceph/config/:/var/lib/ceph/ \
ceph/daemon mgr添加 mds
1
2
3
4
5
6
7
8
docker run -d \
--net=host \
--name=mds \
-v /dockerdata/ceph/data:/etc/ceph \
-v /dockerdata/ceph/config/:/var/lib/ceph/ \
-e CEPHFS_CREATE=1 \
ceph/daemon mds添加 rgw
1
2
3
4
5
6docker run -d \
--name=rgw \
-p 80:80 \
-v /dockerdata/ceph/data:/etc/ceph \
-v /dockerdata/ceph/config/:/var/lib/ceph/ \
ceph/daemon rgw再次执行
docker exec mon ceph -s
查看,就可以看到空间信息了1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21[root@environment-test1 ~]# docker exec mon ceph -s
cluster:
id: cf6e2bed-0eb6-4ba1-9854-e292c936ea0f
health: HEALTH_WARN
1 MDSs report slow metadata IOs
Reduced data availability: 24 pgs inactive
Degraded data redundancy: 24 pgs undersized
too few PGs per OSD (24 < min 30)
services:
mon: 2 daemons, quorum lfadmin,environment-test1
mgr: environment-test1(active)
mds: cephfs-1/1/1 up {0=environment-test1=up:creating}
osd: 1 osds: 1 up, 1 in
data:
pools: 3 pools, 24 pgs
objects: 0 objects, 0 B
usage: 2.0 GiB used, 463 GiB / 465 GiB avail
pgs: 100.000% pgs not active
24 undersized+peered
使用
测试发现只有一个osd挂载失败,因此在两台电脑都添加osd,并都挂载
首先查看登陆用户名和密码
1
2
3
4
5
6
7
8[root@environment-test1 ~]# cat /dockerdata/ceph/data/ceph.client.admin.keyring
[client.admin]
key = AQDTqMFbDC4UAxAApyOvC8I+8nA5PMK1bHWDWQ==
auid = 0
caps mds = "allow"
caps mgr = "allow *"
caps mon = "allow *"
caps osd = "allow *"创建挂载目录
1
[root@lfadmin mnt]# mkdir /mnt/mycephfs
挂载
1
[root@lfadmin mnt]# mount -t ceph 192.168.1.213,192.168.1.230,192.168.1.212:/ /dockerdata/cephdata -o name=admin,secret=AQCu98JblQgRChAAskEmJ1ekN2Vasa9Chw+gvg==
设置开机自动挂载?
取消挂载
umount /mnt/mycephfs/
如果被占用,关闭占用程序和窗口
docker exec ea8577875af3 ceph osd tree
测试
- 两台节点,一台当掉,不能访问挂载目录
集成部署
1 | version: "3.6" |
注意
swarm 不支持 privileged: true
特权模式,所以使用集群部署时,提示没有权限
磁盘格始化(删除所有分区)
查看分区情况lsblk
1 | [root@environment-test1 ~]# lsblk |
格式化磁盘mkfs.ext4 /dev/sda
,如果是格式化一个区,跟上特定数字,例如mkfs.ext4 /dev/sda5
1 | [root@environment-test1 ~]# mkfs.ext4 /dev/sda |
再次查看
1 | [root@environment-test1 ~]# lsblk |
减少(压缩)分区空间(大小)
CentOS Linux如何无损调整分区大小(XFS文件系统) : 没有做到无损
没找到无损调整的方法
https://www.linuxidc.com/Linux/2016-06/132270.htm
http://blog.51cto.com/happyliu/1902022
参考
https://tobegit3hub1.gitbooks.io/ceph_from_scratch/content/usage/index.html