Ceph

 Ceph简介

Ceph使用C++语言开发,是一个开放、自我修复和自我管理的开源分布式存储系统。具有高扩展性、高性能、高可靠性的优点。Ceph目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack,Kubernetes都可与Ceph整合以支持虚拟机镜像的后端存储。

Ceph 优势

●高扩展性:去中心化,支持使用普通X86服务器,支持上千个存储节点的规模,支持TB到EB级的扩展。
●高可靠性:没有单点故障,多数据副本,自动管理,自动修复。
●高性能:摒弃了传统的集中式存储元数据寻址的方案,采用 CRUSH 算法,数据分布均衡,并行度高。
●功能强大:Ceph是个大一统的存储系统,集块存储接口(RBD)、文件存储接口(CephFS)、对象存储接口(RadosGW)于一身,因而适用于不同的应用场景。

存储基础

#单机存储设备
●DAS(直接附加存储,是直接接到计算机的主板总线上去的存储)
IDE、SATA、SCSI、SAS、USB 接口的磁盘
所谓接口就是一种存储设备驱动下的磁盘设备,提供块级别的存储

●NAS(网络附加存储,是通过网络附加到当前主机文件系统之上的存储)
NFS、CIFS、FTP
文件系统级别的存储,本身就是一个做好的文件系统,通过nfs接口在用户空间输出后,客户端基于内核模块与远程主机进行网络通信,把它转为好像本地文件系统一样来使用,这种存储服务是没办法对它再一次格式化创建文件系统块的

●SAN(存储区域网络)
SCSI协议(只是用来传输数据的存取操作,物理层使用SCSI线缆来传输)、FCSAN(物理层使用光纤来传输)、iSCSI(物理层使用以太网来传输)
也是一种网络存储,但不同之处在于SAN提供给客户端主机使用的接口是块级别的存储

//分布式存储(软件定义的存储 SDS)
Ceph、TFS、FastDFS、MooseFS(MFS)、HDFS、GlusterFS(GFS)
存储机制会把数据分散存储到多个节点上,具有高扩展性、高性能、高可用性等优点。

#分布式存储的类型
●块存储(例如硬盘,一般是一个存储被一个服务器挂载使用,适用于容器或虚拟机存储卷分配、日志存储、文件存储)
就是一个裸设备,用于提供没有被组织过的存储空间,底层以分块的方式来存储数据

●文件存储(例如NFS,解决块存储无法共享问题,可以一个存储被多个服务器同时挂载,适用于目录结构的存储、日志存储)
是一种数据的组织存放接口,一般是建立在块级别的存储结构之上,以文件形式来存储数据,而文件的元数据和实际数据是分开存储的

●对象存储(例如OSS,一个存储可以被多服务同时访问,具备块存储的高速读写能力,也具备文件存储共享的特性,适用图片存储、视频存储)
基于API接口提供的文件存储,每一个文件都是一个对象,且文件大小各不相同的,文件的元数据和实际数据是存放在一起的

 Ceph 存储系统的逻辑层次结构:

 Ceph 核心组件

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

●OSD(Object Storage Daemon,守护进程 ceph-osd)
是负责物理存储的进程,一般配置成和磁盘一一对应,一块磁盘启动一个OSD进程。主要功能是存储数据、复制数据、平衡数据、恢复数据,以及与其它OSD间进行心跳检查,负责响应客户端请求返回具体数据的进程等。通常至少需要3个OSD来实现冗余和高可用性。

●PG(Placement Group 归置组)
PG 是一个虚拟的概念而已,物理上不真实存在。它在数据寻址时类似于数据库中的索引:Ceph 先将每个对象数据通过HASH算法固定映射到一个 PG 中,然后将 PG 通过 CRUSH 算法映射到 OSD。

●Pool
Pool 是存储对象的逻辑分区,它起到 namespace 的作用。每个 Pool 包含一定数量(可配置)的 PG。Pool 可以做故障隔离域,根据不同的用户场景统一进行隔离。

Pool中数据保存方式支持两种类型:

●多副本(replicated):类似 raid1,一个对象数据默认保存 3 个副本,放在不同的 OSD
●纠删码(Erasure Code):类似 raid5,对 CPU 消耗稍大,但是节约磁盘空间,对象数据保存只有 1 个副本。由于Ceph部分功能不支持纠删码池,此类型存储池使用不多

