架构师的成长之路初片~Ceph
源:
https://note.youdao.com/web/#/file/SVRAE83105DD5A9469A87B53DCEC5D4AF89/note/96C7C5832F7C48AA8494B51BECA7A3E7/
官网:https://docs.ceph.com (外网)
http://docs.ceph.org.cn (国网)
Ceph:是一个分布式存储(系统)
分布式是一种独特的系统架构,通过高速网络组合在一起,提供相同的服务
分布式系统是为了用廉价、普通的机器完成单个计算机无法完成的计算、存储任内
目的:利用更多的机器,处理更多的数据。
ceph可以提供快存储,文件存储,对象存储。
ceph可以提供PB级别的存储空间
(PB-->TB-->GB)
常见的分布式文件系统:
Lustre
Hadoop
FastDFS
Ceph
GlusterFS
Ceph的三个存储:
块存储 : RADOS block device: RBD
优点:
提供快照,克隆等.
支持内存缓存,提高性能
缺点:一个存储池只能一台机子用,不能多人用。
文件系统存储
优点:兼顾多个应用和更多用户访问,同时提供方便的数据共享手段
缺点:性能要相对第一些。 文件存储的广泛兼容性和易用性
对象存储(RadosGateway)
优点:
缺点:
Ceph:特点
高可用、高扩展、高性能
可提供对象存储、块存储、文件系统存储
可提供PB级别的存储空间
软件定义存储,不依赖硬件设备。
Ceph组件:
OSD
存储设备
Monitors //监视器n\v
集群监控组件 //作用:监控集群主机的实时状态、绘制地图(详细的描述存储集群主机的磁盘大小、区域)
MON:遵循过半原则:集群存活数/集群主机数的二分之一。 n/(n/2)>(1/2) 奇数台,存活量是最多的。
RadosGateway
对象存储网关
MDSs
存放文件系统的元数据(对象存储和块存储不需要该组件)
Client
ceph客户端
数据存取思维:把文件的内容用16进制来划分随机数,只要随机数不变,不管文件名如何变化。
只要取数值的时候,只要随机数不变,取的就是相对应的内容。
三副本:当某一份数据被存到某台磁盘时,被存数据的服务器会把存入的数据随机拷贝到其他两台服务器种。始终保持三个数据的备份。
环境: Centos7.x
node1: 192.168.4.11
node2 192.168.4.12
node3 192.168.4.13
clent 192.168.4.10
VMWare:
添加一块光驱,把ceph的镜像放到光驱内,打开虚拟机。把所有的镜像按照原有的方式进行挂载。
自身环境:
mkdir /mnt/ceph echo "/dev/sr0 /mnt/ceph iso9660 defaults 0 0" >> /etc/fstab echo "/dev/sr1 /mnt/disk iso9660 defaults 0 0" >> /etc/fstab mkdir /mnt/ceph /etc/yum.repos.d/ceph.repo [chpe] name=chpe baseurl=file:///mnt/ceph/MON gpgcheck=0 [osd] name=osd baseurl=file:///mnt/ceph/OSD gpgcheck=0 [tools] name=tools baseurl=file:///mnt/ceph/Tools gpgcheck=0
如若完成在 yum repolist时出现报错,则稍等一会。 仔细检查关键字,挂载点,含包的目录(MON)
由于chpe镜像有三个仓库,所有需要添加三个。
sestatus //可查看防火墙与selinux的详细配置
2)node3\node1\node2添加一块20G的硬盘
3)所有主机关闭防火墙与SElinux
4)在node1节点上创建一个密钥,并且把密钥传给所有主机。
ssh-keygen -f /root/.ssh/id_rsa
ssh-copy-id 192.168.4.11/12/13/5
原因:为了登陆其他主机实现免密功能。
5)在node1的/etc/hosts文件中做好域名解析
192.168.4.5 client cli 192.168.4.11 n1 192.168.4.12 n2 192.168.4.13 n3
将做好的域名解析文件传送到其他主机。
for i in 10 11 12 13 5 do scp /etc/hosts 192.168.4.$i:/etc/hosts done
6)做NTP时间同步操作
装包:chrony
clent: 作为时间服务端
allow 192.168.4.0/24 #修改26行
local stratum 10
node1\node2\node3 作为时间同步端
server 192.168.4.5 iburst #配置文件第二行,手动添加一行新内容
chronyc sources -v #查看同步结果,应该是^*
基础环境搭建完成
--------------------------------------------------------------------------------------------------------------------
7)装包 新玩法(前提:做好免密):
for i in n1 n2 n3 //n1代表集群内的已做好的 域名主机。(免密) do ssh $i "yum -y install ceph-mon ceph-osd ceph-mds ceph-radisgw" done
8)在nodo1上装包(前提:node1做好所有机子的免密) ceph-deploy
8.1):创建Ceph集群配置,在ceph-cluster目录下生成Ceph配置文件(ceph.conf)。
在ceph.conf配置文件中定义monitor主机是谁。
ceph-deploy --help 命令的帮助手册
mkdir ceph-cluster //创建目录,目录名任意
如若在执行ceph-deploy命令时,必须在ceph-cluster目录下执行,如若不在此目录下,则会报错。
创建Ceph集群配置,在ceph-cluster目录下生成Ceph配置文件(ceph.conf)
ceph-deploy new n1 n2 n3 、 //产生的文件中,ceph.conf文件内会产生一个文件fsid/此命令执行后,会产生以下三个文件
ceph.conf ceph-deploy-ceph.log ceph.mon.keyring
在ceph.conf文件内添加一行指令(重定向即可)
rbd_default_features = 1 //#默认开启COW分层快照的功能,如若不加此命令,则需要在创建快照的时候加----命令。
8.2):初始化所有节点的mon服务,也就是启动mon服务。
拷贝当前目录的配置文件到所有节点的/etc/ceph/目录并启动mon服务。
ceph-deploy mon create-initial //#配置文件ceph.conf中有三个mon的IP,ceph-deploy脚本知道自己应该远程谁
ceph -s //查看集群健康状态
8.3):在每个node主机查看自己的服务(注意每台主机服务名称不同)
[root@node1 ceph-cluster]# systemctl status ceph-mon@node1
[root@node2 ~]# systemctl status ceph-mon@node2
[root@node3 ~]# systemctl status ceph-mon@node3
#备注:管理员可以自己启动(start)、重启(restart)、关闭(stop),查看状态(status).
#提醒:这些服务在30分钟只能启动3次,超过就报错.
#StartLimitInterval=30min //此命令可用在所有systemctl服务配置内,通用
#StartLimitBurst=3
#在这个文件中有定义/usr/lib/systemd/system/ceph-mon@.service
#如果修改该文件,需要执行命令# systemctl daemon-reload重新加载配置
8.4)4)查看ceph集群状态(现在状态应该是health HEALTH_ERR)
[root@node1 ceph-cluster]# ceph -s
9)创建OSD (以下左右操作均在node1中执行)
9.1) 初始化清空磁盘数据(仅node1操作即可)。初始化磁盘,将所有磁盘分区格式设置为GPT格式(根据实际情况填写磁盘名称)。
ceph-deploy disk zap node1:sdb node1:sdc
ceph-deploy disk zap node2:vdb node2:vdc
#相当于ssh 远程node1,在node1执行parted /dev/vdb mktable gpt
#其他主机都是一样的操作
#ceph-deploy是个脚本,这个脚本会自动ssh远程自动创建gpt分区
9.2)创建OSD存储空间
ceph-deploy osd create node1:sdb node1:sdc //每个磁盘都会被自动分成两个分区;一个固定5G大小;一个为剩余所有容量
#5G分区为Journal日志缓存;剩余所有空间为数据盘。
9.3)在各个主机用df -Th 查看磁盘
ceph osd tree /可查看所有磁盘与主机
systemctl status ceph-osd@0 //查看主机的状态
ceph -s //查看集群状态
报错集: clock skew表示时间不同步,解决办法:请先将所有主机的时间都使用NTP时间同步!!! Ceph要求所有主机时差不能超过0.05s,否则就会提示WARN。 如果状态还是失败,可以尝试执行如下命令,重启所有ceph服务: 常见错误及解决方法(非必须操作)。 使用osd create创建OSD存储空间时,如提示下面的错误提示: [ceph_deploy][ERROR ] RuntimeError: bootstrap-osd keyring not found; run 'gatherkeys' 可以使用如下命令修复文件,重新配置ceph的密钥文件: