ceph Luminous安装

网友投稿 301 2022-11-04


ceph Luminous安装

官方文档:​​​是一个分布式存储系统,诞生于 2004 年,最早致力于开发下一代高性能分布式文件系统的项目。随着云计算的发展,ceph 乘上了 OpenStack 的春风,进而成为了开源社区 受关注较高的项目之一。

Ceph是一个可大规模伸缩的、开放的、软件定义的存储平台,它将Ceph存储系统的最稳定版本与Ceph管理平台、部署实用程序和支持服务相结合。也称为分布式存储系统,其出现是为了解决分布式文件系统元数据成为存储的瓶颈问题的,常规情况下元数据存储服务会成为整个存储的中心节点,而ceph利用了一致性hash计算的方式将查询变成了取膜计算的方式,将查询变成了实时运算

ceph有点:

(1) crush 算法/高性能

Crush 算法是 ceph 的两大创新之一,简单来说,ceph 摒弃了传统的集中式存储元数据寻址的方案,转而使用 CRUSH 算法完成数据的寻址操作。CRUSH 在一致性哈希基础上很好 的考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。Crush 算法有相当强大的扩展性,理论上支持数千个存储节点。

(2) 高可用

Ceph 中的数据副本数量可以由管理员自行定义,并可以通过 CRUSH 算法指定副本的物理存储位置以分隔故障域,支持数据强一致性; ceph 可以忍受多种故障场景并自动尝试并行修复,没有单点故障,多数据副本,自动管理

(3) 高扩展性

Ceph 不同于 swift,客户端所有的读写操作都要经过代理节点。一旦集群并发量增大时,代理节点很容易成为单点瓶颈。Ceph 本身并没有主控节点,扩展起来比较容易,并且理论 上,它的性能会随着磁盘数量的增加而线性增长。支持10-1000台服务器,支持TB到PB级的扩展

(4) 特性丰富

Ceph 支持三种调用接口:对象存储,块存储,文件系统挂载。三种方式可以一同使用。在国内一些公司的云环境中,通常会采用 ceph 作为 openstack 的唯一后端存储来提升数据 转发效率

ceph应用场景

1.ceph作为云存储解决方案2.ceph作为软件定义的解决方案3.ceph作为统一的存储解决方案

二、Ceph的基本组件

Ceph 主要有三个基本进程:

(1) osd

用于集群中所有数据与对象的存储。处理集群数据的复制、恢复、回填、再均衡。并向其他 osd 守护进程发送心跳,然后向 Mon 提供一些监控信息。 当 Ceph 存储集群设定数据有两个副本时(一共存两份),则至少需要两个 OSD 守护进程 即两个 OSD 节点,集群才能达到 active+clean 状态。冗余和高可用性通常需要至少三个Ceph OSDs

(2) mds

为 Ceph 文件系统提供元数据计算、缓存与同步。在 ceph 中,元数据也是存储在 osd节点中的,mds 类似于元数据的代理缓存服务器。MDS 进程并不是必须的进程,只有需要 使用 CEPHFS 时,才需要配置 MDS 节点

(3) Monitor

监控整个集群的状态,维护着集群状态的各种图表,维护集群的 cluster MAP 二进制表,保证集群数据的一致性。ClusterMAP 描述了对象块存储的物理位置,以及一个将设备聚合到物理位置的桶列表。图表:监视器图、OSD图、归置组、PG图和CRUSH图

三、简易安装

3.1 基础环境准备

主机名称

IP

软件安装

配置

master

192.168.10.10

ceph-deploy-2.0.1、ceph-12.2.13、osd0

centos 7.9 4核6G 3块20G硬盘 网卡2块


node1

192.168.10.11

ceph-12.2.13、osd1

centos 7.9 2核2G 3块20G硬盘 网卡2块

node2

192.168.10.12

ceph-12.2.13、osd2

centos 7.9 2核2G 3块20G硬盘 网卡2块

网卡一块为存储外网集群管理之间的通信,一块为存储内网:数据之间均衡

3.2 系统环境准备