Monitor(守护进程 ceph-mon)
用来保存OSD的元数据。负责维护集群状态的映射视图(Cluster Map:OSD Map、Monitor Map、PG Map 和 CRUSH Map),维护展示集群状态的各种图表, 管理集群客户端认证与授权。一个Ceph集群通常至少需要 3 或 5 个(奇数个)Monitor 节点才能实现冗余和高可用性,它们通过 Paxos 协议实现节点间的同步数据。

Manager(守护进程 ceph-mgr)
负责跟踪运行时指标和 Ceph 集群的当前状态,包括存储利用率、当前性能指标和系统负载。为外部监视和管理系统提供额外的监视和接口,例如 zabbix、prometheus、 cephmetrics 等。一个 Ceph 集群通常至少需要 2 个 mgr 节点实现高可用性,基于 raft 协议实现节点间的信息同步。

MDS(Metadata Server,守护进程 ceph-mds)
是 CephFS 服务依赖的元数据服务。负责保存文件系统的元数据,管理目录结构。对象存储和块设备存储不需要元数据服务;如果不使用 CephFS 可以不安装。

 基于 ceph-deploy 部署 Ceph 集群 

 Ceph 生产环境推荐:
1、存储集群全采用万兆网络
2、集群网络(cluster-network,用于集群内部通讯)与公共网络(public-network,用于外部访问Ceph集群)分离
3、mon、mds 与 osd 分离部署在不同主机上(测试环境中可以让一台主机节点运行多个组件)
4、OSD 使用 SATA 亦可
5、根据容量规划集群
6、至强E5 2620 V3或以上 CPU,64GB或更高内存
7、集群主机分散部署,避免机柜的电源或者网络故障

主机名Public网络   Cluster网络      角色
admin 192.168.161.151  admin、client
node01    192.168.161.152   192.168.100.11    mon、mgr、osd
node02     192.168.161.153   192.168.100.12   mon、mgr、osd
node03  192.168.161.154   192.168.100.13   mon、osd
client  192.168.161.155    client

环境准备

可选步骤:创建 Ceph 的管理用户
useradd cephadm
passwd cephadmvisudo
cephadm ALL=(root) NOPASSWD:ALL

 关闭 selinux 与防火墙

systemctl disable --now firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config

根据规划设置主机名、配置 hosts 解析

hostnamectl set-hostname admin
hostnamectl set-hostname node01
hostnamectl set-hostname node02
hostnamectl set-hostname node03
hostnamectl set-hostname clientcat >> /etc/hosts << EOF
192.168.161.151 admin
192.168.161.152 node01
192.168.161.153 node02
192.168.161.154 node03
192.168.161.155 client
EOF

 安装常用软件和依赖包

yum -y install epel-release
yum -y install yum-plugin-priorities yum-utils ntpdate python-setuptools python-pip gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel zip unzip ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssh openssl-devel nss_ldap openldap openldap-devel openldap-clients openldap-servers libxslt-devel libevent-devel ntp libtool-ltdl bison libtool vim-enhanced python wget lsof iptraf strace lrzsz kernel-devel kernel-headers pam-devel tcl tk cmake ncurses-devel bison setuptool popt-devel net-snmp screen perl-devel pcre-devel net-snmp screen tcpdump rsync sysstat man iptables sudo libconfig git bind-utils tmux elinks numactl iftop bwm-ng net-tools expect snappy leveldb gdisk python-argparse gperftools-libs conntrack ipset jq libseccomp socat chrony sshpass
在 admin 管理节点配置 ssh 免密登录所有节点
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
sshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@admin
sshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@node01
sshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@node02
sshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@node03配置时间同步
systemctl enable --now chronyd
timedatectl set-ntp true					#开启 NTP
timedatectl set-timezone Asia/Shanghai		#设置时区
chronyc -a makestep							#强制同步下系统时钟
timedatectl status							#查看时间同步状态
chronyc sources -v							#查看 ntp 源服务器信息
timedatectl set-local-rtc 0					#将当前的UTC时间写入硬件时钟#重启依赖于系统时间的服务
systemctl restart rsyslog 
systemctl restart crond#关闭无关服务
systemctl disable --now postfix配置 Ceph yum源
wget https://download.ceph.com/rpm-nautilus/el7/noarch/ceph-release-1-1.el7.noarch.rpm --no-check-certificaterpm -ivh ceph-release-1-1.el7.noarch.rpm --force执行完上面所有的操作之后重启所有主机
reboot

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/29526.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

消息队列——RabbitMQ基本概念+容器化部署和简单工作模式程序

