ceph分布式存储搭建——筑梦之路

news/2024/4/26 8:30:13/文章来源:https://blog.csdn.net/qq_34777982/article/details/129245116

centos 7 搭建ceph集群——筑梦之路_筑梦之路的博客-CSDN博客

这篇是之前写的,今天再次来搭建一遍,并将过程记录,温故而知新。

如需用于生产,建议磁盘要求吞吐 >=150MB/s,IOPS >= 5000,网络双口万兆Bond堆叠、内存128G

主机名

角色

IP

node01

ceph-deploy、mon、mgr、osd

192.168.31.221

node02

mon、mgr、osd

192.168.31.222

node03

mon、mgr、osd

192.168.31.223

操作系统:centos7

搭建准备

#换源wget http://mirrors.aliyun.com/repo/epel-7.repo -O /etc/yum.repos.d/epel-7.repowget http://mirrors.aliyun.com/repo/Centos-7.repo -O /etc/yum.repos.d/CentOS7-Base-ali.reposed -i 's/$releasever/7/g' /etc/yum.repos.d/CentOS7-Base-ali.repo#新增yum源cat >> /etc/yum.repos.d/ceph.repo << EOF
[noarch]
name=ceph-noarch
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/
enable=1
gpgcheck=0[ceph]
name=ceph
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/
enable=1
gpgcheck=0
EOF# 时间同步#安装 chrony
yum -y install chrony#设置系统的时区
timedatectl set-timezone Asia/Shanghai#设置系统时钟同步,输出以下内容代表同步正常
systemctl enable chronyd --nowtimedatectl statusLocal time: 二 2023-02-27 23:28:58 CSTUniversal time: 二 2023-02-27 15:28:58 UTCRTC time: 二 2023-02-27 15:28:59Time zone: Asia/Shanghai (CST, +0800)NTP enabled: yes
NTP synchronized: yesRTC in local TZ: noDST active: n/a#将当前的 UTC 时间写入硬件时钟,并重启依赖于系统时间的服务 [物理服务器需要]
timedatectl set-local-rtc 0
systemctl restart rsyslog && systemctl restart crond--------------------------------------------------------------
#配置hosts解析使用 ceph-deploy 部署集群时,需要通过主机名来查找主机 IP 地址,所以要在本地 hosts 文件中配置地址解析cat >> /etc/hosts << EOF
192.168.31.221 node01
192.168.31.222 node02
192.168.31.223 node03
EOF-----------------------------------------------------------
#关闭防火墙 selinuxsystemctl disable firewalld.service --nowsetenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config----------------------------------------------------------
#节点之间的免密认证#生成密钥
ssh-keygen -t rsa -f ~/.ssh/id_rsa -N ''#ssh互发,将各节点的主机信息(host key)写入control_node的~/.ssh/known_hosts文件
for host in 192.168.31.{221..223}  node{01..03}; do ssh-keyscan $host >>~/.ssh/known_hosts 2>/dev/null; done#将公钥分发给各个机器
yum -y install sshpass
for host in node{01..03}; do sshpass -p'123456' ssh-copy-id root@$host &>/dev/null; done

 集群搭建

