9.Ceph部署

news2024/10/7 12:18:34

文章目录

  • Ceph部署
    • 前期环境准备
    • 实验部署
      • 软件安装
      • 部署Ceph集群
      • 部署mon节点
      • 部署OSD存储节点
      • 部署mgr节点
      • 开启监控模块
      • 管理pool

Ceph部署

前期环境准备

主机名public网络cluster网络角色
admin192.168.242.69admin(管理节点)
node01192.168.242.66192.168.242.100.11mon、mgr、osd
node02192.168.242.67192.168.242.100.12mon、mgr、osd
node03192.168.242.68192.168.242.100.13mon、osd
client192.168.242.70client
####主机准备

为   node01   node02   node03    三台主机另外添加一张网卡和三个硬盘
###磁盘刷新

lsblk

如果在启动时添加磁盘,使用下面的命令刷新磁盘

echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan
####网卡设置

cd /etc/sysconfig/network-scripts/

cp ifcfg-ens32 ifcfg-ens33

###修改网卡配置文件,修改IP地址

vim ifcfg-ens33


systemctl restart network
###环境准备
###可选步骤:创建 Ceph 的管理用户


useradd cephadm
passwd cephadm

visudo
cephadm ALL=(root) NOPASSWD:ALL
####防火墙设置
####关闭 selinux 与防火墙


systemctl disable --now firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
####根据规划设置主机名
####在每一台主机上分别设置


hostnamectl set-hostname admin
hostnamectl set-hostname node01
hostnamectl set-hostname node02
hostnamectl set-hostname node03
hostnamectl set-hostname client

su
####在所有的主机上设置
####配置 hosts 解析

vim /etc/hosts

192.168.242.69 admin
192.168.242.66 node01
192.168.242.67 node02
192.168.242.68 node03
192.168.242.70 client

实验部署

软件安装

---所有主机---

###安装常用软件和依赖包

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----

###在admin管理节点配置  ssh  免密登陆其他所有节点

vim /etc/ssh/ssh_config

注释掉: StrictHostKeyChecking ask

将  ask     改为  no


ssh-keygen -t rsa

sshpass -p '123' ssh-copy-id root@admin
sshpass -p '123' ssh-copy-id root@node01
sshpass -p '123' ssh-copy-id root@node02
sshpass -p '123' ssh-copy-id 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-certificate

rpm -ivh ceph-release-1-1.el7.noarch.rpm --force
---所有主机---

###执行完上面所有的操作之后重启所有主机(可选)

sync          ####同步操作
reboot        ####重启

部署Ceph集群

---所有主机---

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

mkdir -p /etc/ceph
---admin主机---

###安装 ceph-deploy 部署工具

cd /etc/ceph
yum install -y ceph-deploy


###查看版本
ceph-deploy --version

在这里插入图片描述

---admin---

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

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


####方法一
###下面的命令执行比较的慢,可以采用另外一种方式
cd /etc/ceph
ceph-deploy install --release nautilus node0{1..3} admin

###ceph-deploy install 本质就是在执行下面的命令:
yum clean all
yum -y install epel-release
yum -y install yum-plugin-priorities
yum -y install ceph-release ceph ceph-radosgw



###方法二
####也可采用手动安装 Ceph 包方式,在其它节点上执行下面的命令将 Ceph 的安装包都部署上:

sed -i 's#download.ceph.com#mirrors.tuna.tsinghua.edu.cn/ceph#' /etc/yum.repos.d/ceph.repo

yum install -y ceph-mon ceph-radosgw ceph-mds ceph-mgr ceph-osd ceph-common ceph

部署mon节点

---admin---

###在管理节点运行下述命令,告诉 ceph-deploy 哪些是 mon 监控节点
###生成初始配置

cd /etc/ceph

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

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

ls /etc/ceph
ceph.conf					#ceph的配置文件
ceph-deploy-ceph.log		#monitor的日志
ceph.mon.keyring			#monitor的密钥环文件

