您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux百科

Linux 9 部署 Ceph 分布式存储

时间:2023-02-05 14:32:04  来源:微信公众号  作者:魏文弟

面对时刻增长的数据,企业需要找到一种经济、可靠、高效、可扩容的存储数据的方式。ceph 无疑是个好选择。本文是 “Ceph 分布式存储最佳实践” 的第一篇文章,主要包括以下主题:

 

  • Ceph 介绍
  • 部署环境介绍
  • 部署 Ceph 集群
  • 总结
1.1 Ceph 介绍

 

Ceph 是一个开源的、分布式的、可扩展的、软件定义的存储系统,可以提供块、对象和文件存储。

传统的存储系统通过一张表集中记录元数据。客户端每次发出读写请求,存储系统首先从这个表中查找元数据,得到结果后,才能执行客户端的操作请求。如果存储集群很大,这种方式可能引发性能瓶颈,也限制了存储系统的可扩展性。

Ceph 通过 CRUSH (Controlled Replication Under Scalable Hashing) 算法,在后台动态计算数据读取或写入位置,客户端直接连接 OSD,提高了数据的读写性能。通过动态计算元数据,Ceph 避免了元数据表的限制,提高了可扩展性。

Ceph 中包含了很多概念,比如 Monitor、Manager、OSD、PG、MDS 等。系列文章以部署一个高可用的 Ceph 集群作为开端,理论与实践结合,逐步讨论 Ceph 的概念及使用。因此搭建一套高可用的 Ceph 集群,是学习 “Ceph 分布式存储最佳实践” 的基础。

1.2 部署环境介绍

完成本教程需要七个节点:一个节点作为 Ansible 控制节点,六个节点部署 Ceph 集群,它们的详细角色如下。

1.2.1 节点信息

七个节点分别为 2 核 CPU、2 GB 内存的虚拟机,安装了 Rocky linux release 9.1 操作系统。

Ansible Inventory hosts:

[ceph] ceph1.server.AIops.red ceph2.server.aiops.red ceph3.server.aiops.red ceph4.server.aiops.red ceph5.server.aiops.red ceph6.server.aiops.red

Ceph 集群主机角色如下:

主机名:ceph1.server.aiops.red, IP:10.211.55.44, 角色:cephadm、mon、mgr 主机名:ceph2.server.aiops.red, IP:10.211.55.45, 角色:mon、mgr 主机名:ceph3.server.aiops.red, IP:10.211.55.46, 角色:mon、mgr 主机名:ceph4.server.aiops.red, IP:10.211.55.48, 角色:osd, 额外磁盘:/dev/sdb、/dev/sdc、/dev/sdd 主机名:ceph5.server.aiops.red, IP:10.211.55.49, 角色:osd, 额外磁盘:/dev/sdb、/dev/sdc、/dev/sdd 主机名:ceph6.server.aiops.red, IP:10.211.55.50, 角色:osd, 额外磁盘:/dev/sdb、/dev/sdc、/dev/sdd 1.2.2 节点要求

为使安装顺利进行,节点应满足以下要求。

1.2.2.1 时钟同步

Ceph 集群各节点时钟应保持一致,这也是分布式系统的基本要求。要自动化实现时钟同步,可以参考 “Linux 9 自动化部署 NTP 服务”。

1.2.2.2 主机名解析

Ansible 控制节点、Ceph 各节点间应能通过主机名访问。要实现主机名称解析,可以在主机的 /etc/hosts 文件中指定节点的 IP、主机名条目,或者参考 “Linux 9 自动化部署 DNS 服务” 一文配置 DNS 服务。

1.2.2.3 账号权限

Ansible 控制节点能够免密登录 Ceph 节点,并能免密执行 sudo。可以参考 “Linux 9 自动化部署 NTP 服务” 中的 “部署环境要求” 一节实现。在满足了以上要求后,开始部署 Ceph 高可用集群。

1.3 使用 Cephadm 部署 Ceph 集群

在安装 Ceph 集群自身时,使用 cephadm 工具;在对主机进行操作时,可以使用 Ansible 自动化工具。

1.3.1 更新软件包

Ceph 节点是新装的操作系统,最好统一执行软件包的更新操作。可以通过 Ansible 完成,以下是自动更新软件包、并在更新完成后重启操作系统的 Ansible Playbook:

upgrade_packages.yaml:

#!/usr/bin/env ansible-Playbook --- - name: upgrade packages play hosts: ceph gather_facts: false become: true tasks: - name: upgrade packages task ansible.builtin.dnf: update_cache: true name: "*" state: latest register: upgradeResult - name: reboot system task reboot: when: upgradeResult.changed ...

执行此 Playbook,完成软件包更新:

$ ansible-playbook upgrade_packages.yaml

此操作在 Ansible 节点上执行。

1.3.2 安装依赖包

cephadm 部署 Ceph 集群时,依赖 Python/ target=_blank class=infotextkey>Python3、Systemd、Podman、LVM2,这些工具 Rocky Linux 9 默认已经安装了。也可以通过以下 Playbook,执行安装:

ceph-dependent.yaml:

--- - name: install cephadm dependent packages hosts: ceph become: true gather_facts: false tasks: - name: install packages dnf: name: - Python3 - lvm2 - podman state: present ...

在 Ansible 控制节点上执行:

[aiops@automate-host ceph]$ ansible-playbook ceph-dependent.yaml 1.3.3 安装 Cephadm

登录 ceph1.server.aiops.red 主机,执行以下操作。

安装 ceph repo:

[root@ceph1 ~]# dnf search release-ceph Last metadata expiration check: 0:00:45 ago on Sun 05 Feb 2023 11:53:21 AM CST. =========== Name Matched: release-ceph =========== centos-release-ceph-pacific.noarch : Ceph Pacific packages from the CentOS Storage SIG repository centos-release-ceph-quincy.noarch : Ceph Quincy packages from the CentOS Storage SIG repository [root@ceph1 ~]# dnf install -y centos-release-ceph-quincy

安装 cephadm

[root@ceph1 ~]# dnf install -y cephadm

cephadm 通过容器部署 Ceph 集群,因此用到了几个镜像。可以通过编辑该文件查看:

[root@ceph1 ~]# vim $(which cephadm) # 在打开的编辑器中搜索 images 关键字

安装 ceph 客户端:

[root@ceph1 ~]# cephadm install ceph-common 1.3.4 安装 Ceph 集群

在 Ceph 集群的第一台主机上,执行 cephadm bootstrap 命令创建 Ceph 集群,该命令会创建第一个 Monitor 守护进程,Monitor 守护进程需要监听在一个地址上,因此需要为该命令提供一个 IP 地址:

root@ceph1 ~]# cephadm bootstrap --mon-ip 10.211.55.44 --allow-fqdn-hostname

安装过程将持续一段时间,因为需要下载运行服务所需的容器镜像。安装完成后,注意类似以下的输出内容:

Ceph Dashboard is now available at: URL: https://ceph1.server.aiops.red:8443/ User: admin Password: cpjxlxldcz

通过此信息,可以在浏览器中登录 Ceph 集群的 Dashboard。第一次登录,需要修改密码。


 

图 1-1, Ceph cluster Dashboard

集群处于非健康状态。可以通过 ceph -s 命令查看详细信息:

[root@ceph1 ~]# ceph -s cluster: id: 53522672-a50a-11ed-93ad-001c42a83cc8 health: HEALTH_WARN OSD count 0 < osd_pool_default_size 3 services: mon: 1 daemons, quorum ceph1.server.aiops.red (age 18m) mgr: ceph1.server.aiops.red.obitbj(active, since 16m) osd: 0 osds: 0 up, 0 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 0 B used, 0 B / 0 B avail pgs:

提示 OSD 的数量小于三。

1.3.5 添加主机到集群

将主机添加到集群,需要执行以下步骤:

首先,将部署集群时生成的公钥 /etc/ceph/ceph.pub 添加到新主机的 root 用户,该步骤可以通过 Ansible Playbook 完成。将 /etc/ceph/ceph.pub 文件从 ceph1.server.aiops.red 主机拷贝到 Ansible 主机,在 Ansible 主机上编辑 Playbook 文件。

copy_pub.yaml:

