Ceph存储部署

Ceph存储部署

一、Ceph介绍

Ceph 是一个开源的分布式存储系统,同时支持对象存储、块设备、文件系统.。

ceph 是一个对象(object)式存储系统,它把每一个待管理的数据流(文件等数据)切分为一到 多个固定大小(默认 4 兆)的对象数据,并以其为原子单元(原子是构成元素的最小单元)完成 数据的读写。

对象数据的底层存储服务是由多个存储主机(host)组成的存储集群,该集群也被称之为 RADOS(reliable automatic distributed object store)存储集群,即可靠的、自动化的、分布 式的对象存储系统。

librados 是 RADOS 存储集群的 API,支持 C/C++/JAVA/python/ruby/php/go 等编程语言客户端。

二、Ceph组件
2.1 Monitor(ceph-mon) ceph 监视器

在一个主机上运行的一个守护进程,用于维护集群状态映射(maintains maps of the cluster state),比如 ceph 集群中有多少存储池、每个存储池有多少 PG 以及存储池和 PG 的映射关系等, monitor map, manager map, the OSD map, the MDS map, and the CRUSH map,这些映射是 Ceph 守护程序相互协调所需的关键群集状态,此外监视器还负 责管理守护程序和客户端之间的身份验证(认证使用 cephX 协议)。通常至少需要三个监视器 才能实现冗余和高可用性。

2.2 Managers(ceph-mgr)的功能

在一个主机上运行的一个守护进程,Ceph Manager 守护程序(ceph-mgr)负责跟踪 运行时指标和 Ceph 集群的当前状态,包括存储利用率,当前性能指标和系统负载。Ceph Manager 守护程序还托管基于 python 的模块来管理和公开 Ceph 集群信息,包括基于 Web 的 Ceph 仪表板和 REST API。高可用性通常至少需要两个管理器。

2.3 Ceph OSDs(对象存储守护程序 ceph-osd)

提供存储数据,操作系统上的一个磁盘就是一个 OSD 守护程序,OSD 用于处理 ceph 集群数据复制,恢复,重新平衡,并通过检查其他 Ceph OSD 守护程序的心跳来向 Ceph 监视器和管理器提供一些监视信息。通常至少需要 3 个 Ceph OSD 才能实现冗余和高可用 性。

2.4 MDS(ceph 元数据服务器 ceph-mds)

代表 ceph 文件系统(NFS/CIFS)存储元数据,(即 Ceph 块设备和 Ceph 对象存储不使用 MDS)

三、ceph 逻辑组织架构
  • Pool:存储池、分区,存储池的大小取决于底层的存储空间。
  • PG(placement group):一个 pool 内部可以有多个 PG 存在,pool 和 PG 都是抽象的逻辑概 念,一个 pool 中有多少个 PG 可以通过公式计算。
  • OSD(Object Storage Daemon,对象存储设备):每一块磁盘都是一个 osd,一个主机由一个或 多个 osd 组成.

ceph 集群部署好之后,要先创建存储池才能向 ceph 写入数据,文件在向 ceph 保存之前要 先进行一致性 hash 计算,计算后会把文件保存在某个对应的 PG 的,此文件一定属于某个 pool 的一个 PG,在通过 PG 保存在 OSD 上。 数据对象在写到主 OSD 之后再同步对从 OSD 以实现数据的高可用。

四、使用ceph-deploy部署ceph存储
准备

这里使用 ceph-deploy 来部署三节点的ceph集群,节点信息如下:
10.200.1.100 ceph-node01
10.200.1.101 ceph-node02
10.200.1.102 ceph-node03
所有操作均在 ceph-node01 节点进行操作。

