9.Ceph部署

文章目录

  • 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.mfbz.cn/a/38192.html

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

相关文章

【uniapp开发小程序】设置全屏的开屏广告、长按识别图片、点击跳转通话 拨打电话

设置全屏的开屏广告需求实现 效果图&#xff1a; 点击跳转其他小程序&#xff1a; uni.navigateToMiniProgram() 官方文档&#xff1a;uni.navigateToMiniProgram(OBJECT) | uni-app官网 // 示例代码 uni.navigateToMiniProgram({appId: ,path: pages/index/index?id123,ext…

Kafka第二课-代码实战、参数配置详解、设计原理详解

一、代码实战 一、普通java程序实战 引入依赖 <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>2.4.1</version></dependency><dependency>&l…

基于 jmeter 和 shell 的接口性能自动化

目录 前言&#xff1a; 1. 总体需求 2. 实现流程 3.准备工作 4.具体实现 4.1 用例执行 主流程脚本 4.2 服务器监控 监控脚本&#xff1a; 服务器监控脚本 4.3 生成 html 报告 html 样式表 发邮件脚本 前言&#xff1a; 基于JMeter和Shell的接口性能自动化是一种有…

一起学SF框架系列5.7-模块Beans-BeanDefinition使用

SF如何使用BeanDefinition达成其目标IoC&#xff0c;我们通过跟踪BeanDefinition使用来了解。 使用起点 跟踪SF初始化过程&#xff0c;第一个点在&#xff1a;DefaultListableBeanFactory.preInstantiateSingletons。如下图&#xff1a; RootBeanDefinition是运行时Spring B…

(16)燃油流量和液位传感器

文章目录 前言 16.1 燃油流量传感器 16.1.1 连接到自动驾驶仪 16.2 燃油液位传感器 16.2.1 PWM油位传感器 16.2.2 模拟油位传感器 前言 在 4.0 及以后的固件版本中&#xff0c;ArduPilot 提供了使用燃油流量和液位传感器的能力&#xff0c;此外还有电池监控器。支持脉冲输…

安装Ceph集群

安装Ceph集群 环境准备 CentOS 7.6 主机名IPRoleadmin192.168.182.128adminnode1192.168.182.129mon/mgr/osdnode2192.168.182.130osdnode3192.168.182.131osdclient192.168.182.132 所有节点修改主机名相互解析三台node节点添加大小5G以上硬盘关闭所有节点防火墙与SeLinux所…

jenkins 关闭关闭CSRF Protection(跨站请求伪造保护)

jenkins版本 我的jenkins版本是&#xff1a;2.332.4 背景 Jenkins版本自2.204.6以来的重大变更有&#xff1a;删除禁用 CSRF 保护的功能。 从较旧版本的 Jenkins 升级的实例将启用 CSRF 保护和设置默认的发行者&#xff0c;如果之前被禁用。 解决方法 老版本Jenkins的CSRF…

亚马逊云科技,迈向十年新进阶

编辑&#xff1a;阿冒 设计&#xff1a;沐由 自2013年进入国内至今&#xff0c;亚马逊云科技见证了中国数字经济开启量质齐升的十年。在这十年里&#xff0c;亚马逊云科技持续不断地帮助广大中国企业实现上云重塑和云上创新。 从一间公司的时间节点而言&#xff0c;无论是中文的…

mac批量修改文件名为不同名字

mac批量修改文件名为不同名字怎么弄&#xff1f;很多小伙伴通过私信向我求助&#xff0c;用什么方法可以在mac电脑上批量修改文件名称&#xff0c;将大量文件修改成不同的名称。这可能是一项比较麻烦的操作&#xff0c;在电脑上进行过批量重命名的小伙伴都知道&#xff0c;一般…

达梦sql执行计划、HINT、索引简单应用

