架构师的成长之路初片~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的密钥文件:

  

 

posted @ 2021-03-28 14:33  樱花泪  阅读(275)  评论(0编辑  收藏  举报