目录 基本概念 MQ 的优势 1.应用解耦 2.异步提速 3.削峰填谷 MQ 的劣势 使用mq的条件 常见MQ产品 RabbitMQ简介 RabbitMQ的六种工作模式 JMS RabbitMQ安装和配置。 RabbitMQ控制台使用。 RabbitMQ快速入门——生产者 需求: RabbitMQ快速入门——消费者 小结 基本概…

快7月底了,让我康康有多少准备跳槽的

前两天跟朋友感慨&#xff0c;今年的铜三铁四、裁员、疫情影响导致好多人都没拿到offer!现在已经快7月底了&#xff0c;具体金九银十只剩下2个月。 对于想跳槽的职场人来说&#xff0c;绝对要从现在开始做准备了。这时候&#xff0c;很多高薪技术岗、管理岗的缺口和市场需求也…

【RISC-V】昉·星光 2单板计算机初始调试记录

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

stb_image简单使用

简介stb_image stb_image 是一个非常轻量级的、单文件的图像加载库&#xff0c;用于加载和解码多种图像格式&#xff08;如BMP、JPEG、PNG、GIF等&#xff09;的图像数据。它由Sean T. Barrett开发&#xff0c;并以公共领域&#xff08;Public Domain&#xff09;许可发布&…

⛳ Git安装与配置

Git安装配置目录 ⛳ Git安装与配置&#x1f3ed; 一&#xff0c;git的安装&#x1f3a8; 1&#xff0c;下载git&#x1f463; 2&#xff0c;下载完成之后&#xff0c;双击安装即可。&#x1f4bb; 3&#xff0c;更改安装目录&#xff08;没有中文且没有空格&#xff09;&#x…

支付宝支付上线准备工作(商家自研接入)

商家自研流程 1.创建应用 登录支付宝开放平台创建 网页/移动应用 说明&#xff1a;生成的应用唯一标识 APPID 可用于调用开放产品接口。 2.配置应用 2.1 应用详情 2.2 产品绑定 2.3 开发设置 在开发 > 开发设置 中配置应用信息。 2.3.1 接口加密方式 按操作步骤进行…

SpringCloud学习路线(3)—— Eureka注册中心

一、导引 服务调用出现的问题 服务调用采取的请求地址是静态的&#xff0c;当我们使用服务集群时&#xff0c;很容易造成只能调用固定的微服务上的接口。多个提供者&#xff0c;消费者的使用对象无法确定消费者无法得知提供者的状态 二、Eureka注册中心 &#xff08;一&…

【Vue】day02-Vue基础入门

目录 day02 一、今日学习目标 1.指令补充 2.computed计算属性 3.watch侦听器 4.综合案例 &#xff08;演示&#xff09; 二、指令修饰符 1.什么是指令修饰符&#xff1f; 2.按键修饰符 3.v-model修饰符 4.事件修饰符 三、v-bind对样式控制的增强-操作class 1.语法…

文件IO_文件截断_ftruncate,truncate(附Linux-5.15.10内核源码分析)

目录 1.为什么需要文件截断&#xff1f; 2.truncate函数介绍 2.1 truncate函数 2.2 truncate函数内核源码分析 2.3 truncate函数使用示例 3.ftruncate函数介绍 3.1 ftruncate函数 3.2 ftruncate函数内核源码分析 3.3 ftruncate函数使用示例 3.4 ftruncate和文件偏移量…

java学习路程之篇十、知识点、数组介绍、二维数组介绍、静态初始化、访问元素、遍历元素、动态初始化、内存图、数组常见问题

文章目录 01、数组介绍02、数组静态初始化03、数组元素访问04、数组遍历操作05、数组动态初始化06、数组内存图07、数组常见问题08、二维数组介绍09、二维数组静态初始化10、二维数组遍历11、二维数组动态初始化12、二维数组内存图 01、数组介绍 02、数组静态初始化 03、数组元…

Redis可视化工具(Redis Desktop Manager)

redis是我们平时开发工作中经常用到的非关系型数据库&#xff0c;常用于做数据缓存&#xff0c;分布式锁等。 为了更方便的使用redi&#xff0c;这里给大家推荐一款可视化工具&#xff1a;Redis Desktop Manager。 1.下载与安装 直接到gihub下载&#xff0c;地址 Release 0.…

Python分布式任务队列Celery

一、分布式任务队列Celery介绍 Python celery是一个基于Python的分布式任务队列&#xff0c;主要用于任务的异步执行、定时调度和分布式处理。它采用了生产者/消费者模式&#xff0c;通过消息中间件实现多个工作者进程之间的协作。 Python celery的架构主要包括以下组件&…