Ceph分布式存储(1)

目录

一.ceph分布式存储

Ceph架构(自上往下)

OSD的存储引擎:

Ceph的存储过程:

二. 基于 ceph-deploy 部署 Ceph 集群

20-40节点上添加3块硬盘,一个网卡:

10节点为admin,20-40为node,50为client:

配置 hosts 解析:

安装常用软件和依赖包:

在 admin 管理节点配置 ssh 免密登录所有节点:

10节点配置时间同步:

修改配置文件:

所有节点重启依赖于系统时间的服务:

​编辑​编辑​编辑所有node节点修改网卡配置:

所有节点配置 Ceph yum源:

安装ceph:

所有节点都创建一个 Ceph 工作目录,后续的工作都在该目录下进行:

安装 ceph-deploy 部署工具:

管理节点为其它节点安装 Ceph 软件包:

节点下载:

生成初始配置:

在管理节点初始化 mon 节点:

配置初始化 mon 节点,并向所有节点同步配置:

部署能够管理 Ceph 集群的节点:

部署 osd 存储节点:

添加节点:

在添加其他两个节点:

看下状态:

将剩下磁盘继续添加后,查看状态:

部署 mgr 节点:

从节点下载mgr:

重启 dashboard:

访问页面:


一.ceph分布式存储

ceph:存储机制会把数据分散存储到多个节点上,具有高扩展性、高性能、高可用性等优点。

Ceph架构(自上往下)

客户端(主机/虚拟机/容器/应用程序APP):在Ceph中进行数据读写的终端。

LibRADOS对象访问接口:提供访问存储接口给客户端使用。Ceph默认提供三个接口:RBD块存储接口、RGW对象存储接口、CephFS文件存储接口。还支持用户使用java、python、C、C++等编程语言二次开发自定义访问接口。

RADOS基础存储系统(统一存储池):提供存储能力的。Ceph中一切都是以对象(object)形式存储的。RADOS就是负责存储这些对象的,并保证数据的一致性和可靠性。

OSD的存储引擎:

FileStore:是L版本(12.x)以前版本的唯一可选的OSD存储引擎,将数据对象存储为文件系统的文件,性能上有所不足
BlueStore:是L版本(12.x)开始的默认OSD存储引擎,将数据对象直接存储在块设备上,具有更好的数据读写性能和可靠性


Ceph的存储过程:

1)文件默认会按照4M大小进行分片成一个或多个数据对象(object)
2)每个数据对象都有一个oid(由文件ID(ino)和分片编号(ono)组成),通过对oid使用HASH算法得到一个16进制的特征码,再除以Pool中的PG总数取余,获取到数据对象的pgid(整体由poolid+pgid组成)
3)通过对pgid使用CRUSH算法得到PG对应的OSD的ID,如果是多副本,则是主从OSD的ID(注:PG与OSD的对应关系是在创建存储池Pool的时候就确定好的)
4)将数据对象存储到对应的OSD里

二. 基于 ceph-deploy 部署 Ceph 集群

准备五台服务器,192.168.233.{10..50}:

20-40节点上添加3块硬盘,一个网卡:

10节点为admin,20-40为node,50为client:

配置 hosts 解析:

安装常用软件和依赖包:
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 免密登录所有节点:

sshpass -p '123' ssh-copy-id -o StrictHostKeyChecking=no root@admin
sshpass -p '123' ssh-copy-id -o StrictHostKeyChecking=no root@node01
sshpass -p '123' ssh-copy-id -o StrictHostKeyChecking=no root@node02
sshpass -p '123' ssh-copy-id -o StrictHostKeyChecking=no root@node03

10节点配置时间同步:
修改配置文件:

开启chrony:

开启 NTP:

timedatectl set-ntp true

设置时区:

timedatectl set-timezone Asia/Shanghai

强制同步下系统时钟:

chronyc -a makestep

查看时间同步状态:

timedatectl status

查看 ntp 源服务器信息:

将当前的UTC时间写入硬件时钟:

所有节点重启依赖于系统时间的服务:

关闭无关服务:

