一、ceph基础
1.1 ceph 简介
Ceph 是一个开源的分布式存储系统,同时支持对象存储、块设备、文件系统.
ceph 是一个对象(object)式存储系统,它把每一个待管理的数据流(文件等数据)切分为一到多个固定大小(默认 4 兆)的对象数据,并以其为原子单元(原子是构成元素的最小单元)完成数据的读写。
对象数据的底层存储服务是由多个存储主机(host)组成的存储集群,该集群也被称之为RADOS(reliable automatic distributed object store)存储集群,即可靠的、自动化的、分布式的对象存储系统。
librados 是 RADOS 存储集群的 API,支持 C/C++/JAVA/python/ruby/php/go等编程语言客户端。

讯享网
1.2 ceph 设计思想
Ceph 的设计旨在实现以下目标: 每一组件皆可扩展
无单点故障
基于软件(而非专用设备)并且开源(无供应商锁定) 在现有的廉价硬件上运行
尽可能自动管理,减少用户干预
1.3 ceph 集群角色定义
https://docs.ceph.com/en/latest/start/intro/
http://docs.ceph.org.cn/start/intro/
一个 ceph 集群的组成部分:
若干的 Ceph OSD(对象存储守护程序)
至少需要一个 Ceph Monitors 监视器(1,3,5,7…)
两个或以上的 Ceph 管理器 managers,运行 Ceph 文件系统客户端时还需要高可用的 Ceph Metadata Server(文件系统元数据服务器)。
RADOS cluster:由多台 host 存储服务器组成的 ceph 集群
OSD(Object Storage Daemon):每台存储服务器的磁盘组成的存储空间
Mon(Monitor):ceph 的监视器,维护 OSD 和 PG 的集群状态,一个 ceph 集群至少要有一个
mon,可以是一三五七等等这样的奇数个。
Mgr(Manager):负责跟踪运行时指标和 Ceph 集群的当前状态,包括存储利用率,当前性能指标和系统负载等。

在一个主机上运行的一个守护进程,Ceph Manager 守护程序(ceph-mgr)负责跟踪运行时指标和 Ceph 集群的当前状态,包括存储利用率,当前性能指标和系统负载。Ceph
Manager 守护程序还托管基于 python 的模块来管理和公开 Ceph 集群信息,包括基于 Web
的 Ceph 仪表板和 REST API。高可用性通常至少需要两个管理器。
提供存储数据,操作系统上的一个磁盘就是一个 OSD 守护程序,OSD 用于处理 ceph 集群数据复制,恢复,重新平衡,并通过检查其他 Ceph OSD 守护程序的心跳来向 Ceph 监视器和管理器提供一些监视信息。通常至少需要 3 个 Ceph OSD 才能实现冗余和高可用性。
代表 ceph 文件系统(NFS/CIFS)存储元数据,(即 Ceph 块设备和 Ceph 对象存储不使用
MDS)
1. ceph 的常用管理接口是一组命令行工具程序,例如 rados、ceph、rbd 等命令,ceph 管理员可以从某个特定的 ceph-mon 节点执行管理操作
2. 推荐使用部署专用的管理节点对 ceph 进行配置管理、升级与后期维护,方便后期权限管理,管理节点的权限只对管理人员开放,可以避免一些不必要的误操作的发生。

第一步: 计算文件到对象的映射
计算文件到对象的映射,假如 file 为客户端要读写的文件,得到 oid(object id) = ino + ono ino:inode number (INO),File 的元数据序列号,File 的唯一 id。
ono:object number (ONO),File 切分产生的某个 object 的序号,默认以 4M 切分一个块大小。
第二步:通过 hash 算法计算出文件对应的 pool 中的 PG:第一步: 计算文件到对象的映射:
通过一致性 HASH 计算 Object 到 PG, Object -> PG 映射 hash(oid) & mask-> pgid
第三步: 通过 CRUSH 把对象映射到 PG 中的 OSD
通过 CRUSH 算法计算 PG 到 OSD,PG -> OSD 映射:[CRUSH(pgid)->(osd1,osd2,osd3)]
第四步:PG 中的主 OSD 将对象写入到硬盘
第五步: 主 OSD 将数据同步给备份 OSD,并等待备份 OSD 返回确认第六步: 主 OSD 将写入完成返回给客户端
二 、ceph集群部署
2.1 服务器准备
集群部署至少三台服务器,本次规划如下:
cat /etc/hosts
192.168.21.150 deploy.example.local deploy
192.168.21.151 node1.example.local node1
192.168.21.152 node2.example.local node2
192.168.21.153 node3.example.local node3
192.168.21.154 mon1.example.local mon1
192.168.21.155 mon2.example.local mon2
192.168.21.156 mon3.example.local mon3
192.168.21.157 mgr.example.local mgr
cluster 网络网段为192.168.81.0/24 ,主机位与public网络相同。其中node节点上均增加3块20G磁盘
2.2 系统准备
均安装Ubuntu 18.04 ,时间同步,关闭防火墙 配置hosts 域名解析
2.3 配置清华大学镜像源
root@deploy:# cat /etc/apt/sources.list
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific/ bionic main
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific/ bionic main
root@deploy:
#
2.4 创建用户
groupadd -r -g 2023 magedu && useradd -r -m -s /bin/bash -u 2023 -g 2023 magedu && echo magedu: | chpasswd
各服务器允许magedu 用户以sudo用户执行特权命令
echo “magedu ALL=(ALL) NOPASSWD: ALL” >>/etc/sudoers