--- - name: initialization SSH key play hosts: ceph gather_facts: false become: true tasks: - name: initialization ssh key task ansible.builtin.authorized_key: comment: aiops user public key user: root key: "{{ lookup('file', '/home/aiops/playbooks/test/ceph/ceph.pub') }}" ...

在 Ansible 节点上执行 copy_pub.yaml Playbook 文件,完成 SSH 公钥的添加:

[aiops@automate-host ceph]$ ansible-playbook copy_pub.yaml

然后,为 Ceph 集群添加节点,此步骤在 cephadm (ceph1.server.aiops.erd) 节点上完成:

[root@ceph1 ~]# ceph orch host add ceph2.server.aiops.red Added host 'ceph2.server.aiops.red' with addr '10.211.55.45' [root@ceph1 ~]# ceph orch host add ceph3.server.aiops.red Added host 'ceph3.server.aiops.red' with addr '10.211.55.46' ...

将所有节点加入 Ceph 集群。

查看集群中的节点:

[root@ceph1 ~]# ceph orch host ls HOST ADDR LABELS STATUS ceph1.server.aiops.red 10.211.55.44 _admin ceph2.server.aiops.red 10.211.55.45 ceph3.server.aiops.red 10.211.55.46 ceph4.server.aiops.red 10.211.55.48 ceph5.server.aiops.red 10.211.55.49 ceph6.server.aiops.red 10.211.55.50 6 hosts in cluster

因为缺少 OSD,集群状态处于非健康状态,接下来将 OSD 部署到集群。

1.3.6 部署 OSD

OSD (Object Storage Daemon) 用来存储数据,处理数据的复制、恢复以及再平衡,并通过检查其他 OSD 的心跳,为 Monitor、Manager 提供一些监控信息。通常,需要至少三个 OSD 来实现冗余和高可用性。

查看集群中可用设备:

ceph orch device ls


 

图 1-2 列出 Ceph 集群中可用的设备

将集群中任何可用的设备作为 OSD:

[root@ceph1 ~]# ceph orch Apply osd --all-available-devices Scheduled osd.all-available-devices update...

再次检查集群状态:

ceph -s


 

图 1-3, 集群状态变为健康

集群健康状态变为 OK。

查看 OSD:

ceph osd tree


 

图 1-4, 查看 OSD 信息

1.3.7 部署 Monitor

Ceph Monitor (ceph-mon) 维护集群状态的 maps,包括 monitor map、manager map、OSD map、MDS map 以及 CURSH map。这些 maps 是重要的集群状态,需要 Ceph 守护进程互相协调。Monitors 也负责管理守护进程和客户端之间的认证。通常需要至少三个 monitors 实现冗余和高可用性。

通过 ceph -s 或 Dashboard 页面的 Cluster-Hosts 可以看到,默认启动了 5 个 mon。一个或多个 mon 实例形成一个 Paxos 集群,提供可靠性。可以使用 --placement 选项将 mon 部署在指定的节点上:

ceph orch apply mon --placement="ceph1.server.aiops.red,ceph2.server.aiops.red,ceph3.server.aiops.red"


 

图 1-5, 部署 mon

1.3.8 部署 Manager

Ceph Manager daemon (ceph-mgr) 负责跟踪运行时指标和 Ceph 集群的当前状态,包括存储利用率、当前性能指标和系统负载。Ceph Manager 守护进程还托管 Python 模块来管理和暴露 Ceph 集群的信息,包括基于 Web 的 Ceph Dashboard 和 REST API。通常需要至少两个 Managers 来实现高可用性。

通常与监控守护程序一起运行,以提供额外的监控和接口给外部监控和管理系统:

ceph orch apply mgr --placement="ceph1.server.aiops.red,ceph2.server.aiops.red,ceph3.server.aiops.red"


 

图 1-6, 部署 mgr

1.3.9 为节点设置标签

Orchestrator 支持为主机分配标签。每个主机可以有多个标签:

ceph orch host label add ceph4.server.aiops.red osd-node


 

图 1-7, 为主机设置标签

1.4 总结