在这里插入图片描述

---admin---

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

cd /etc/ceph
ceph-deploy mon create node01 node02 node03			
#创建 mon 节点,由于 monitor 使用 Paxos 算法,其高可用集群节点数量要求为大于等于 3 的奇数台

ceph-deploy --overwrite-conf mon create-initial	
###如果mon节点配置文件与管理节点不一样,可以执行这个命令
###配置初始化 mon 节点,并向所有节点同步配置
### --overwrite-conf 参数用于表示强制覆盖配置文件


ceph-deploy gatherkeys node01						
###可选操作,向 node01 节点收集所有密钥

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

ls /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.conf
ceph-deploy-ceph.log
ceph.mon.keyring

在这里插入图片描述

---node01节点---

###在 mon 节点上查看自动开启的 mon 进程

ps aux | grep ceph

在这里插入图片描述

---admin---

###在管理节点查看 Ceph 集群状态

cd /etc/ceph
ceph -s
###查看 mon 集群选举的情况

ceph quorum_status --format json-pretty | grep leader

在这里插入图片描述

####扩容 mon 节点
####横向扩展

ceph-deploy mon add <节点名称>
---admin---

###部署能够管理 Ceph 集群的节点(可选)
###可实现在各个节点执行 ceph 命令管理集群

cd /etc/ceph
ceph-deploy --overwrite-conf config push node01 node02 node03		
#向所有 mon 节点同步配置,确保所有 mon 节点上的 ceph.conf 内容必须一致

ceph-deploy admin node01 node02 node03			
#本质就是把 ceph.client.admin.keyring 集群认证文件拷贝到各个节点


---mom节点---

###在 mon 节点上查看

ls /etc/ceph
ceph.client.admin.keyring  ceph.conf  rbdmap  tmpr8tzyc

cd /etc/ceph
ceph -s

在这里插入图片描述

部署OSD存储节点

###node主机添加完硬盘后不要分区,直接使用

lsblk 
---admin---

####如果是利旧的硬盘,则需要先擦净(删除分区表)磁盘(可选,无数据的新硬盘可不做)

cd /etc/ceph
ceph-deploy disk zap node01 /dev/sdb
ceph-deploy disk zap node02 /dev/sdb
ceph-deploy disk zap node03 /dev/sdb
---admin---

###添加 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

####查看 ceph 集群状态
ceph -s

####查看OSD状态
ceph osd stat
ceph osd tree
rados df


---admin---

ceph osd status    
###查看 osd 状态,需部署 mgr 后才能执行

ceph osd df    
###查看 osd 容量,需部署 mgr 后才能执行
---admin---

#扩容 osd 节点

cd /etc/ceph
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

###添加 OSD 中会涉及到 PG 的迁移,由于此时集群并没有数据,因此 health 的状态很快就变成 OK,如果在生产环境中添加节点则会涉及到大量的数据的迁移。

在这里插入图片描述

部署mgr节点

---admin---

####ceph-mgr守护进程以Active/Standby模式运行,可确保在Active节点或其ceph-mgr守护进程故障时,其中的一个Standby实例可以在不中断服务的情况下接管其任务。
###根据官方的架构原则,mgr至少要有两个节点来进行工作。


cd /etc/ceph
ceph-deploy mgr create node01 node02

ceph -s

在这里插入图片描述

####解决 HEALTH_WARN 问题:mons are allowing insecure global_id reclaim问题:
禁用不安全模式:
ceph config set mon auth_allow_insecure_global_id_reclaim false


####扩容 mgr 节点
ceph-deploy mgr create <节点名称>
---admin---

ceph osd status    
###查看 osd 状态,需部署 mgr 后才能执行

ceph osd df    
###查看 osd 容量,需部署 mgr 后才能执行

在这里插入图片描述

开启监控模块

---node01---

####在 ceph-mgr Active节点执行命令开启

ceph -s | grep mgr

yum install -y ceph-mgr-dashboard