1.主机名修改hostnamectl set-hostname masterhostnamectl set-hostname node1hostnamectl set-hostname node22.所有服务器添加/etc/hosts192.168.10.10 master192.168.10.11 node1192.168.10.12 node23.ssh信任[root@master .ssh]# ssh-copy-id node1[root@master .ssh]# ssh-copy-id node24.修改系统yum源curl -o /etc/yum.repos.d/CentOS-Base.repo -O /etc/yum.repos.d/epel.repo ~]# cat /etc/yum.repos.d/ceph.repo [Ceph]name=Ceph packages for $basearchbaseurl=clean all && yum repolist6.查看硬盘[root@node2 ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot└─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm sdb 8:16 0 20G 0 disk sdc 8:32 0 20G 0 disk sr0 11:0 1 973M 0 rom7.时间同步ln -vs /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeyum install ntpdate -yntpdate time1.aliyun.com # 添加到定时任务echo "* */1 * * * /usr/sbin/ntpdate time1.aliyun.com" >>/var/spool/cron/root8.关闭防火墙systemctl stop firewalld ;systemctl disable firewalld ; iptables -F ;setenforce 0sed -i 's#enforcing#disabled#g' /etc/selinux/config9.系统优化sed -i 's/4096/102400/' /etc/security/limits.d/20-nproc.confecho "ulimit -SHn 102400" >>/etc/rc.localcat >>/etc/security/limits.conf<> ~/.pip/pip.conf<

3.2 开始部署

(1)使用master作为部署主机

1.安装deploy[root@master ~]# yum install python-pip -y[root@master ~]# pip install ceph-deploySuccessfully installed ceph-deploy-2.0.1

# 在控制节点建立ceph集群目录[root@master ~]# mkdir -p /data/ceph && cd /data/ceph# 2.初始化并创建一个monitor节点[root@master ceph]# ceph-deploy new master --public-network 192.168.10.0/24 --cluster-network 192.168.1.0/2生成3个文件:ceph.conf ceph-deploy-ceph.log ceph.mon.keyring # 3.调整ceph.conf配置参数 新增: osd_pool_default_min_size = 2 # 最小副本数osd_pool_default_size = 3 #默认3个副本数mon_clock_drift_allowed = 5osd_pool_default_crush_rule = 0osd_crush_chooseleaf_type =1# 4.所以服务器安装cephyum install ceph -y

(2)ceph 安装monitor节点

# 5.初始化monitor节点,覆盖monitor节点默认配置[root@master ceph]# ceph-deploy --overwrite-conf config push master# 6.收集并生成monitor节点秘钥[root@master ceph]# ceph-deploy mon create-initial[root@master ceph]# ll总用量 48-rw------- 1 root root 71 8月 15 13:52 ceph.bootstrap-mds.keyring-rw------- 1 root root 71 8月 15 13:52 ceph.bootstrap-mgr.keyring-rw------- 1 root root 71 8月 15 13:52 ceph.bootstrap-osd.keyring-rw------- 1 root root 71 8月 15 13:52 ceph.bootstrap-rgw.keyring-rw------- 1 root root 63 8月 15 13:52 ceph.client.admin.keyring-rw-r--r-- 1 root root 409 8月 15 13:41 ceph.conf-rw-r--r-- 1 root root 16841 8月 15 13:52 ceph-deploy-ceph.log-rw------- 1 root root 73 8月 15 13:37 ceph.mon.keyring

(3)ceph安装osd节点

# 7.操作osd节点,增加osd节点[root@master ceph]# ceph-deploy disk zap master /dev/sdb # 初始化磁盘[root@master ceph]# ceph-deploy osd create --data /dev/sdb master # 添加osd节点# 指定第2台机器的osd[root@master ceph]# ceph-deploy disk zap node1 /dev/sdb[root@master ceph]# ceph-deploy osd create --data /dev/sdb node2# 指定第3台机器的osd[root@master ceph]# ceph-deploy disk zap node2 /dev/sdb[root@master ceph]# ceph-deploy osd create --data /dev/sdb node2# 可以看到sdb已经被挂载了[root@master ceph]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 40G 0 disk ├─sda1 8:1 0 1G 0 part /boot└─sda2 8:2 0 39G 0 part ├─centos-root 253:0 0 35G 0 lvm / └─centos-swap 253:1 0 4G 0 lvm sdb 8:16 0 20G 0 disk └─ceph--3d40c509--ffcd--43fd--b697--c06a15deb952-osd--block--fd4759a5--6917--4c6c--bcc6--891a5b5c5eed 253:2 0 20G 0 lvm sdc 8:32 0 20G 0 disk sr0

(4)初始化管理节点

