环境:centos7.6
1、ceph概论解析
Ceph 存储集群至少需要一个 Ceph Monitor 和两个 OSD 守护进程。而运行 Ceph 文件系统客户端时,则必须要有元数据服务器( Metadata Server )
- Ceph OSDs: Ceph OSD 守护进程( Ceph OSD )的功能是存储数据,处理数据的复制、恢复、回填、再均衡,并通过检查其他OSD 守护进程的心跳来向 Ceph Monitors 提供一些监控信息。当 Ceph 存储集群设定为有2个副本时,至少需要2个 OSD 守护进程,集群才能达到 active+clean 状态( Ceph 默认有3个副本,但你可以调整副本数)。
- Monitors: Ceph Monitor维护着展示集群状态的各种图表,包括监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。 Ceph 保存着发生在Monitors 、 OSD 和 PG上的每一次状态变更的历史信息(称为 epoch )。
- MDSs: Ceph 元数据服务器( MDS )为 Ceph 文件系统存储元数据(也就是说,Ceph 块设备和 Ceph 对象存储不使用MDS )。元数据服务器使得 POSIX 文件系统的用户们,可以在不对 Ceph 存储集群造成负担的前提下,执行诸如 ls、find 等基本命令。
-
RGW为Rados Gateway的缩写,ceph通过RGW为互联网云服务提供商提供对象存储服务。RGW在librados之上向应用提供访问ceph集群的RestAPI, 支持Amazon S3和openstack swift两种接口。对RGW最直接的理解就是一个协议转换层,把从上层应用符合S3或Swift协议的请求转换成rados的请求, 将数据保存在rados集群中。
-
mgr 作为 Ceph 集群的管理进程,未来会负责整个集群的管理操作和监控。现在的部分 Monitor 功能会迁移到 ceph-mgr 中,使得 Monitor 更专注于集群的数据面控制,降低集群对于 Monitor 的要求。
在12.2版本以后的版本,mgr已成为标配,不安装成功的话,集群状态会WARN。
Ceph 把客户端数据保存为存储池内的对象。通过使用 CRUSH 算法, Ceph 可以计算出哪个归置组(PG)应该持有指定的对象(Object),然后进一步计算出哪个 OSD 守护进程持有该归置组。 CRUSH 算法使得 Ceph 存储集群能够动态地伸缩、再均衡和修复。
2、Ceph版本发行的策略是:
x.0.z - 开发版(给早期测试者和勇士们)
x.1.z - 候选版(用于测试集群、高手们)
x.2.z - 稳定、修正版(给用户们)
3、本次ceph安装规划
1、安装docker
https://www.cnblogs.com/wukc/p/13265528.html --参考
2、下载ceph镜像
一、有网络的情况 docker pull ceph/daemon:latest-mimic #直接在线下载 二、没有网络可以在线下载拷贝进入 链接: https://pan.baidu.com/s/1ynE2HJa5P1yuwMUI40BOmg 提取码: p42r docker load -i ceph-images.tar
3、创建ceph目录
mkdir /etc/ceph /var/lib/ceph
4、部署mon
docker run -d --restart=always --net=host --name=mon \ -v /etc/ceph:/etc/ceph \ -v /var/lib/ceph:/var/lib/ceph \ -e MON_IP=172.21.210.28 \ -e CEPH_PUBLIC_NETWORK=172.21.210.0/24 \ d24426627972 mon 验证mon1 [root@host-172-21-210-28 ~]# docker exec mon ceph -s cluster: id: 332df68e-812d-432d-82ac-9e2dc443a228 health: HEALTH_OK services: mon: 1 daemons, quorum host-172-21-210-28 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: 参数解析 Monitor不能通过NAT网络通信,使用--net=host 暴露Docker主机网络; MON_IP 是Monitor的IP地址, 写宿主机的ip; MON_NAME 是Monitor的名称,默认是主机名; CEPH_PUBLIC_NETWORK 这个是Monitor所在网络的CIDR ,这里也写宿主机的; CEPH_CLUSTER_NETWORK 这个OSD之间复制数据用到的网络,默认和CEPH_PUBLIC_NETWORK相同; ceph/daemon mon 这个ceph/daemon是images; 这些参数都是在镜像内部的variables_entrypoint.sh中定义的 如果要增加同一个集群的Monitor的数量,需要将/etc/ceph/和/var/lib/ceph/bootstrap-* 这些目录下的文件复制到其他主机上,记得不要保留文件的属主权限。使用rsync -r 或者scp -r远程复制就行 设置pool副本数(两种方法) 命令行docker exec mon ceph osd pool set data size 3 配置文件:vim ceph/ceph.conf osd_pool_default_size = 2 修改mon的副本数 默认是3个我们只有两台服务器,改成2 echo "osd_pool_default_size = 2" >> /etc/ceph/ceph.conf docker restart mon 拷贝文件到29 scp -r /etc/ceph/* root@172.21.210.29:/etc/ceph/ scp -r /var/lib/ceph/bootstrap-* root@172.21.210.29:/var/lib/ceph/ 部署29的mon docker run -d --restart=always --net=host --name=mon1 \ -v /etc/ceph:/etc/ceph \ -v /var/lib/ceph:/var/lib/ceph \ -e MON_IP=172.21.210.29 \ -e CEPH_PUBLIC_NETWORK=172.21.210.0/24 \ d24426627972 mon 验证mon1 [root@host-172-21-210-29 ceph]# docker exec mon1 ceph -s cluster: id: 332df68e-812d-432d-82ac-9e2dc443a228 health: HEALTH_OK services: mon: 2 daemons, quorum host-172-21-210-28,host-172-21-210-29 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:
5、部署OSD
28上运行 docker run -d --restart=always --net=host --name=osd \ -v /etc/ceph:/etc/ceph \ -v /var/lib/ceph:/var/lib/ceph \ -v /dev/:/dev/ \ --pid=host \ --privileged=true \ -e OSD_DEVICE=/dev/vdb \ -e OSD_TYPE=disk \ -v /run/udev:/run/udev/ \ d24426627972 osd 29 上运行 docker run -d --restart=always --net=host --name=osd1 \ -v /etc/ceph:/etc/ceph \ -v /var/lib/ceph:/var/lib/ceph \ -v /dev/:/dev/ \ --pid=host \ --privileged=true \ -e OSD_DEVICE=/dev/vdb \ -e OSD_TYPE=disk \ -v /run/udev:/run/udev/ \ d24426627972 osd
6、mgr安装
28上执行 docker run -d --restart=always --net=host --name=mgr \ -v /etc/ceph:/etc/ceph \ -v /var/lib/ceph:/var/lib/ceph \ d24426627972 mgr --查看状态 docker exec -it mon ceph -s
7、开启mgr的dashbord
1、开启dashboard 功能 docker exec mgr ceph mgr module enable dashboard 2、创建证书 docker exec mgr ceph dashboard create-self-signed-cert 3、创建 web 登录用户密码 docker exec mgr ceph dashboard set-login-credentials {user-name} {password} 4 配置端口:mgr dashboard docker exec mgr ceph config set mgr mgr/dashboard/server_addr $IP docker exec mgr ceph config set mgr mgr/dashboard/server_port $PORT 5 关闭https docker exec mgr ceph config set mgr mgr/dashboard/ssl false 6 重启 docker restart mgr 7、查看服务访问方式 docker exec mgr ceph mgr services 访问: curl http://$ip:$prot
8、Ceph RGW节点安装
29上执行 docker run --restart=always \ -d --net=host \ --name=rgw \ -v /etc/ceph:/etc/ceph \ -v /var/lib/ceph/:/var/lib/ceph \ d24426627972 rgw [root@host-172-21-210-29 ~]# curl http://127.0.0.1:7480 <?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets>
9、集群状态验证
[root@host-172-21-210-28 ~]# docker exec mon ceph -s cluster: id: 332df68e-812d-432d-82ac-9e2dc443a228 health: HEALTH_OK services: mon: 2 daemons, quorum host-172-21-210-28,host-172-21-210-29 mgr: host-172-21-210-28(active) osd: 2 osds: 2 up, 2 in rgw: 1 daemon active data: pools: 4 pools, 32 pgs objects: 219 objects, 1.1 KiB usage: 2.0 GiB used, 998 GiB / 1000 GiB avail pgs: 32 active+clean
10、ceph常用命令
--查看mon状态 docker exec mon ceph -s docker exec -it mon ceph -s 观察集群内正发生的事件 docker exec mon ceph -w 检查集群的使用情况 docker exec mon1 ceph df 检查OSD状态 docker exec mon1 ceph osd stat 查看PG docker exec mon1 ceph pg dump 列出存储池 docker exec mon1 ceph osd lspools 创建存储池 docker exec mon1 ceph osd pool create data 200 设置存储池最大对象数 docker exec mon1 ceph osd pool set-quota data max_objects 10000 删除存储池 docker exec mon1 ceph osd pool delete data data --yes-i-really-really-mean-it 如果确定要删除存储,需要将pg_name 输入两次,然后写上--yes-i-really-really-mean-it 这里有个提示,修改当前的Monitor配置文件/etc/ceph/ceph.conf 添加参数: mon_allow_pool_delete = true 然后执行 docker restart mon docker exec mon1 ceph osd pool delete data data --yes-i-really-really-mean-it pool 'data' removed 重命名存储池 docker exec mon1 ceph osd pool rename data datanew pool 'data' renamed to 'datanew' 查看存储池统计信息 docker exec mon1 rados df 执行下面的命令新建一个用户 (S3 接口): radosgw-admin user create --uid={username} --display-name="{display-name}" [--email={email}] docker exec mon1 radosgw-admin user create --uid=johndoe --display-name="John Doe" --email=john@example.com
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ceph13.2使用docker部署 - Python技术站