所有node节点修改网卡配置:

重启网卡:

所有节点配置 Ceph yum源:
wget https://download.ceph.com/rpm-nautilus/el7/noarch/ceph-release-1-1.el7.noarch.rpm --no-check-certificate

将包移动到/opt下:

安装ceph:

所有节点都创建一个 Ceph 工作目录,后续的工作都在该目录下进行:

安装 ceph-deploy 部署工具:

查看版本,2.0.1 默认部署的是 mimic 版的 Ceph,若想安装其他版本的 Ceph,可以用 --release 手动指定版本:

管理节点为其它节点安装 Ceph 软件包:
yum install -y ceph-mon ceph-radosgw ceph-mds ceph-mgr ceph-osd ceph-common ceph

节点下载:

修改ceph的源:

改为阿里云下载:

sed -i 's#download.ceph.com#mirrors.aliyun.com/ceph#' ceph.repo

其他节点下载 Ceph 包:

生成初始配置:

在管理节点运行下述命令,告诉 ceph-deploy 哪些是 mon 监控节点:

ceph-deploy new --public-network 192.168.233.0/24 --cluster-network 192.168.100.0/24 node01 node02 node03

.命令执行成功后会在 /etc/ceph 下生成配置文件:

ceph.conf :                   ceph的配置文件
ceph-deploy-ceph.log :       monitor的日志
ceph.mon.keyring   :         monitor的密钥环文件

在管理节点初始化 mon 节点:
ceph-deploy mon create node01 node02 node03

节点上查看下mon状态:

配置初始化 mon 节点,并向所有节点同步配置:
ceph-deploy --overwrite-conf mon create-initial

命令执行成功后会在 /etc/ceph 下生成配置文件:

ceph.bootstrap-mds.keyring       :    引导启动 mds 的密钥文件
ceph.bootstrap-mgr.keyring      :      引导启动 mgr 的密钥文件
ceph.bootstrap-osd.keyring      :     引导启动 osd 的密钥文件
ceph.bootstrap-rgw.keyring    :       引导启动 rgw 的密钥文件
ceph.client.admin.keyring     :    ceph客户端和管理端通信的认证密钥,拥有ceph集群的所有权限

在节点上查看下配置文件:

主节点上看下ceph信息:

从节点看:

查看 mon 集群选举的情况:

ceph quorum_status --format json-pretty | grep leader

部署能够管理 Ceph 集群的节点:
ceph-deploy --overwrite-conf config push node01 node02 node03

本质就是把 ceph.client.admin.keyring 集群认证文件拷贝到各个节点:


ceph-deploy admin node01 node02 node03

在 从 节点上查看:

部署 osd 存储节点:

查看下从节点的磁盘情况:

添加节点:
ceph-deploy --overwrite-conf osd create node01 --data /dev/sdb
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdb
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdb

看下从节点的磁盘情况:

在添加其他两个节点:

看下状态:

扩容 osd 节点:

ceph-deploy --overwrite-conf osd create node01 --data /dev/sdc
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdc
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdc
ceph-deploy --overwrite-conf osd create node01 --data /dev/sdd
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdd
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdd

看下状态:

看下从节点:

将剩下磁盘继续添加后,查看状态:

主节点看下状态:

部署 mgr 节点:

解决 HEALTH_WARN 问题:mons are allowing insecure global_id reclaim问题:

禁用不安全模式:

ceph config set mon auth_allow_insecure_global_id_reclaim false

从节点下载mgr:

开启 dashboard 模块:

ceph mgr module enable dashboard --force

禁用 dashboard 的 ssl 功能:

ceph config set mgr mgr/dashboard/ssl false

配置 dashboard 监听的地址和端口:

ceph config set mgr mgr/dashboard/server_addr 192.168.233.20
ceph config set mgr mgr/dashboard/server_port 8000

重启 dashboard:
ceph mgr module disable dashboard
ceph mgr module enable dashboard --force

确认访问 dashboard 的 url:

设置 dashboard 账户以及密码:

ceph dashboard set-login-credentials admin -i dashboard_passwd.txt