# 8.设置ceph集群管理节点[root@master ceph]# ceph-deploy admin master# 查看[root@master ceph]# ceph -s cluster: id: 960a81c9-337e-4424-bc26-d7d544dc5ff5 health: HEALTH_WARN no active mgr services: mon: 1 daemons, quorum master mgr: no daemons active osd: 3 osds: 3 up, 3 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0B usage: 0B used, 0B / 0B avail pgs: # no active mgr #9.创建mgr [root@master ceph]# ceph-deploy mgr create master [root@master ceph]# ceph -s cluster: id: 960a81c9-337e-4424-bc26-d7d544dc5ff5 health: HEALTH_OK[root@master ceph]# ceph osd treeID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 0.05846 root default -3 0.01949 host master 0 hdd 0.01949 osd.0 up 1.00000 1.00000 -5 0.01949 host node1 1 hdd 0.01949 osd.1 up 1.00000 1.00000 -7 0.01949 host node2 2 hdd 0.01949 osd.2 up 1.00000 1.00000

(5)块设备完整操作

# 10.ceph创建存储池[root@master ceph]# ceph osd pool create rbd 128 # 创建存储池pool 'rbd' created[root@master ceph]# ceph osd pool application enable rbd rbd # 启用存储池enabled application 'rbd' on pool 'rbd'# 查看ceph默认的存储池[root@master ceph]# ceph osd pool lsrbd[root@master ceph]# ceph -s cluster: id: 960a81c9-337e-4424-bc26-d7d544dc5ff5 health: HEALTH_OK services: mon: 1 daemons, quorum master mgr: master(active) osd: 3 osds: 3 up, 3 in data: pools: 1 pools, 128 pgs objects: 0 objects, 0B usage: 3.01GiB used, 57.0GiB / 60.0GiB avail pgs: 128 active+clean

#11.创建块存储:在rdb里创建一个4G的块存储叫test[root@master ceph]# rbd create --size 4096 test01 --image-feature layering --pool rbd# 查看已存在的块存储[root@master ceph]# rbd ls -lNAME SIZE PARENT FMT PROT LOCK test01 4GiB 2# 详细内容[root@master ceph]# rbd --image test01 inforbd image 'test01': size 4GiB in 1024 objects order 22 (4MiB objects) block_name_prefix: rbd_data.101d6b8b4567 format: 2 features: layering flags: create_timestamp: Mon Aug 15 14:14:42 2022

# 12.扩容块存储,但是不能缩容[root@master ceph]# rbd resize --image test01 --size 8192Resizing image: 100% complete...done.[root@master ceph]# rbd ls -lNAME SIZE PARENT FMT PROT LOCK test01 8GiB 2 # 13.映射块存储[root@master ceph]# rbd map test01/dev/rbd0[root@master ceph]# mkdir /db/test01 -p[root@master ceph]# mkfs.xfs -f /dev/rbd0[root@master ceph]# mount /dev/rbd0 /db/test01[root@master ceph]# df -h文件系统 容量 已用 可用 已用% 挂载点devtmpfs 2.9G 0 2.9G 0% /devtmpfs 2.9G 0 2.9G 0% /dev/shmtmpfs 2.9G 12M 2.9G 1% /runtmpfs 2.9G 0 2.9G 0% /sys/fs/cgroup/dev/mapper/centos-root 35G 2.2G 33G 7% //dev/sda1 1014M 151M 864M 15% /boottmpfs 579M 0 579M 0% /run/user/0tmpfs 2.9G 52K 2.9G 1% /var/lib/ceph/osd/ceph-0/dev/rbd0 8.0G 33M 8.0G 1% /db/test01[root@master ceph]# echo "This is test" > /db/test01/test.sh[root@master ceph]# cat /db/test01/test.sh This is test

(6)ceph块存储快照管理