A.在每台机器上都配置hosts
# cat /etc/hosts
10.200.1.100 ceph-node01
10.200.1.101 ceph-node02
10.200.1.102 ceph-node03
B.配置互信免秘登录
ssh-keygen    #生成秘钥,一路回车
ssh-copy-id root@ceph-node01    #将公钥拷贝到3个节点
C.安装ansible
yum -y install ansible
cat /etc/ansible/hosts | grep -v ^# | grep -v ^$
[node]
ceph-node01
ceph-node02
ceph-node03
D.关闭SeLinux和Firewall
# ansible node -m copy -a 'src=/etc/hosts dest=/etc/'
# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
# ansible node -m copy -a 'src=/etc/selinux/config dest=/etc/selinux/'
# systemctl stop firewalld
# systemctl disable firewalld
# ansible node -a 'systemctl stop firewalld'
# ansible node -a 'systemctl disable firewalld'
E.安装NTP
# yum -y install ntp ntpdate ntp-doc
# systemctl start ntpdate
# systemctl start ntpd
# systemctl enable ntpd ntpdate
# ansible node -a 'yum -y install ntp ntpdate ntp-doc'
# ansible node -a 'systemctl start ntpdate'
# ansible node -a 'systemctl start ntpd'
# ansible node -a 'systemctl enable ntpdate'
# ansible node -a 'systemctl enable ntpd'
F.安装相应源
# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo   ###安装EPEL源
# ansible node -m copy -a 'src=/etc/yum.repos.d/epel.repo dest=/etc/yum.repos.d/'
# yum -y install yum-plugin-priorities
# yum -y install snappy leveldb gdisk python-argparse gperftools-libs
# rpm --import 'https://mirrors.aliyun.com/ceph/keys/release.asc'
# vim /etc/yum.repos.d/ceph.repo                                                  ###安装阿里云的ceph源
[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.aliyun.com/ceph/rpm-octopus/el7/$basearch
enabled=1
gpgcheck=1
priority=1
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
[Ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-octopus/el7/noarch
enabled=1
gpgcheck=1
priority=1
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-octopus/el7/SRPMS
enabled=1
gpgcheck=1
priority=1
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
# yum makecache
五、部署ceph集群
A.安装ceph-deploy
# yum -y install ceph-deploy
B.启动一个新的 ceph 集群(官方建议创建特定用户来部署集群)
# mkdir /etc/ceph && cd /etc/ceph
# ceph-deploy new ceph-node{01,02,03}
# ls
ceph.conf  ceph-deploy-ceph.log  ceph.log  ceph.mon.keyring
# ceph-deploy new --cluster-network 192.168.100.0/24 --public-network 192.168.100.0/24 ceph{01,02,03} 
C.部署 octopus 版本的 ceph 集群并查看配置文件
# ceph-deploy install --release octopus ceph{01,02,03}
# ceph --version
ceph version 15.2.14 (79a10589f1f80dfe21e8f9794365ed98143071c4) octopus (stable)
# ls
ceph.conf  ceph-deploy-ceph.log  ceph.log  ceph.mon.keyring  rbdmap
# cat ceph.conf 
[global]
fsid = afd8b41f-f9fa-41da-85dc-e68a1612eba9
public_network = 10.200.1.0/24
cluster_network = 10.200.2.0/24
mon_initial_members = ceph-node01, ceph-noce02, ceph-node03
mon_host = 10.200.1.100,10.200.1.101,10.200.1.102
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = ceph

注:如果安装失败,请yum安装
# yum -y install ceph ceph-radosgw
D.激活监控节点
# ceph-deploy mon create-initial
# ls
ceph.bootstrap-mds.keyring  ceph.bootstrap-osd.keyring  ceph.client.admin.keyring  ceph-deploy-ceph.log  ceph.mon.keyring
ceph.bootstrap-mgr.keyring  ceph.bootstrap-rgw.keyring  ceph.conf       ceph.log  rbdmap
E.查看健康状况
[root@ceph-node01 ~]# ceph -s
  cluster:
    id:     785353d9-521f-4508-affc-fea5f2cc8f18
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum ceph-node01,ceph-node02,ceph-node03
    mgr: ceph-node01(active), standbys: ceph-node02, ceph-		 node03
    osd: 9 osds: 9 up, 9 in
    rgw: 1 daemon active
 
  data:
    pools:   6 pools, 168 pgs
    objects: 225  objects, 1.9 KiB
    usage:   25 GiB used, 875 GiB / 900 GiB avail
    pgs:     168 active+clean
F.将管理密钥拷贝到各个节点上
# ceph-deploy admin ceph-node{01,02,03}
# ansible node -a 'ls /etc/ceph/'
10.200.1.101 | SUCCESS | rc=0 >>
ceph.client.admin.keyring
ceph.conf
rbdmap
tmpUxAfBs
10.200.1.102 | SUCCESS | rc=0 >>
ceph.client.admin.keyring
ceph.conf
rbdmap
tmp5Sx_4n
G.创建 ceph 管理进程服务
# ceph-deploy mgr create ceph{01,02,03}
# ceph -s
  cluster:
    id:     afd8b41f-f9fa-41da-85dc-e68a1612eba9
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum ceph01,ceph02,ceph03
    mgr: ceph01(active), standbys: ceph02, ceph03
    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:
H.创建 ceph 对象网关实例
# ceph-deploy rgw create ceph-node01

网关运行后,您应该能够7480 通过未认证的请求在端口上访问它,如下所示:
http://client-node:7480
注:如果您在任何时候遇到麻烦并且想要重新开始,请执行以下操作清除配置:

ceph-deploy purge <gateway-node1> [<gateway-node2>]
ceph-deploy purgedata <gateway-node1> [<gateway-node2>]
I.启动 osd 创建数据
# ceph-deploy osd create --data /dev/sdb ceph-node01
# ceph-deploy osd create --data /dev/sdb ceph-node02
# ceph-deploy osd create --data /dev/sdb ceph-node03
# ceph -s  
  cluster:
    id:     afd8b41f-f9fa-41da-85dc-e68a1612eba9
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum ceph01,ceph02,ceph03
    mgr: ceph01(active), standbys: ceph02, ceph03
    osd: 3 osds: 3 up, 3 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   3.0 GiB used, 57 GiB / 60 GiB avail
    pgs:
擦除磁盘脚本
disk=(sdc sdd sde sdf sdg sdh sdi sdj sdk sdl)
for i in `echo ${disk[@]}`;
do
   parted -s /dev/$i rm {1,2}
done

for j in `echo ${disk[@]}`;
do
   ceph-disk zap /dev/$j;
done
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值