配置deploy节点免密钥登录 其他各节点
切换到magedu 用户 执行ssh-keygen
ssh-copy-id magedu@192.168.21.151
ssh-copy-id magedu@192.168.21.152
ssh-copy-id magedu@192.168.21.153
ssh-copy-id magedu@192.168.21.154
ssh-copy-id magedu@192.168.21.155
ssh-copy-id magedu@192.168.21.156
ssh-copy-id magedu@192.168.21.157
2.5 安装部署工具
在deploy 节点安装ceph-deploy

2.6 初始化mon节点
创建ceph-cluster目录,保存集群初始化信息

Ubuntu 各服务器需要单独安装 Python2:


建立集群并验证
magedu@deploy:/ceph-cluster$ ceph-deploy new –cluster-network 192.168.81.0/24 –public-network 192.168.21.0/24 mon1.example.local
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/magedu/.cephdeploy.conf
[ceph_deploy.cli][INFO ] Invoked (2.0.1): /usr/bin/ceph-deploy new –cluster-network 192.168.81.0/24 –public-network 192.168.21.0/24 mon1.example.local
[ceph_deploy.cli][INFO ] ceph-deploy options:
[ceph_deploy.cli][INFO ] username : None
[ceph_deploy.cli][INFO ] verbose : False
[ceph_deploy.cli][INFO ] overwrite_conf : False
[ceph_deploy.cli][INFO ] quiet : False
[ceph_deploy.cli][INFO ] cd_conf : <ceph_deploy.conf.cephdeploy.Conf instance at 0x7fd8d148edc0>
[ceph_deploy.cli][INFO ] cluster : ceph
[ceph_deploy.cli][INFO ] ssh_copykey : True
[ceph_deploy.cli][INFO ] mon : [‘mon1.example.local’]
[ceph_deploy.cli][INFO ] func : <function new at 0x7fd8ce745ad0>
[ceph_deploy.cli][INFO ] public_network : 192.168.21.0/24
[ceph_deploy.cli][INFO ] ceph_conf : None
[ceph_deploy.cli][INFO ] cluster_network : 192.168.81.0/24
[ceph_deploy.cli][INFO ] default_release : False
[ceph_deploy.cli][INFO ] fsid : None
[ceph_deploy.new][DEBUG ] Creating new cluster named ceph
[ceph_deploy.new][INFO ] making sure passwordless SSH succeeds
[mon1.example.local][DEBUG ] connected to host: deploy
[mon1.example.local][INFO ] Running command: ssh -CT -o BatchMode=yes mon1.example.local
[mon1.example.local][DEBUG ] connection detected need for sudo
[mon1.example.local][DEBUG ] connected to host: mon1.example.local
[mon1.example.local][DEBUG ] detect platform information from remote host
[mon1.example.local][DEBUG ] detect machine type
[mon1.example.local][DEBUG ] find the location of an executable
[mon1.example.local][INFO ] Running command: sudo /bin/ip link show
[mon1.example.local][INFO ] Running command: sudo /bin/ip addr show
[mon1.example.local][DEBUG ] IP addresses found: [u’192.168.81.154’, u’192.168.21.154’]
[ceph_deploy.new][DEBUG ] Resolving host mon1.example.local
[ceph_deploy.new][DEBUG ] Monitor mon1 at 192.168.21.154
[ceph_deploy.new][DEBUG ] Monitor initial members are [‘mon1’]
[ceph_deploy.new][DEBUG ] Monitor addrs are [u’192.168.21.154’]
[ceph_deploy.new][DEBUG ] Creating a random mon key…
[ceph_deploy.new][DEBUG ] Writing monitor keyring to ceph.mon.keyring…
[ceph_deploy.new][DEBUG ] Writing initial config to ceph.conf…
magedu@deploy:/ceph-cluster\( ls<br>bak ceph.conf ceph-deploy-ceph.log ceph.mon.keyring<br>magedu@deploy:~/ceph-cluster\) cat ceph.conf
[global]
fsid = f8b123bf-1b48-4eda-8b2f-4aff6a69318a
public_network = 192.168.21.0/24
cluster_network = 192.168.81.0/24
mon_initial_members = mon1
mon_host = 192.168.21.154
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
magedu@deploy:/ceph-cluster$ cat ceph.mon.keyring
[mon.]
key = AQCAZB9hAAAA
初始化存储节点


在mon节点安装mon

初始化mon并验证



2.7 分发admin密钥
各节点安装ceph-common组件
apt install ceph-common -y

增加magedu 用户权限
setfacl -m u:magedu:rw /etc/ceph/ceph.client.admin.keyring && ll /etc/ceph

部署mgr节点
首先在mgr节点安装mgr
root@mgr:# apt install ceph-mgr
在部署节点添加mgr

ceph-deploy 管理ceph集群
apt install ceph-common #安装common组件
ceph-deploy admin deploy #推送密钥给自己
setfacl -m:u:magedu:rw /etc/ceph/ceph.client.admin.keyring #授权
ceph -s、
、 
ceph config set mon auth_allow_insecure_global_id_reclaim false #消除mon告警

准备 OSD 节点:
OSD 节点安装运行环境:


擦除各个存储节点的磁盘

创建各个存储节点数据盘

设置 OSD 服务自启动:

systemctl enable ceph-osd@0
systemctl enable ceph-osd@1
systemctl enable ceph-osd@2
依次设置其他节点
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/148399.html