# 14.制作快照# 给test01创建快照test01_snap[root@master ceph]# rbd --pool rbd snap create --snap test01_snap test01# 查看快照[root@master ceph]# rbd --pool rbd snap ls test01SNAPID NAME SIZE TIMESTAMP 4 test01_snap 8GiB Mon Aug 15 14:23:22 2022# 15.快照恢复[root@master ceph]# rm -f /db/test01/test.sh[root@master ceph]# umount /db/test01# 回滚[root@master ceph]# rbd --pool rbd snap rollback --snap test01_snap test01Rolling back to snapshot: 100% complete...done.[root@master ceph]# mount /dev/rbd0 /db/test01[root@master ceph]# cat /db/test01/test.sh This is test# 16.快照删除[root@master ceph]# rbd --pool rbd snap rm --snap test01_snap test01Removing snap: 100% complete...done.[root@master ceph]# rbd --pool rbd snap ls test01# 17.防止快照被删除[root@master ceph]# rbd --pool rbd snap create --snap test01_snap test01 # 创建快照[root@master ceph]# rbd --pool rbd snap ls test01SNAPID NAME SIZE TIMESTAMP 6 test01_snap 8GiB Mon Aug 15 14:29:27 2022 [root@master ceph]# rbd --pool rbd snap protect --image test01 --snap test01_snap # 保护快照[root@master ceph]# rbd --pool rbd snap rm --snap test01_snap test01 # 删除快照Removing snap: 0% complete...failed.rbd: snapshot 'test01_snap' is protected from removal.2022-08-15 14:30:32.200246 7fdb57ae8d40 -1 librbd::Operations: snapshot is protected# 18.取消快照保护[root@master ceph]# rbd --pool rbd snap ls test01SNAPID NAME SIZE TIMESTAMP 6 test01_snap 8GiB Mon Aug 15 14:29:27 2022[root@master ceph]# rbd --pool rbd snap unprotect --image test01 --snap test01_snap[root@master ceph]# rbd --pool rbd snap rm --snap test01_snap test01Removing snap: 100% complete...done.[root@master ceph]# rbd --pool rbd snap ls test01# 19.快照克隆[root@master ceph]# rbd --pool rbd snap create --snap test01_snap test01 # 创建[root@master ceph]# rbd snap protect rbd/test01@test01_snap # 保护快照[root@master ceph]# rbd clone rbd/test01@test01_snap rbd/test01_snap-clone # 克隆快照[root@master ceph]# rbd ls # rbd children rbd/test01@test01_snaptest01test01_snap-clone# 20.删除克隆的快照[root@master ceph]# rbd rm test01_snap-cloneRemoving image: 100% complete...done.[root@master ceph]# rbd snap unprotect rbd/test01@test01_snap[root@master ceph]# rbd --pool rbd snap rm --snap test01_snap test01Removing snap: 100% complete...done.[root@master ceph]# rbd lstest01

(7) 删除块存储

# 21.删除块存储[root@master ceph]# rbd ls -lNAME SIZE PARENT FMT PROT LOCK test01 8GiB 2 [root@master ceph]# umount /db/test01[root@master ceph]# rbd unmap test01[root@master ceph]# rbd rm test01Removing image: 100% complete...done.[root@master ceph]# rbd ls -l

(8)ceph常用服务

# mon相关服务systemctl status ceph-mon.targetsystemctl status ceph.targetsystemctl status ceph-mon@master.service# osd相关服务systemctl status ceph-osd.targetsystemctl status ceph.targetsystemctl status ceph-osd@0.servicesystemctl status ceph-osd@1.servicesystemctl status ceph-osd@2.service

(9)ceph osd节点管理

