关于ceph:cephdeploy-搭建ceph集群

38次阅读

共计 2585 个字符,预计需要花费 7 分钟才能阅读完成。

ceph 集群搭建

ceph 组件介绍

  • MON(monitor)
    MonitorCeph 集群中扮演者管理者的角色,保护了整个集群的状态,是 Ceph 集群中最重要的组件。Mon保障集群的相干组件在同一时刻可能达成统一,相当于集群的领导层,负责收集、更新和公布集群信息。为了躲避单点故障,在理论的 Ceph 部署环境中会部署多个 Mon,同样会引来多个Mon 之前如何协同工作的问题。在一个规范的 Ceph 环境中。
  • OSD
    理论存储数据的过程。通常一个 OSD daemon 绑定一个物理磁盘。Client write/read 数据最终都会走到 OSD 去执行 write/read 操作。
  • RADOS(Reliable Autonomic Distributed Object Store, RADOS)
    RADOSCeph 存储集群的根底。Ceph 中的所有都以对象的模式存储,而RADOS 就负责存储这些对象,而不思考它们的数据类型。RADOS 层确保数据一致性和可靠性。对于数据一致性,它执行数据复制、故障检测和复原。还包含数据在集群节点间的recovery
  • Librados
    简化拜访 RADOS 的一种办法,目前反对 PHP、Ruby、Java、Python、CC++语言。它提供了Ceph 存储集群的一个本地接口RADOS,并且是其余服务(如RBD、RGW) 的根底,以及为CephFS 提供POSIX 接口。librados API 反对间接拜访RADOS,使得开发者可能创立本人的接口来拜访Ceph 集群存储。
  • RBD
    Ceph块设施。对外提供块存储。能够像磁盘一样被映射、格式化曾经挂载到服务器上。反对 snapshot(快照) 及增量备份。
  • RGW
    Ceph对象网关,提供了一个兼容 S3Swiftrestful API 接口。RGW还反对多租户和 Openstackkeyston身份验证服务。
  • MDS
    Ceph元数据服务器,跟踪文件层次结构并存储只供 CephFS 应用的元数据。Ceph块设施和 RADOS 网关不须要元数据。MDS不间接给 client 提供数据服务。

ceph 写入数据流程

如下图所示一个 File 首先被切割为多个 objects,每个objects 默认 4M 大小,也就是 100M 的数据会被切割为 25 个 object,并且每个object 都有本人的 objectid,通过 hash 而后进行掩码的运算,确认object 是应该散布那个 pg 中,而后 pg 通过 crush 算法,将数据落在不同的 osd. 默认的crush 算法基于 host 的.



部署 ceph 集群

应用三台服务器

服务器 用处
192.168.21.101 node-1
192.168.21.101 node-2
192.168.21.102 node-3

批改三台服务器 hostname

hostnamectl set-hostname node-1
hostnamectl set-hostname node-2
hostnamectl set-hostname node-3

开启 ssh 免密登录

ssh-keygen
ssh-copy-id -i /root/.ssh/id_rsa.pub node-2
ssh-copy-id -i /root/.ssh/id_rsa.pub node-3

敞开所有节点 selinux 和 firewalld

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
systemctl stop firewalld

所有节点装置 ntp

yum install ntp ntpdate ntp-doc
systemctl start ntpd && systemctl enable ntpd
ntpq -np

所有节点增加 yum 源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
cat >/etc/yum.repos.d/ceph.repo <<EOF
[norch]
name=norch
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/
enabled=1
gpgcheck=0

[x86_64]
name=x86_64
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/
enabled=1
gpgcheck=0
EOF

装置 ceph 初始化 mon

yum clean all && yum makecache
yum install python-setuptools ceph-deploy -y
mkdir ceph-deploy && cd ceph-deploy
ceph-deploy new  --public-network 192.168.21.0/0 --cluster-network 192.168.21.0/0 node-1
yum install ceph ceph-mon ceph-mgr ceph-radosgw cepht-mds -y  #所有节点装置
ceph-deploy mon create-initial #初始化 mon
ceph-deploy admin node-1 node-2 node-3 #推送配置文件到各个节点
ceph-deploy mgr create node-1 #初始化 mgr 作为监控
ceph -s # 查看集群状态

扩大 mon 增加 osd

# 集群增加 osd
ceph-deploy osd create node-1 --data /dev/sdb
ceph-deploy osd create node-2 --data /dev/sdb
ceph-deploy osd create node-3 --data /dev/sdb
#增加 mon 节点使其高可用
ceph-deploy --overwrite mon add node-2
ceph-deploy --overwrite mon add node-3
#查看 osd 状态
ceph osd tree
#查看 Ceph monitor 仲裁状态
ceph quorum_status --format json-pretty

正文完
 0