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

访问页面:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构与算法:归并排序

数据结构与算法:归并排序 归并思想递归法非递归 归并思想 在讲解归并排序前,我们先看到一个问题: 对于这样两个有序的数组,如何将它们合并为一个有序的数组? 在此我们处理这个问题的思路就是:开辟一个新的…

Java数据结构实现数组(配套习题)

数据结构 数组 一组相同数据类型的集合 特点 数组在内存中是连续分配的创建时要指明数组的大小数组名代表首地址,索引从0开始,到数组的长度-1数组一旦创建好,大小不可以改变使用索引 获取索引位置的值 arr[index]修改 arr[index] val删除 (假删除)遍历,将数组中的元素,依次…

VMware虚拟机自定义网段及物理机ping不通虚拟机问题解决

Vmware网络介绍🛜 VMware虚拟机提供了几种网络模式,其中包括桥接模式(Bridged Mode)、NAT模式(Network Address Translation Mode)和仅主机模式(Host-Only Mode)。这些模式允许虚拟…

掌握Spring缓存-全面指南与最佳实践

第1章:引言 大家好,我是小黑,咱们今天来聊聊缓存,在Java和Spring里,缓存可是个大角色。咱们在网上购物,每次查看商品详情时,如果服务器都要去数据库里翻箱倒柜,那速度得慢成什么样&…

【计算机网络】网络层——详解IP协议

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】 本专栏旨在分享学习计算机网络的一点学习心得,欢迎大家在评论区交流讨论💌 目录 🐱一、I…

.Net Core 使用 AspNetCoreRateLimit 实现限流

上一篇文章介绍过ASP.NET Core 的 Web Api 实现限流 中间件-CSDN博客 使用.NET 7 自带的中间件 Microsoft.AspNetCore.RateLimiting 可以实现简单的Api限流,但是这个.NET 7以后才集成的中间件,如果你使用的是早期版本的.NET,可以使用第三方库…

腊八蒜怎么腌制才能又脆又绿 把这招记在备忘录一步步制作

过了腊八就是年,这句话像是一个温暖的预告,告诉我们新年即将到来。而在我家的年味里,总少不了一瓶瓶翠绿的腊八蒜。每当亲朋好友围坐在一起,那独特的蒜香总能为我们的欢聚时光增添几分风味。 腌制腊八蒜是个技术活,很…

Git Merge、Rebase 和 Squash 之间的区别

文章目录 Git MergeGit RebaseGit Squash结论 作为一名开发人员,您可能使用过 Git 和 GitHub,掌握了版本控制的要点。通常通过拉取请求将分支的更改集成到主分支中是一项常见任务。许多人的默认选择是“合并”功能。 然而,版本控制领域提供了…

论文笔记:信息融合的门控多模态单元(GMU)

整理了GMU(ICLR2017 GATED MULTIMODAL UNITS FOR INFORMATION FUSION)论文的阅读笔记 背景模型实验 论文地址: GMU 背景 多模态指的是同一个现实世界的概念可以用不同的视图或数据类型来描述。比如维基百科有时会用音频的混合来描述一个名人…

项目解决方案:“ZL铁路轨行车辆”实时视频监控系统

目 录 一、建设背景 1.1 政策背景 1.2 现状 二、建设目标 三、建设依据 四、建设原则 4.1经济高效性 4.2系统开放性 4.3系统继承性 4.4系统扩展性 4.5系统经济性 4.6系统安全性 五、系统架构 5.1系统架构图 5.2技术架构 1、DVS 2、中心管理服务…

测试的基本概念

1、什么是需求? 在企业中主要分为两类:用户需求和软件需求 用户需求:甲方的需求,或者终端用户使用产品时必须要完成的任务(比较简略)。 软件需求:或者叫功能需求,该需求会详细描述开…

Qt单个字符判断

1.相关说明 字符的Unicode编码、单个字符的判断 2.界面绘制 3.相关主要代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui;…

数学建模常见算法的通俗理解(更新中)

目录 1.层次分析法(结合某些属性及个人倾向,做出某种决定) 1.1 粗浅理解 1.2 算法过程 1.2.1 构造判断矩阵 1.2.2 计算权重向量 1.2.3 计算最大特征根 1.2.4 计算C.I.值 1.2.5 求解C.R.值 1.2.6 判断一致性 1.2.7 计算总得分 2 神经…

MySQL 多版本并发控制 MVCC

MVCC出现背景 事务的4个隔离级别以及对应的三种异常 读未提交(Read uncommitted) 读已提交(Read committed):脏读 可重复读(Repeatable read):不可重复读 串行化(Se…

pygame学习(三)——支持多种类型的事件

大家好!我是码银🥰 欢迎关注🥰: CSDN:码银 公众号:码银学编程 实时事件循环 为了保证程序的持续刷新、保持打开的状态,我们会创建一个无限循环,通常使用的是while语句,w…

嵌出式学习又一天

关于485通讯 485属于串口通信,属于物理层的,规定为2线,半双工的多点通信标准,它的电气特性不一样,用缆线两端电压差值来表示传递信号,rs485仅仅规定了接收端和发送端的电气特性,没有规定任何数据…

esp32-idf Eclipse Log日志打印demo

Log日志打印demo 1、代码例程 esp32-S2 芯片 / Eclipse软件 开发环境 #include <stdio.h> #include "sdkconfig.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "esp_system.h" #include "esp_…

数据分析求职-知识脑图

今天和大家聊聊数据分析求职常见面试题&#xff0c;这是这个系列的第一篇文章&#xff0c;但是我不想开始就直接罗列题目&#xff0c;因为这样的文章实在太多了&#xff0c;同学们的兴趣程度肯定一般。所以&#xff0c;我想先和大家聊聊在准备面试题时候通常遇到的困扰&#xf…

7.5 MySQL对数据的增改删操作(❤❤❤)

7.5 MySQL对数据的基本操作 1. 提要2. 数据添加2.1 insert语法2.2 insert 子查询2.3 ignore关键字 3. 数据修改3.1 update语句3.2 update表连接 4. 数据删除4.1 delete语句4.2 delete表连接4.3 快速删除数据表全部数据 1. 提要 2. 数据添加 2.1 insert语法 2.2 insert 子查询 …