# 22.扩容osd节点,新增磁盘cd /data/ceph[root@master ceph]# ceph-deploy disk zap master /dev/sdc[root@master ceph]# ceph-deploy osd create --data /dev/sdc master[root@master ceph]# ceph osd treeID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 0.07794 root default -3 0.03897 host master 0 hdd 0.01949 osd.0 up 1.00000 1.00000 3 hdd 0.01949 osd.3 up 1.00000 1.00000 -5 0.01949 host node1 1 hdd 0.01949 osd.1 up 1.00000 1.00000 -7 0.01949 host node2 2 hdd 0.01949 osd.2 up 1.00000 1.00000 # 如果需要看添加过程可以再开一个窗口 watch ceph osd tree # node1和node2节点也添加一块磁盘 [root@master ~]# ceph osd treeID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 0.11691 root default -3 0.03897 host master 0 hdd 0.01949 osd.0 up 1.00000 1.00000 3 hdd 0.01949 osd.3 up 1.00000 1.00000 -5 0.03897 host node1 1 hdd 0.01949 osd.1 up 1.00000 1.00000 4 hdd 0.01949 osd.4 up 1.00000 1.00000 -7 0.03897 host node2 2 hdd 0.01949 osd.2 up 1.00000 1.00000 5 hdd 0.01949 osd.5 up 1.00000 1.00000 # 23.缩容osd节点 # 想要缩减集群尺寸或替换硬件,可在运行时删除osd。在ceph里,一个osd通常是一台主机上的ceph-osd守护进程,它运行在一块硬盘上,如果一台主机有多个硬盘,需要挨个删除其对应ceph-osd。 # 通常删除前检查集群容量,看看是否快达到上线,确保删除osd后不会使集群达到near full比率 # 加入osd.5磁盘出现问题或者down了,怎么处理? # 1.把osd踢出集群,删除osd前通常是up或in的,踢出集群,以使ceph启动重新均衡,把数据拷贝到其它OSD上 [root@node2 ~]# systemctl stop ceph-osd@5.service [root@node2 ~]# systemctl disable ceph-osd@5.service [root@master ceph]# ceph osd tree -7 0.03897 host node2 2 hdd 0.01949 osd.2 up 1.00000 1.00000 5 hdd 0.01949 osd.5 down 1.00000 1.00000 [root@master ceph]# ceph osd out osd.5 marked out osd.5. [root@master ceph]# ceph osd crush remove osd.5 #删除crush图对应的osd条目,让它不再接收数据 removed item id 5 name 'osd.5' from crush map [root@master ceph]# ceph auth del osd.5 # 删除认证秘钥 updated[root@master ceph]# ceph osd rm osd.5 # 删除osdremoved osd.5# 删除对应服务器的磁盘信息[root@node2 ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot└─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm sdb 8:16 0 20G 0 disk └─ceph--e7739570--6006--40a7--8949--cfa3c22fb39b-osd--block--98017e1e--8149--47ed--adfe--2d3dd5d267b8 253:2 0 20G 0 lvm sdc 8:32 0 20G 0 disk └─ceph--2304eb30--fb9a--47e9--935f--819b4451e23b-osd--block--3245742a--fcb2--4205--9367--79b7fd723d48 253:3 0 20G 0 lvm sr0 11:0 1 973M 0 rom [root@node2 ~]# dmsetup remove ceph--2304eb30--fb9a--47e9--935f--819b4451e23b-osd--block--3245742a--fcb2--4205--9367--79b7fd723d48# 格式化磁盘[root@node2 ~]# mkfs.xfs -f /dev/sdc如果需要再加进来,执行第22条中里的扩容2条就行

(10)monitor节点的扩容和缩容

24.添加mon节点:将node1、node2添加为monitor节点[root@master ceph]# cd /data/ceph/[root@master ceph]# ceph-deploy --overwrite-conf mon add node1[root@master ceph]# ceph-deploy --overwrite-conf mon add node2[root@master ~]# ceph -s cluster: id: 960a81c9-337e-4424-bc26-d7d544dc5ff5 health: HEALTH_OK services: mon: 3 daemons, quorum master,node1,node2 mgr: master(active) osd: 5 osds: 5 up, 5 in data: pools: 1 pools, 128 pgs objects: 3 objects, 19B usage: 5.03GiB used, 95.0GiB / 100GiB avail pgs: 128 active+clean 25.mon节点缩容 # 删除2个monitor节点 [root@master ceph]# ceph-deploy mon destroy node1 node2 [root@master ceph]# ceph -s cluster: id: 960a81c9-337e-4424-bc26-d7d544dc5ff5 health: HEALTH_OK services: mon: 1 daemons, quorum master mgr: master(active) osd: 5 osds: 5 up, 5 in data: pools: 1 pools, 128 pgs objects: 3 objects, 19B usage: 5.03GiB used, 95.0GiB / 100GiB avail pgs: 128 active+clean

(11)ceph开启监控模块dashboard

# 查看可以选择的模块[root@master ceph]# ceph mgr dump{ "epoch": 96, "active_gid": 4118, "active_name": "master", "active_addr": "192.168.10.10:6802/8474", "available": true, "standbys": [], "modules": [ "balancer", "restful", "status" ], "available_modules": [ "balancer", "dashboard", "influx", "localpool", "prometheus", "restful", "selftest", "status", "telemetry", "zabbix" ], "services": {}}# 启用dashboard模块[root@master ceph]# ceph mgr module enable dashboar# 编辑ceph.conf文件,增加:[mgr]mgr_modules = dashboard# 设置dashboard的ip和端口[root@master ceph]# ceph config-key put mgr/dashboard/server_addr 192.168.10.10set mgr/dashboard/server_addr[root@master ceph]# ceph config-key put mgr/dashboard/server_port 7000set mgr/dashboard/server_port

访问dashboard:​​http://192.168.10.10​​:7000


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:私有域
下一篇:个人犯罪记录网上查询API(个人犯罪记录网上查询app)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~