访问页面:

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

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

相关文章

二叉树练习 Leetcode 100.相同的树

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:p [1,2,3], q [1,2,3] 输出:true示例 2&#…

C++初阶类与对象(三):详解复制构造函数和运算符重载

上次介绍了构造函数和析构函数:C初阶类与对象(二):详解构造函数和析构函数 今天就来接着介绍新的内容: 文章目录 1.拷贝构造函数1.1引入和概念1.2特性 2.赋值运算符重载2.1运算符重载2.2放在哪里2.3运算符重载示例2.3.…

【01】mapbox js api加载arcgis切片服务

需求: 第三方的mapbox js api加载arcgis切片服务,同时叠加在天地图上,天地图坐标系web墨卡托。 效果图: 形如这种地址去加载http://zjq2022.gis.com:8080/demo/loadmapboxtdt.html 思路: 需要制作一个和天地图比例…

[每周一更]-(第83期):Go新项目-Gin中间件的使用和案例(10)

在 Gin 中,中间件是一种用于处理 HTTP 请求和响应的功能强大的机制。中间件是一段位于请求处理链和最终处理器之间的代码, 它可以截获请求、执行预处理操作,修改请求或响应,然后将控制权传递给下一个中间件或最终的请求处理器。 …

ubuntu系统 vscode 配置c/c++调试环境

文章目录 1.安装插件2.目录结构3.cmake tools配置 1.安装插件 c/c插件 cmake cmake tools插件 2.目录结构 . ├── build ├── CMakeLists.txt ├── demo │ └── main.cpp ├── image.png ├── src │ ├── add.cpp │ └── add.hpp └── vsdebug.…

关于电脑是否支持或开启TPM 2.0,看这篇文章就够了

本指南将教你如何启用TPM 2.0。如果你想运行Windows 11,这是必需的。 如何启用TPM 2.0 如果你的电脑硬件支持TPM 2.0,但未启用,则可以通过UEFI/BIOS执行此操作。以下是一般指南: 1、进入UEFI/BIOS。 2、在名为“安全”或“高级…

48-DOM节点,innerHTML,innerText,outerHTML,outerText,静态获取,单机click,cssText

1.DOM基础 Document Object Module,文档对象模型,window对象,document文档,都可以获取和操作 1)文档节点 2)属性节点(标签内的属性href,src) 3)文本节点(标签内的文字) 4)注释节点 5)元素节点(标签) 2.获取元素节点 2.1通过标签名获取getElementsByTagName() …

pdf怎么查看?6个不能错过的软件!

PDF,作为一种常用的文件格式,已经成为了我们工作、学习中的必备工具。然而,对于许多新手来说,如何查看和编辑PDF文件却是一个不小的挑战。今天,我们就来为大家详细介绍一下如何查看和编辑PDF文件,以及一些必…

中间件框架知识进阶

概述 近期从不同渠道了解到了一些中间件相关的新的知识,记录一下收获。涉及到的中间件包括RPC调用、动态配置中心、MQ、缓存、数据库、限流等,通过对比加深理解,方便实际应用时候更明确如何进行设计和技术选型。 一、RPC框架中间件系列 1、…

第一讲_HarmonyOS应用开发环境准备

HarmonyOS应用开发环境准备 1. 知识储备2. 环境搭建2.1 安装node.js2.2 配置node.js2.3 安装命令行工具2.4 安装DevEco Studio2.5 配置DevEco Studio 1. 知识储备 HarmonyOS提供了一套UI开发框架,即方舟开发框架(ArkUI框架)。方舟开发框架可…

基于SpringBoot微信小程序的宠物美容预约系统设计与实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作✌ 主要内容:SpringBoot、Vue、SSM、HLM…

可视化神器Plotly绘制金融图表

公众号:尤而小屋作者:Peter编辑:Peter 大家好,我是Peter~ 好久没有更新关于plotly的文章。 什么是Plotly? Plotly是一个基于JavaScript的绘图库,可以创建各种类型的图表,包括散点图、折线图、面积图、条形…