目录 收集统计信息. 3 1. 通过DBMS_STATS包中的方法. 3 2、删除指定表的统计信息. 3 执行计划. 3 常用执行计划操作符. 4 统计指定sql执行号的所有操作符的执行时间. 5 HINT 5 并行操作&#xff1a;. 6 查询计划重用、结果集重用. 7 示例. 8 1、收集统计信息&#x…

上手vue2的学习笔记5之在vue2项目中调用elment-ui

前言 上手vue2的学习笔记4之搭建vue环境 参考链接&#xff1a;vue2.0项目引入element-ui 一、安装elment-ui 进入搭建的vue项目中 cd vue_bing_test 安装 element npm i element-ui二、引入elment-ui elment官方教程 将main.js改成如下内容&#xff1a; import Vue fro…

Proxy代理前后,Httpheader 的变化

Vite.config 配置Proxy服务器, 解决Rest API 访问SpringBoot接口时&#xff0c;跨域的Session一致性。 import { defineConfig, loadEnv } from viteexport default defineConfig({server: {proxy: {/rest: {target: loadEnv(, process.cwd()).VITE_API_URL,changeOrigin: tru…

argparse 模块参数

官方文档&#xff1a;https://docs.python.org/3.7/library/argparse.html 示例 def parse_config():parser argparse.ArgumentParser(descriptionarg parser) # 创建一个 ​​ArgumentParser​​ 对象(parser)parser.add_argument(--cfg_file, typestr, defaultNone, hel…

[相遇 Bug] - ImportError: numpy.core.multiarray failed to import

背景: 因为最近在看点云模型, 在自己的环境上部署该项目: https://github.com/open-mmlab/OpenPCDet/tree/master 执行命令: 这里执行github项目给的demo.py文件, 命令格式如下: python demo.py --cfg_file cfgs/kitti_models/pointpillar.yaml --ckpt xxx/pointpillar_772…

WPF Prims框架详解

文章目录 前言Prism基本使用Prism选择&#xff0c;DryIoc还是UnityPrism基本框架搭建Prism动态更新View和ViewModel对应关系参数动态更新函数动态绑定 prism新建项目模板region使用事例测试是否限制空间 消息订阅如何使用消息订阅使用建议 路由导航对话框/弹窗功能实现代码 前言…

Element分页组件自定义样式

样式效果 页面代码 <el-paginationsize-change"handleSizeChange"current-change"handleCurrentChange":current-page"page.page":page-sizes"[10, 20, 30, 40]":page-size"page.size"layout"total, sizes, prev, …

HTML <map> 标签

实例 带有可点击区域的图像映射: <img src="planets.jpg" border="0" usemap="#planetmap" alt="Planets" /><map name="planetmap" id="planetmap"><area shape="circle" coords=&q…

Spring Boot 中的 @Field 注解详解

Spring Boot 中的 Field 注解详解 引言 Spring Boot 是目前 Java 生态圈中最受欢迎的 Web 应用开发框架之一&#xff0c;它提供了很多优秀的功能和工具&#xff0c;可以帮助开发者快速构建高效、可靠的 Web 应用程序。其中一个重要的功能就是数据绑定和验证&#xff0c;Sprin…

(阿里云)STM32L+BC20+MQTT协议传输温湿度,ADC,电压,GPS数据到阿里云物联网平台

1、材料准备 准备以下材料 2、设备连接 2.1 插入物联网卡 首先把BC20核心板从开发板上拆下来 然后将物联卡放置在BC20核心板内 物联卡放置完成将BC20核心板重新插入到开发板内&#xff08;注意不要弄错方向&#xff09; 同时接入天线 2.2 连接ST-Link仿真器 用3条杜邦线接…

DP485替代MAX485 RS485/RS422 收发器芯片

DP485E 是一款 5V 供电、半双工、低功耗、低摆率&#xff0c;完全满足 TIA/EIA-485 标准要求的 RS-485收发器。DP485E 工作电压范围为 4.75~5.25V&#xff0c;具备失效安全&#xff08;fail-safe&#xff09;、过温保护、限流保护、过压保护&#xff0c;控制端口热插拔输入等功…