cd /etc/ceph

ceph mgr module ls | grep dashboard
---node01---

####开启 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 0.0.0.0
ceph config set mgr mgr/dashboard/server_port 8000

在这里插入图片描述

---node01---

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

####确认访问 dashboard 的 url
ceph mgr services

####设置 dashboard 账户以及密码

echo "123" > dashboard_passwd.txt


###方法一(以被替换)
ceph dashboard set-login-credentials admin -i dashboard_passwd.txt
###方法二
ceph dashboard ac-user-create admin administrator -i dashboard_passwd.txt
###浏览器访问:http://192.168.242.66:8000 
###账号密码为 admin/123

在这里插入图片描述

管理pool

  • 上面我们已经完成了 Ceph 集群的部署,但是我们如何向 Ceph 中存储数据呢?
  • 首先我们需要在 Ceph 中定义一个 Pool 资源池。
  • Pool 是 Ceph 中存储 Object 对象抽象概念。我们可以将其理解为 Ceph 存储上划分的逻辑分区,Pool 由多个 PG 组成;而 PG 通过 CRUSH 算法映射到不同的 OSD 上;同时 Pool 可以设置副本 size 大小,默认副本数量为 3。
  • Ceph 客户端向 monitor 请求集群的状态,并向 Pool 中写入数据,数据根据 PGs 的数量,通过 CRUSH 算法将其映射到不同的 OSD 节点上,实现数据的存储。
  • 这里我们可以把 Pool 理解为存储 Object 数据的逻辑单元;当然,当前集群没有资源池,因此需要进行定义。
###创建一个 Pool 资源池,其名字为 mypool,P
###Gs 数量设置为 64,设置 PGs 的同时还需要设置 PGP(通常PGs和PGP的值是相同的):
###PG (Placement Group),pg 是一个虚拟的概念,用于存放 object
###PGP(Placement Group for Placement purpose),相当于是 pg 存放的一种 osd 排列组合