# 安装部署工具yum -y install python-setuptools ceph-deploy ceph# 创建工作目录mkdir -p /opt/ops-ceph-cluster# 初始化节点在 ceph-admin 节点上进入 /opt/ops-ceph-cluster 目录下,执行 ceph-deploy 命令初始化集群设置,初始化要求指定节点作为 mon,命令如下:–public-network 代表 ceph 集群对外提供调用的网络,–cluster-network 代表用于集群内部通信的网络。一般情况下 ceph 集群中需要有两个网络,这样可以保证 ceph 集群的安全性。由于此次搭建的环境中只有一个网络,所以此处两个配置项填写同一个网段的地址。上面的命令执行完成后会将 ceph-node1 节点配置为 mon,并且会在 /opt/ops-ceph-cluster 目录下生成集群的配置文件、key 文件(用于身份验证)、日志文件等:ceph-deploy new --public-network 192.168.31.0/24 --cluster-network 192.168.31.0/24 node01cat ceph.conf  
[global]
fsid = 0733d796-2798-4c78-b270-d829ab88f887
public_network = 192.168.31.0/24
cluster_network = 192.168.31.0/24
mon_initial_members = node01
mon_host = 192.168.31.221
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx# 在各个节点安装组件yum -y install ceph ceph-mon ceph-mgr ceph-mds ceph-radosgw-----------------------------------------------------
# 初始化mon在初始化集群的过程中已经指定了 mon 的节点,现在需要对 mon 进行初始化,在 ceph-admin 节点的 /opt/ops-ceph-cluster 目录下执行如下命令进行初始化:ceph-deploy mon create-initial接下来将 admin用户的 key 文件拷贝给各个 osd 节点,如果为了在 ceph-admin 节点中使用 ceph 命令查看集群状态,那么也需要将 key 文件拷贝给 ceph-admin 节点(ceph-admin节点需要安装 ceph 包)ceph-deploy admin node01 node02 node03拷贝完成后执行 ceph -s 命令可以查看到当前集群的状态------------------------------------------------------# 安装 mgr 进程配置 ceph-node1 节点作为 mgr,在 ceph-admin 节点的 /opt/ops-ceph-cluster 目录下执行如下命令:ceph-deploy mgr create node01# 部署 OSD 节点当前环境中,每个 OSD 节点都有两块磁盘 sdb 和 sdc接下来将每个 OSD 节点中的 sdb 磁盘加入到 ceph 集群中,命令如下:for host in 1 2 3
do 
ceph-deploy disk zap node0${host} /dev/sdb
ceph-deploy osd create node0${host} --data /dev/sdb
ceph-deploy disk zap node0${host} /dev/sdc
ceph-deploy osd create node0${host} --data /dev/sdc
doneceph-deploy disk zap 命令用于将目标磁盘的分区表和内容擦除,实际上它是调用 /bin/dd if=/dev/zero of=/dev/sdb bs=1M count=10 conv=fsync 命令来销毁 GPT 和 MBR 。如果目标磁盘是未被分区的,可以不使用该命令此时查看 ceph 集群的状态,可以看到有6个 OSD 已经被加入到集群中。

 扩展 mon 和 mgr 节点

mon 和 mgr 是 ceph 集群中非常重要的组件,其中 mon 作为整个集群的控制中心,里面存放着集群的信息,所以需要确保 mon 和 mgr 处于高可用的状态,为了保证选举正常,节点数要为奇数ceph-deploy mon add node02
ceph-deploy mon add node03集群信息中显示当前的 mon 节点已经为 3 个,使用如下命令查看 mon 节点的选举状态:ceph quorum_status --format json-pretty{"election_epoch": 60,"quorum": [0,1,2],"quorum_names": ["node01","node02","node03"],"quorum_leader_name": "node01","quorum_age": 26873,"monmap": {"epoch": 3,"fsid": "0733d796-2798-4c78-b270-d829ab88f887","modified": "2023-02-21 10:59:46.767964","created": "2023-02-21 10:46:42.790704","min_mon_release": 14,"min_mon_release_name": "nautilus","features": {"persistent": ["kraken","luminous","mimic","osdmap-prune","nautilus"],"optional": []},"mons": [{"rank": 0,"name": "node01","public_addrs": {"addrvec": [{"type": "v2","addr": "192.168.31.221:3300","nonce": 0},{"type": "v1","addr": "192.168.31.221:6789","nonce": 0}]},"addr": "192.168.31.221:6789/0","public_addr": "192.168.31.221:6789/0"},{"rank": 1,"name": "node02","public_addrs": {"addrvec": [{"type": "v2","addr": "192.168.31.222:3300","nonce": 0},{"type": "v1","addr": "192.168.31.222:6789","nonce": 0}]},"addr": "192.168.31.222:6789/0","public_addr": "192.168.31.222:6789/0"},{"rank": 2,"name": "node03","public_addrs": {"addrvec": [{"type": "v2","addr": "192.168.31.223:3300","nonce": 0},{"type": "v1","addr": "192.168.31.223:6789","nonce": 0}]},"addr": "192.168.31.223:6789/0","public_addr": "192.168.31.223:6789/0"}]}
}#可以看到当前已经可以正常选举,leader 为 node01 节点上的 mon。也可以使用 ceph mon stat 命令查看 mon 的信息:ceph mon state3: 3 mons at {node01=[v2:192.168.31.221:3300/0,v1:192.168.31.221:6789/0],node02=[v2:192.168.31.222:3300/0,v1:192.168.31.222:6789/0],node03=[v2:192.168.31.223:3300/0,v1:192.168.31.223:6789/0]}, election epoch 60, leader 0 node01, quorum 0,1,2 node01,node02,node03使用 ceph mon dump 命令可以查看详细的信息#扩容mgrceph-deploy mgr create node02  node03# 查看集群信息ceph -s 

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

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

