ubuntu ceph部署
ubuntu ceph部署
参考文档:http://docs.ceph.org.cn/start/
节点配置
1个mon节点,3个osd节点
安装前准备
安装ceph-deploy
- 添加 release key
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
- 添加Ceph软件包源,例如15.2.13版本
echo deb http://download.ceph.com/debian-15.2.13/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
注:需要在每个节点上执行这2步
- 更新你的仓库,并安装 ceph-deploy
sudo apt-get update && sudo apt-get install ceph-deploy
注: 此步如果出错,请手动安装需要的包例如此前已经安装过,没有卸载干净所以需要手动安装
sudo dpkg -i --force-overwrite /var/cache/apt/archives/ceph-deploy_2.0.1-0ubuntu1_all.deb
如果还是出错,则运行sudo apt-get install -f强制修复受损的包
安装NTP 服务
ntp服务用数据服务器时间同步,建议在所有的ceph节点安装ntp服务(特别是 Ceph Monitor 节点)以避免时钟飘逸故障
#安装ntp
sudo apt-get install ntp#配置ntp
vi /etc/ntp.conf
#启动ntp服务
安装ceph
#添加待安装的host hostname到控制机/etc/hosts文件中
#将ceph版本号打进环境变量,确保安装指定版本的ceph
#初始化host,并在部署目录生成ceph.conf(初始化配置,携带有fsid),创建mon前必须要这一步
ssh {hostname} "wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -"
ssh {hostname} "echo deb http://download.ceph.com/debian-15.2.13/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list"
ssh {hostname} "sudo apt-get update"
ceph-deploy install {hostname}
注:如果install错了版本,可以执行ceph-deploy uninstall {hostname}来卸载
报错1:
[ceph_deploy][ERROR ] RuntimeError: AttributeError: module 'platform' has no attribute 'linux_distribution'
原因:
python3.5 之后就废弃了linux_distribution函数,我们的机器默认是python3.8
解决:
修改 /usr/lib/python3/dist-packages/ceph_deploy/hosts/remotes.py 脚本,采用distro.linux_distribution 替换platform.linux_distribution
import distro as dist
dist.linux_distribution
报错2:
sudo apt-get install -f修复包时报错(依赖的包有问题)
dpkg: error processing archive /var/cache/apt/archives/ceph-base_15.2.13-1focal_amd64.deb (--unpack):trying to overwrite '/usr/share/man/man8/ceph-deploy.8.gz', which is also in package ceph-deploy 2.0.1-0ubuntu1
Errors were encountered while processing:/var/cache/apt/archives/ceph-base_15.2.13-1focal_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
解决:
尝试修复对应包
sudo dpkg -i --force-overwrite {filename}
然后执行
sudo apt update && sudo apt upgrade
再重新ceph-deploy install {hostname}就ok了
初始化秘钥
#修改配置ceph.conf. 完成后再初始化好ceph-mon
#部署并启动mon,完成后部署目录会出现集群各节点密钥信息,同时mon节点的/etc/ceph/ceph.conf生成
ceph-deploy mon create-initial
会产生密钥,和在各个节点上部署好ceph-mon 和ceph-crash
拷贝配置文件到各个节点
#该步骤将部署目录的ceph.client.admin.keyring拷贝到远程node的/etc/ceph目录下
ceph-deploy admin node1 node2 node3
sudo chmod +r /etc/ceph/ceph.client.admin.keyring
#这样每个节点都可以使用ceph命令了
#查看状态
ceph health
状态warn 解决
cluster:id: 75e147c1-b2a4-4f54-8c11-0ee3ef9fc46ehealth: HEALTH_WARNmon is allowing insecure global_id reclaim
#执行,禁用不安全模式!
ceph config set mon auth_allow_insecure_global_id_reclaim false
添加OSD
#初始化SSD磁盘,先格式化磁盘
mkfs.xfs /dev/sdm1
wipefs -a /dev/sdm1
#出生化HDD磁盘
mkfs.xfs /dev/sdb1
wipefs -a /dev/sdb1#创建lv
pvcreate /dev/sdm1
#创建name=ceph-db-0的volume group,可通过vgdisplay查看
vgcreate ceph-db-0 /dev/sdm1
#创建一个64G的name=db-sdb的lv用来做bluestore osd的db文件,可通过lvdisplay查看
lvcreate -n db-sdb -L 64g ceph-db-0#添加osd
ceph-deploy osd create node1 --data /dev/sdb1 --block-db ceph-db-0/db-sdb --bluestore
##bulustore 添加wal db,自动初始化hdd磁盘
ceph-deploy osd create node2 --data /dev/sde1 --block-db ceph-db-0/db-sde --block-wal ceph-db-0/wal-sde --bluestore注:推荐上面的方式(即wal和db放在一起)#采取同样的办法多添加几个OSD
#查看OSD状态
ceph osd tree
安装mgr
ceph-deploy mgr create node1 node2 node3
开启dashboard
#需要安装 ceph-mgr-dashboard, 需要在mgr的机器上都安装dashboard才行
apt install ceph-mgr-dashboard -y
#启动dashboard
ceph mgr module enable dashboard
#禁用SSL,如果不禁用得添加证书
ceph config set mgr mgr/dashboard/ssl false
#创建用户
echo "admin123" > passwd.txt
ceph dashboard ac-user-create admin administrator -i passwd.txt
#设置端口
ceph config set mgr mgr/dashboard/server_port 8080
#注意: 不要设置server_addr, 一旦设置了server_addr, 当mgr主切换的时候,mgr中的module中服务的IP不会自动更新
#查看服务
ceph mgr services
-----
{"dashboard": "http://ceph-node2:8080/"
}
安装rgw
#安装3台
ceph-deploy install --rgw ceph-node1 ceph-node2 ceph-node3
#安装rgw
ceph-deploy rgw create ceph-node1 ceph-node2 ceph-node3#创建用户及配置dashboard
#创建用户,会返回用户配置信息 --system表示系统用户
radosgw-admin user create --uid=ceph_dashboard --display-name=ceph-dashboard --system#添加access_key 和 secret_key
vi ak
vi sk
#添加用户证
ceph dashboard set-rgw-api-access-key -i ak
ceph dashboard set-rgw-api-secret-key -i sk
ceph dashboard set-rgw-api-ssl-verify False
ceph dashboard set-rgw-api-scheme http
#完成之后在dashboard的ObjectGetway里就有配置了
#可以在dashboard上执行创建用户,bucket等操作
安装cephfs
#安装mds, 3个mds,1主2从
#此时可以修改ceph.conf 通过--overwrite-conf跟新配置
ceph-deploy --overwrite-conf mds create node1 node2 node3
#创建pool
ceph osd pool create cephfs_data 2056
ceph osd pool create cephfs_metadata 64
#创建fs,每个集群只能创建一个fs?
ceph fs new cephfs cephfs_metadata cephfs_data#客户端需要安装ceph-fuse 和ceph-comm
相关文章:
ubuntu ceph部署
ubuntu ceph部署 参考文档:http://docs.ceph.org.cn/start/ 节点配置 1个mon节点,3个osd节点 安装前准备 安装ceph-deploy 添加 release key wget -q -O- https://download.ceph.com/keys/release.asc | sudo apt-key add -添加Ceph软件包源&…...
2024.7.8
2024.7.8 【追逐影子的人,自己就是影子 —— 荷马】 Monday 六月初三 讲的根本听不懂好吧! 目前只写了三道题(但是黑色 确实是没见过这么抽象的数据结构 Gregor and the Two Painters Number of Components Equal LCM Subsets 这个lcm确实…...
Spring 外部jar包Bean自动装配
Spring 外部jar包Bean自动装配 背景介绍 公共代码模块被作为jar包引入业务项目,前者定义的bean即使添加了Component注解由于不会被扫描到也就无法被Spring管理。此处通过Spring SPI机制来完成 使用 spring.factories 在外部 jar 包中创建 spring.factories 文件&a…...

2通道音频ADC解码芯片ES7243L、ES7243E、ES7243,用于低成本实现模拟麦克风转换为IIS数字话筒
前言: 音频解码芯片某创参考价格: ES7243L 500:¥1.36 / 个 ES7243E 500:¥1.66 / 个 ES7243 500: ¥1.91 / 个 其中ES7243L工作电压为1.8V,与其他两款的3.3V工作电压不同&…...

uniapp跨域问题解决
找到menifest文件,在文件的最后添加如下代码: // h5 解决跨域问题"h5":{"devServer": {"proxy": {"/adminapi": {"target": "https://www.demo.com", // 目标访问网址"changeOrigin…...
[C++][ProtoBuf][Proto3语法][一]详细讲解
目录 1.字段规则2.消息类型的定义与使用1.定义2.使用 3.enum类型1.语法2.定义时注意3.代码 1.字段规则 消息的字段可以⽤下⾯⼏种规则来修饰: singular:消息中可以包含该字段零次或⼀次(不超过⼀次) proto3语法中,字段默认使⽤该规则 repeat…...

千古雄文《渔樵问对》原文、译文、解析
邵雍《渔樵问对》:开悟奇文,揭示世界的终极意义 【邵雍《渔樵问对》:开悟奇文,揭示世界的终极意义】 邵雍(1011年1月21日-1077年7月27日,宋真宗大中祥符四年十二月二十五日戌时生至神宗熙宁十…...
uniapp 开发备忘录-防坑指南
uniapp 开发备忘录-防坑指南 npm run dev:mp-weixin 编译微信小程序报错: [plugin:uni:mp-using-component] Expected ‘,’ or ‘}’ after property value in JSON at position 解决方案:升级uniapp 到最新 alpha 版。(2024年7月13日&am…...
Simple_ReAct_Agent
参考自https://www.deeplearning.ai/short-courses/ai-agents-in-langgraph,以下为代码的实现。 Basic ReAct Agent(manual action) import openai import re import httpx import os from dotenv import load_dotenv, find_dotenvOPENAI_API_KEY os.getenv(OPEN…...
window wsl安装ubuntu
文章目录 wsl安装ubuntu什么是wsl安装wsl检查运行 WSL 2 的要求将 WSL 2 设置为默认版本查看并安装linux WSL2的使用如何查看linux文件wsl如何使用代理:方法1:方法2:通过 DNS 隧道来配置 WSL 的网络 如何将 WSL 接入局域网并与宿主机同网段使用VScode连接…...
postmessage()在同一域名下,传递消息给另一个页面
这里是同域名下,getmessage.html(发送信息)传递消息给index.html(收到信息,并回传收到信息) index.html页面 <!DOCTYPE html> <html><head><meta http-equiv"content-type"…...

初始redis:在Ubuntu上安装redis
1.先切换到root用户 使用su命令切换到root 2.使用apt命令来搜索redis相关的软件包 命令:apt search redis 3.下载redis 命令: apt install redis 在Ubuntu 20.04中 ,下载的redis版本是redis5 4.查看redis状态 命令: netst…...

生物素结合金纳米粒子(Bt@Au-NPs ) biotin-conjugated Au-NPs
一、定义与特点 定义:生物素结合金纳米粒子,简称BtAu-NPs或biotin-conjugated Au-NPs,是指通过特定的化学反应或物理方法将生物素修饰到金纳米粒子表面,形成稳定的纳米复合材料。 特点: 高稳定性:生物素的修…...

LeetCode热题100刷题9:25. K 个一组翻转链表、101. 对称二叉树、543. 二叉树的直径、102. 二叉树的层序遍历
25. K 个一组翻转链表 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), nex…...

PyJWT,一个基于JSON的轻量级安全通信方式的python库
目录 什么是JWT? JWT的构成 PyJWT库简介 安装PyJWT 生成JWT 验证JWT 使用PyJWT的高级功能 自定义Claims 错误处理 结语 什么是JWT? 在介绍PyJWT这个Python库之前,我们首先需要了解什么是JWT。JWT,全称JSON Web Token&am…...

Golang | Leetcode Golang题解之第223题矩形面积
题目: 题解: func computeArea(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2 int) int {area1 : (ax2 - ax1) * (ay2 - ay1)area2 : (bx2 - bx1) * (by2 - by1)overlapWidth : min(ax2, bx2) - max(ax1, bx1)overlapHeight : min(ay2, by2) - max(ay1, by1)…...
新手怎么使用GitLab?
GitLab新手指南: GitLab 是一个非常强大的版本控制和项目管理平台,对于新手来说,开始使用可能会有些许挑战,但只要跟着以下步骤,相信你就能很快上手。 1. 注册与登录 访问网站:打开浏览器,访问 GitLab官网…...

表情包原理
https://unicode.org/Public/emoji/12.1/emoji-zwj-sequences.txt emoji 编码规则介绍_emoji编码-CSDN博客 UTS #51: Unicode Emoji C UTF-8编解码-CSDN博客 创作不易,小小的支持一下吧!...
技术难点思考SpringBoot如何集成Jmeter开发
技术难点思考SpringBoot如何集成Jmeter开发 需求概述 构建一个高性能的压测平台,该平台需通过Spring Boot框架调用JMeter进行自动化压力测试。 解决方案一:使用Runtime类调用外部进程 技术概述 Java的Runtime类提供了与操作系统交互的接口࿰…...
如何快速使用C语言操作sqlite3
itopen组织1、提供OpenHarmony优雅实用的小工具2、手把手适配riscv qemu linux的三方库移植3、未来计划riscv qemu ohos的三方库移植 小程序开发4、一切拥抱开源,拥抱国产化 一、sqlite3库介绍 sqlite3库可从官网下载,当前版本为sqlite3 3.45.3ht…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...

以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...