cd /etc/ceph
ceph osd pool create mypool 64 64
  • PG数官方推荐:一个pool资源池内应该包含多少PG数
    • OSD总数 < 5 ,PG数推荐为128
    • 5 < OSD总数 < 10 ,PG数推荐为512
    • 10 < OSD总数 < 50 ,PG数推荐为4096
    • OSD总数 > 50 ,PG数推荐为( Target PGs per OSD ) x ( OSD # ) x ( %Data ) / ( Size )(取最接近2的次方值)
####查看集群 Pool 信息

ceph osd pool ls    或    rados lspools

ceph osd lspools    ###能查看到资源池的ID号

在这里插入图片描述

####查看资源池副本的数量

ceph osd pool get mypool size
###查看 PG 和 PGP 数量

ceph osd pool get mypool pg_num
ceph osd pool get mypool pgp_num
###修改 pg_num 和 pgp_num 的数量为 128

ceph osd pool set mypool pg_num 128
ceph osd pool set mypool pgp_num 128

ceph osd pool get mypool pg_num
ceph osd pool get mypool pgp_num

在这里插入图片描述

####修改 Pool 副本数量为 2

ceph osd pool set mypool size 2

ceph osd pool get mypool size

在这里插入图片描述

####修改默认副本数为 2


vim ceph.conf
......
osd_pool_default_size = 2

ceph-deploy --overwrite-conf config push node01 node02 node03

###重启服务

systemctl restart ceph-mon.target

在这里插入图片描述
在这里插入图片描述

####删除 Pool 资源池

###删除存储池命令存在数据丢失的风险,Ceph 默认禁止此类操作,需要管理员先在 ceph.conf 配置文件中开启支持删除存储池的操作


vim ceph.conf
......
[mon]
mon allow pool delete = true


###推送 ceph.conf 配置文件给所有 mon 节点

ceph-deploy --overwrite-conf config push node01 node02 node03


###所有 mon 节点重启 ceph-mon 服务

systemctl restart ceph-mon.target


###执行删除 Pool 命令

ceph osd pool rm pool01 pool01 --yes-i-really-really-mean-it

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Elemnt-UI——el-popover点击出现多个弹框】

效果图 解决 :append-to-body"false"添加这个属性就可以了 <el-popoverv-model"item.contextmenuVisible"placement"bottom-end":append-to-body"false"trigger"click":visible-arrow"false"hide"item.…

[PCIE体系结构导读]PCIE总结(一)

什么是PCIE PCIe Peripheral Component Interconnect express 快速外部组件互联 高速串行计算机扩展总线标准 处理器系统的局部总线 连接外部设备 高速、低时延支持热插拔可靠扩展性好复杂度高点对点串行连接 附一个博主写的总结文章&#xff0c;非常好 《PCI EXPRESS体系结…

如何在服务器下载coco数据集

如果是需要在服务器上进行跑实验&#xff0c;可以直接通过wget下载链接 那么如何确定下载地址呢&#xff1f; 例如&#xff1a;先找到coco的数据集地址http://cocodataset.org 然后可以看到 可以下载一个 2017 Train/Val annotations[241MB]&#xff0c;在下载内容中可以看到…

跨域是怎么个事?

跨域是怎么个事&#xff1f; 【一】到底什么是跨域&#xff1f;【二】什么是浏览器的同源策略&#xff1f;【三】跨域问题有哪些解决方案&#xff1f;【四】详细说说Nginx解决跨域问题的实现过程&#xff1f;&#xff08;1&#xff09;项目准备 【一】到底什么是跨域&#xff1…

宋浩线性代数笔记(一)行列式的计算

本帖更新b站宋浩老师的线代网课笔记&#xff0c;内容较为细致详细&#xff0c;参考书用的是科学出版社的第三版&#xff0c;之后会附加同济出版社第六版的教材内容。 &#xff08;字不好看大家将就看吧QAQ&#xff09;

【论文阅读】一些多轮对话文章的体会 ACL 2023

前言 本文是对昨天看到的ACL 2023三篇多轮对话文章的分享这三个工作都是根据一些额外属性控制输出的工作&#xff0c;且评估的方面比较相似&#xff0c;可以借鉴 方法 这几篇文章都不是做general任务的&#xff0c;倾向于通过一些额外信息&#xff0c;来做specific任务 【1】…

当低代码和无代码平台可以加速应用程序现代化时

你的组织很可能正在寻求将遗留应用程序现代化、将单片应用架构拆分为服务&#xff0c;并迁移到公共或私有云基础架构。在此过程中&#xff0c;您可能还希望改善用户体验&#xff0c;创建CI/CD流水线&#xff0c;添加测试自动化&#xff0c;并实施一系列其他DevOps最佳实践。 这…

水声功率放大器的作用是什么

水声功率放大器是一种专门用于水声设备的高功率电子设备&#xff0c;主要用于提升水下信号的传输距离和保证语音清晰度。它的作用在水下通信、水下测量、海洋科学等领域都非常重要。 其主要作用有以下几个方面&#xff1a; 增强信号传输距离 水声信号在水中传播会受到各种因素的…

维安股份冲刺A股上市:计划募资约15亿元,上海科学院为实控人

7月17日&#xff0c;上海证券交易所对上海维安电子股份有限公司&#xff08;下称“维安股份”&#xff09;发出问询函。据贝多财经了解&#xff0c;维安股份于2023年6月20日递交招股书&#xff0c;准备在上海证券交易所主板上市。 本次冲刺上市&#xff0c;维安股份计划募资15.…

解决一云多芯全球命题,浪潮云海给出了解题思路

云计算&#xff0c;生而为用户简化资源的使用&#xff0c;让用户不必关注复杂的底层硬件架构&#xff0c;而是通过“服务”的方式调用资源&#xff0c;专注于自己的业务创新。 因此&#xff0c;用户要上云&#xff0c;就天然地要求云平台必须能够屏蔽底层的硬件架构&#xff0…

轻量级应用服务器开放端口

关于使用浏览器连接自己所写的TCP进程时&#xff0c;由于没有开放端口&#xff0c;而且搜索到对应的操作来进行开放端口&#xff0c;所以在完成开放端口后特意做个笔记&#xff0c;防止忘记。 登录自己所使用的服务器的网站找到控制台 找到轻量级应用服务器 找到所需要开放端口…

建造者模式-复杂对象的组装与创建

生产一辆车&#xff0c;主要有以下步骤&#xff1a;安装骨架、安装发动机及安装轮胎。这些步骤有指定的执行顺序&#xff0c;步骤缺一不可。 图 传统方案 传统方案存在的问题&#xff1a; 传参不便&#xff0c;虽可在构造函数那传参&#xff0c;但是传参时需要注意参数顺序等…

After Effects CPU 和 RAM 使用率高,如何修复?

如果您发现 Adob​​e After Effects 的 CPU 和 RAM 使用率较高&#xff0c;可以按照以下方法解决该问题。 1]确保您的系统满足最低系统要求 要在您的 PC 上运行 Adob​​e After Effects&#xff0c;您的 PC 需要满足最低系统要求。只有这样&#xff0c;该程序才会停止消耗更…

WEB:Confusion1

背景知识 SSTI漏洞 题目 根据网站图片和题目描述的提示&#xff0c;大象是php&#xff0c;蟒蛇是python&#xff0c;说明了这个网站是用python写的 在python中&#xff0c;比较常规的漏洞就是SSTI模板注入 没有思路&#xff0c;先点login和register页面看看 查看源代码 之前…

如何防止DDoS?基于分布式云的 DDoS 解决方案一览

在日益开放和互联的世界中&#xff0c;DDOS&#xff08;分布式拒绝服务&#xff09;攻击和安全漏洞日益频发&#xff0c;企业都应将有效地保护其业务、声誉和数据中心免受不断加剧的DDoS攻击放在战略性位置。如何防止DDoS&#xff1f;看了F5提供的分布式云DDoS解决方案&#xf…

list最常用的遍历五种方式以及使用场景

目录 遍历方式的适用场景对比 迭代器遍历 列表迭代器 增强for遍历 Lambda表达式 lambda表达式简介 普通for遍历 集合中通用的并且常用的六种方法 遍历方式的适用场景对比 迭代器遍历 &#xff1a;在遍历过程中需要删除元素&#xff0c;请使用迭代器 列表迭代器&#xff1…

Java如何实现定时读取json文件里的内容

Java实现定时读取json文件里的内容 项目背景代码实现读取json配置文件定时任务 测试 项目背景 有时候我们会需要定时来读取JSON配置文件里的内容&#xff0c;来执行一些业务逻辑上的操作。 比如&#xff1a;开发一个物流运输系统&#xff0c;系统需要定期读取一个包含货物信息…

6个真正免费的平面设计素材网站

新手设计师没有自己的素材库&#xff0c;找素材费时又费力&#xff0c;找到了还不一定能免费下载或商用&#xff0c;别急&#xff01;我带着我收藏多年的素材库来了&#xff0c;平面、UI、免扣、高清背景图、设计元素、字体等素材全部都有&#xff0c;重点是免费下载&#xff0…

线程池学习(四)任务调度

线程池有几个重要的属性&#xff0c;核心线程数&#xff0c;最大线程数&#xff0c;阻塞任务队列。 一、调度流程 1. 接收新的任务后&#xff0c;先判断核心线程数是否已满&#xff0c;未满则创建新的线程去执行任务 2. 如果核心线程数已满&#xff0c;再判断阻塞任务队列是否…

Vue Router相关理解2

路由的query参数 传递参数 <!-- <router-link to"/home/message/detail?id666&title你好啊">{{ m.title }}</router-link> --><!-- 跳转路由并携带query参数&#xff0c;to的字符串写法 --><!-- <router-link :to"/home/m…