相关文章

【一】kubernetes集群部署

一、docker环境搭建 1、移除以前docker相关包 sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine2、配置yam源 sudo yum install -y yum-utilssudo yum-config-manager --ad…

C++进阶--二叉树编程题

文章目录力扣606. 根据二叉树创建字符串力扣102. 二叉树的层序遍历力扣236. 二叉树的最近公共祖先JZ36 二叉搜索树与双向链表力扣105--通过前序和中序遍历构造二叉树力扣144--二叉树的前序遍历&#xff08;非递归&#xff09;力扣94--二叉树的中序遍历&#xff08;非递归&#…

虹科新闻|虹科与iX systems正式建立合作伙伴关系

近日&#xff0c;虹科与美国iXsystems公司达成战略合作&#xff0c;虹科正式成为iXsystems公司在中国区域的认证授权代理商。未来&#xff0c;虹科将携手iXsystems&#xff0c;共同致力于提供企业级存储解决方案。虹科及iXsystems双方的高层领导人员都对彼此的合作有很大的信心…

操作系统基础教程

目录 第二章&#xff1a;处理器管理 概览 进程调度的层次 进程的调度方式&#xff1a; 调度的评价标准&#xff1a; 典型的调度算法&#xff1a; 第三章&#xff1a;同步、通信和死锁 什么是进程同步&#xff1f; 什么是进程互斥&#xff1f; 进程同步的实现方式 进程…

JVM总结

1. 内存结构 线程私有区 程序计算器 作用&#xff1a;是一块较小的内存空间&#xff0c;存储的是当前线程所执行的字节码文件的序号特点&#xff1a;线程私有&#xff0c;不会出现内存空间溢出 虚拟机栈 虚拟机栈是管理JAVA方法执行的内存模型&#xff0c;每个方法执行时都…

贴吧顶贴软件《今日/更新》

贴吧顶贴软件《今日/更新》百收贴吧工具箱&#xff0c;贴吧顶帖软件&#xff0c;贴吧推广引流神器#贴吧顶帖#贴吧推广 hello&#xff0c;大家好&#xff0c;我是软件的作者百收编辑狂潮老师。本次的视频讲解是作为一个百度顶贴的自动化脚本的视频安装教程和使用教程。你作为新…

SpringCloud(五)MQ消息队列

MQ概念常见消息模型helloworld案例实现实现spring AMQP发送消息实现spring AMQP接收消息工作消息队列实现发布订阅模型Fanout Exchange实现DirectExchange实现TopicExchange实现DirectExchange 和FanoutExchange的差异DirectExchange 和TopicExchange的差异基于RabbitListener注…

钉钉产品体验报告

一、调研的目的了解企业社交软件&#xff0c;借写竞品分析来帮助自己整理思路&#xff0c;看清市场的发展趋势&#xff1b;体验这类企业设计软件&#xff0c;掌握产品核心业务流程和产品结构&#xff0c;把握需求对应的功能点和界面结构&#xff0c;并侧面了解用户习惯&#xf…

用Python做数据分析有哪些优势?

众所周知&#xff0c;可以用作数据分析的语言有很多&#xff0c;包含Python、R语言等&#xff0c;而且Python被誉为数据分析的一大利器&#xff0c;更是该领域的首选语言&#xff0c;那么用Python做数据分析有哪些优势呢?跟着蛋糕往下看。 第一、Python语言自身的优势 Pytho…