本章是 “Ceph 分布式存储最佳实践” 的开篇,主要介绍了 Ceph 集群的部署,以及一些基本概念。通过对本章的学习,你将能够在基于 RPM 的 Linux 系统上部署 Ceph 分布式集群,并对集群做一些基本操作,如部署 OSD、Monitor、Manager,设置标签等。

 

来源:魏文弟


Tags:Linux   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Linux获取Redis 性能指标方法
一、监控指标&Oslash; 性能指标:Performance&Oslash; 内存指标: Memory&Oslash; 基本活动指标:Basic activity&Oslash; 持久性指标: Persistence&Oslash; 错误指标:Error二、监...【详细内容】
2024-04-11  Search: Linux  点击:(9)  评论:(0)  加入收藏
微软 Win11 Linux 子系统(WSL)发布 2.2.2 版本
IT之家 4 月 8 日消息,微软近日更新 Windows Subsystem for Linux(WSL),最新 2.2.2 版本中带来了诸多改进,重点更新了 nft 规则,可以让 IPv6 流量通过 Linux 容器。图源: dev.to,AI...【详细内容】
2024-04-08  Search: Linux  点击:(9)  评论:(0)  加入收藏
从原理到实践:深入探索Linux安全机制
Linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、CentOS等)。前言本文将从用户和权限管理、文件系统...【详细内容】
2024-03-27  Search: Linux  点击:(24)  评论:(0)  加入收藏
在Linux系统中,如何处理内存管理和优化的问题?
本文对 Linux 内存管理和优化的一些高级技巧的详细介绍,通过高级的内存管理技巧,可以帮助系统管理员和开发人员更好地优化 Linux 系统的内存使用情况,提高系统性能和稳定性。在...【详细内容】
2024-03-26  Search: Linux  点击:(16)  评论:(0)  加入收藏
Linux 6.9-rc1 内核发布:AMD P-State 首选核心、BH 工作队列
IT之家 3 月 25 日消息,Linus Torvalds 宣布,Linux 6.9 内核的首个 RC(候选发布)版 Linux 6.9-rc1 发布。▲ Linux 6.9-rc1Linus 表示,Linux 内核 6.9 看起来是一个“相当正常”...【详细内容】
2024-03-25  Search: Linux  点击:(15)  评论:(0)  加入收藏
Linux发行版 Ubuntu 迎更新 界面设计灵感来自 Windows 11
近日,一位第三方开发者推出了一款名为“Wubuntu”的特殊Linux发行版。这款系统源自主流的Ubuntu版本,但在界面设计上却借鉴了微软最新的Windows 11风格,甚至在其中融入了微软标...【详细内容】
2024-02-27  Search: Linux  点击:(51)  评论:(0)  加入收藏
Win + Ubuntu 缝合怪:第三方开发者推出“Wubuntu”Linux 发行版
IT之家 2 月 26 日消息,一位第三方开发者推出了一款名为“Wubuntu”的缝合怪 Linux 发行版,系统本身基于 Ubuntu,但界面为微软 Windows 11 风格,甚至存在微软 Windows 徽标。据...【详细内容】
2024-02-27  Search: Linux  点击:(53)  评论:(0)  加入收藏
Linux中磁盘和文件系统工作原理解析
在Linux系统中,一切皆文件的概念意味着所有的资源,包括普通文件、目录以及设备文件等,都以文件的形式存在。这种统一的文件系统管理方式使得Linux系统具有高度的灵活性和可扩展...【详细内容】
2024-02-20  Search: Linux  点击:(58)  评论:(0)  加入收藏
Linux子系统概览
inux操作系统是一个模块化的系统,由多个子系统组成。这些子系统协同工作,使Linux能够执行各种任务。了解Linux的子系统有助于更好地理解整个操作系统的运作机制。以下是Linux...【详细内容】
2024-02-01  Search: Linux  点击:(84)  评论:(0)  加入收藏
Linux内核:系统之魂与交互之源
内核,作为任何基于Linux的操作系统的心脏,扮演着至关重要的角色。它不仅是计算机系统软件与硬件之间的桥梁,更是确保系统稳定、高效运行的关键。内核提供了一系列核心功能,为上...【详细内容】
2024-02-01  Search: Linux  点击:(72)  评论:(0)  加入收藏
▌简易百科推荐
微软 Win11 Linux 子系统(WSL)发布 2.2.2 版本
IT之家 4 月 8 日消息,微软近日更新 Windows Subsystem for Linux(WSL),最新 2.2.2 版本中带来了诸多改进,重点更新了 nft 规则,可以让 IPv6 流量通过 Linux 容器。图源: dev.to,AI...【详细内容】
2024-04-08    IT之家  Tags:Linux   点击:(9)  评论:(0)  加入收藏
从原理到实践:深入探索Linux安全机制
Linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、CentOS等)。前言本文将从用户和权限管理、文件系统...【详细内容】
2024-03-27  凡夫编程  微信公众号  Tags:Linux安全   点击:(24)  评论:(0)  加入收藏
在Linux系统中,如何处理内存管理和优化的问题?
本文对 Linux 内存管理和优化的一些高级技巧的详细介绍,通过高级的内存管理技巧,可以帮助系统管理员和开发人员更好地优化 Linux 系统的内存使用情况,提高系统性能和稳定性。在...【详细内容】
2024-03-26  编程技术汇  微信公众号  Tags:Linux   点击:(16)  评论:(0)  加入收藏
Linux 6.9-rc1 内核发布:AMD P-State 首选核心、BH 工作队列
IT之家 3 月 25 日消息,Linus Torvalds 宣布,Linux 6.9 内核的首个 RC(候选发布)版 Linux 6.9-rc1 发布。▲ Linux 6.9-rc1Linus 表示,Linux 内核 6.9 看起来是一个“相当正常”...【详细内容】
2024-03-25    IT之家  Tags:Linux   点击:(15)  评论:(0)  加入收藏
轻松实现Centos系统的软件包安装管理:yum指令实战详解
yum 是一种用于在 CentOS、Red Hat Enterprise Linux (RHEL) 等基于 RPM 的 Linux 发行版上安装、更新和管理软件包的命令行工具。它可以自动解决软件包依赖关系,自动下载并...【详细内容】
2024-02-27  凡夫贬夫  微信公众号  Tags:Centos   点击:(59)  评论:(0)  加入收藏
Win + Ubuntu 缝合怪:第三方开发者推出“Wubuntu”Linux 发行版
IT之家 2 月 26 日消息,一位第三方开发者推出了一款名为“Wubuntu”的缝合怪 Linux 发行版,系统本身基于 Ubuntu,但界面为微软 Windows 11 风格,甚至存在微软 Windows 徽标。据...【详细内容】
2024-02-27    IT之家  Tags:Ubuntu   点击:(53)  评论:(0)  加入收藏
Linux中磁盘和文件系统工作原理解析
在Linux系统中,一切皆文件的概念意味着所有的资源,包括普通文件、目录以及设备文件等,都以文件的形式存在。这种统一的文件系统管理方式使得Linux系统具有高度的灵活性和可扩展...【详细内容】
2024-02-20  王建立    Tags:Linux   点击:(58)  评论:(0)  加入收藏
Linux子系统概览
inux操作系统是一个模块化的系统,由多个子系统组成。这些子系统协同工作,使Linux能够执行各种任务。了解Linux的子系统有助于更好地理解整个操作系统的运作机制。以下是Linux...【详细内容】
2024-02-01    简易百科  Tags:Linux   点击:(84)  评论:(0)  加入收藏
Linux内核:系统之魂与交互之源
内核,作为任何基于Linux的操作系统的心脏,扮演着至关重要的角色。它不仅是计算机系统软件与硬件之间的桥梁,更是确保系统稳定、高效运行的关键。内核提供了一系列核心功能,为上...【详细内容】
2024-02-01  松鼠宝贝    Tags:Linux内核   点击:(72)  评论:(0)  加入收藏
如何确保Linux进程稳定与持久
在Linux系统中,进程的稳定性与持久性对于维持系统的持续运行至关重要。然而,由于各种原因,进程可能会面临崩溃或系统重启的情况。为了确保关键进程能够持续运行,我们必须采取一...【详细内容】
2024-01-19  松鼠宝贝    Tags:Linux进程   点击:(90)  评论:(0)  加入收藏
站内最新
站内热门
站内头条