ShardingSphere水平、垂直分库、分表和公共表

目录一、ShardingSphere简介二、ShardingSphere-分库分表1、垂直拆分&#xff08;1&#xff09;垂直分库&#xff08;2&#xff09;垂直分表2、水平拆分&#xff08;1&#xff09;水平分库&#xff08;2&#xff09;水平分表三、水平分库操作1、创建数据库和表2、配置分片的规则…

BigGAN

1、BIGGAN 解读1.1、作者 Andrew Brock、Jeff Donahue、Karen Simonyan 1.2、摘要 尽管最近在生成图像建模方面取得了进展&#xff0c;但从 ImageNet 等复杂数据集中 成功生成高分辨率、多样化的样本仍然是一个难以实现的目标。为此&#xff0c;我们以迄 今为止最大的规模训练生…

fastadmin:在新增页面,打开弹窗单选,参数回传

样式&#xff1a;核心代码&#xff1a;一、弹窗的控制器中&#xff1a;// 定义一个公共函数select()&#xff0c;如果这个请求是Ajax&#xff0c;则返回index()函数&#xff0c;否则返回view对象的fetch()函数。 public function select() {if ($this->request->isAjax(…

【软件测试】测试老鸟的迷途,进军高级自动化测试测试......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 很多从业几年的选手…

【阿旭机器学习实战】【37】电影推荐系统---基于矩阵分解

【阿旭机器学习实战】系列文章主要介绍机器学习的各种算法模型及其实战案例&#xff0c;欢迎点赞&#xff0c;关注共同学习交流。 电影推荐系统 目录电影推荐系统1. 问题介绍1.1推荐系统矩阵分解方法介绍1.2 数据集&#xff1a;ml-100k2. 推荐系统实现2.1 定义矩阵分解函数2.2 …

消息中间件的概念

中间件(middleware)是基础软件的一大类&#xff0c;属于可复用的软件范畴。中间件在操作系统软件&#xff0c;网络和数据库之上&#xff0c;应用软件之下&#xff0c;总的作用是为处于自己上层的应用软件提供运行于开发的环境&#xff0c;帮助用户灵活、高效的开发和集成复杂的…

ICA简介:独立成分分析

1. 简介 您是否曾经遇到过这样一种情况&#xff1a;您试图分析一个复杂且高度相关的数据集&#xff0c;却对信息量感到不知所措&#xff1f;这就是独立成分分析 (ICA) 的用武之地。ICA 是数据分析领域的一项强大技术&#xff0c;可让您分离和识别多元数据集中的底层独立来源。 …

PPP简介,PPP分层体系架构,PPP链路建立过程及PPP的帧格式

PPP&#xff08;Point-to-Point Protocol&#xff09;是一种用于在两个网络节点之间传输数据的通信协议。它最初是为在拨号网络上进行拨号连接而开发的&#xff0c;现在已经被广泛应用于各种网络环境中&#xff0c;例如在宽带接入、虚拟专用网&#xff08;VPN&#xff09;等场景…

【JAVA】一个项目如何预先加载数据?

这里写目录标题需求实现AutowiredPostConstruct实例CommandLineRunner实例ApplicationListener实例参考需求 一般我们可能会有一些在应用启动时加载资源的需求&#xff0c;局部或者全局使用&#xff0c;让我们来看看都有哪些方式实现。 实现 Autowired 如果是某个类里需求某…

[1]MyBatis+Spring+SpringMVC+SSM整合

一、MyBatis 1、MyBatis简介 1.1、MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下&#xff0c; iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github。…

Vue中如何利用websocket实现实时通讯

首先我们可以先做一个简单的例子来学习一下简单的websocket模拟聊天对话的功能 原理很简单&#xff0c;有点像VUE中的EventBus&#xff0c;用emit和on传来传去 首先我们可以先去自己去用node搭建一个本地服务器 步骤如下 1.新建一个app.js&#xff0c;然后创建pagejson.js文…