ceph安装配置

简介

ceph是一个开源分布式存储系统,支持PB级别的存储,支持对 象存储,块存储和文件存储,高性能,高可用,可扩展。

部署网络建议架构图

1

部署

部署架构图,本次实验部署jewel版本

1

实验环境的Vagrantfile

lab1节点既作admin节点又作node节点,lab2,lab3只作为node节点,lab4作为作测试使用ceph的节点

# -*- mode: ruby -*-
# vi: set ft=ruby :ENV["LC_ALL"] = "en_US.UTF-8"Vagrant.configure("2") do |config|(1..4).each do |i|config.vm.define "lab#{i}" do |node|node.vm.box = "centos-7.4-docker-17"node.ssh.insert_key = falsenode.vm.hostname = "lab#{i}"node.vm.network "private_network", ip: "11.11.11.11#{i}"node.vm.provision "shell",inline: "echo hello from node #{i}"node.vm.provider "virtualbox" do |v|v.cpus = 3v.customize ["modifyvm", :id, "--name", "lab#{i}", "--memory", "3096"]file_to_disk = "lab#{i}_vdb.vdi"unless File.exist?(file_to_disk)# 50GBv.customize ['createhd', '--filename', file_to_disk, '--size', 50 * 1024]endv.customize ['storageattach', :id, '--storagectl', 'IDE', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', file_to_disk]endendend
end
复制代码

配置阿里ceph源

在所有节点执行如下操作

cat >/etc/yum.repos.d/ceph.repo<<EOF
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
priority=1[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0
priority=1[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/SRPMS
enabled=0
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
priority=1
EOF
yum makecache
复制代码

在admin节点安装ceph-deploy

lab1 节点

# 官方源
# 如果已经配置了上面的阿里源,不需要再配置如下的源
# 推荐使用阿里源,因为官方源速度太慢
cat >/etc/yum.repos.d/ceph.repo<<EOF
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-jewel/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
EOF# 更新系统软件
# 此操作可省略
# yum update -y# 安装 ceph-deploy
yum install -y ceph-deploy
复制代码

配置admin节点连接node节点

安装之后需要配置admin节点可以ssh无密码登录每个node节点和测试节点,用户需要有sudo权限

# 在每一个node节点执行
useradd ceph
echo 'ceph' | passwd --stdin ceph
echo "ceph ALL = (root) NOPASSWD:ALL" > /etc/sudoers.d/ceph
chmod 0440 /etc/sudoers.d/ceph
# 配置sshd可以使用password登录
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
systemctl reload sshd
# 配置sudo不需要tty
sed -i 's/Default requiretty/#Default requiretty/' /etc/sudoers# 在所有节点配置hosts
# 包括要进行ceph测试的机器
# 使用vagrant实验时注意
# 由于vagrant会自动把主机名解析为 127.0.0.1
# 所以在实验时如果在ceph集群内任意一台机器进行实验时
# 注意把本机名解析为 127.0.0.1 的行注释,如下所示
# 127.0.0.1	lab1	lab1
cat >>/etc/hosts<<EOF
11.11.11.111 lab1
11.11.11.112 lab2
11.11.11.113 lab3
11.11.11.113 lab4
EOF# 在admin节点执行
# 创建ceph用户,配置sshkey登录
# 由于lab1节点作为node节点时已经创建过ceph用户
# 第一条命令可能会出错,忽略即可
useradd ceph
su - ceph
ssh-keygen
ssh-copy-id ceph@lab1
ssh-copy-id ceph@lab2
ssh-copy-id ceph@lab3
ssh-copy-id ceph@lab4
复制代码

在admin节点创建集群

在lab1节点执行如下操作,node的主机名一定要设置正确 lab1, lab2, lab3。否则可能会无法实验成功

# 不要使用sudo也不要使用root用户运行如下的命令
su - ceph
mkdir my-cluster
cd my-cluster
# 创建lab1为monitor
ceph-deploy new lab1# 查看配置文件
ls -l# 配置ceph.conf
[global]
...
# 如果有多个网卡,应该配置如下选项,
# public network是公共网络,负责集群对外提供服务的流量
# cluster network是集群网络,负载集群中数据复制传输通信等
# 本次实验使用同一块网卡,生境环境建议分别使用一块网卡
public network = 11.11.11.0/24
cluster network = 11.11.11.0/24# 安装 ceph 包
# 如果按照官方文档安装方法 会重新配置安装官方ceph源
# 由于网络问题,安装可能会出错,需要多次执行
# ceph-deploy install 其实只是会安装 ceph ceph-radosgw 两个包
# ceph-deploy install lab1 lab2 lab3
# 推荐使用阿里源安装,因为使用ceph-deploy安装会很慢
# 使用如下命令手动安装包,替代官方的 ceph-deploy install 命令
# 如下操作在所有node节点上执行
yum install -y ceph ceph-radosgw# 部署monitor和生成keys
ceph-deploy mon create-initial
ls -l *.keyring# 复制文件到node节点
ceph-deploy admin lab1 lab2 lab3# 部署manager (luminous+)12及以后的版本需要部署
# 本次部署 jewel 版本 ,不需要执行如下命令
# ceph-deploy mgr create lab1# 添加osd 以磁盘方式
# 本次实验采用此种方法
# sdb 为虚拟机添加的磁盘设置名
ceph-deploy osd create lab1:sdb lab2:sdb lab3:sdb# 在node节点创建目录
rm -rf /data/osd1
mkdir -pv /data/osd1
chmod 777 -R /data/osd1
chown ceph.ceph -R /data/osd1# 添加osd 以文件目录方式
ceph-deploy osd prepare lab1:/data/osd1 lab2:/data/osd1 lab3:/data/osd1
ceph-deploy osd activate lab1:/data/osd1 lab2:/data/osd1 lab3:/data/osd1# 查看状态
ssh lab1 sudo ceph health
ssh lab1 sudo ceph -s
复制代码

清理集群

# 如果安装过程出错,使用如下命令清理之后重新开始
ceph-deploy purge lab1 lab2 lab3
ceph-deploy purgedata lab1 lab2 lab3
ceph-deploy forgetkeys
rm ceph.*
复制代码

扩展集群

提高可用性

  • 在lab1上运行metadata server 为后续使用cephfs
  • 在lab2,lab3运行monitor和manager提高集群可用性
# 为了使用CephFS,必须启动 metadata server
ceph-deploy mds create lab1# 添加monitor
ceph-deploy mon add lab2
ceph-deploy mon add lab3
ssh lab1 sudo ceph -s# 在monitor节点查看状态(需要以root用户或者sudo查看)
ceph quorum_status --format json-pretty# 添加manager (luminous+)12及以后的版本需要部署
# 本次部署 jewel 版本 ,不需要执行如下命令
# ceph-deploy mgr create lab2 lab3
复制代码

部署RGW使用Ceph Object Gateway

提供S3/Swift存储功能,实现S3和Swift兼容的接口,可以使用S3或Swift的命令行工具或SDK来使用ceph

# 启动 rgw
ceph-deploy rgw create lab1# 修改配置 /etc/ceph/ceph.conf
# 使用 rgw 监听在 80 端口
# lab1 为启动 rgw 的主机名
[client.rgw.lab1]
rgw_frontends = "civetweb port=80"# 重启 rgw
systemctl restart ceph-radosgw@rgw.lab1# 访问测试
curl -I http://11.11.11.111/
复制代码

使用ceph存储

应用存储使用架构图

11

对象存储

# 安装ceph
yum install -y ceph# 复制相关文件到要使用ceph-client的机器
ceph-deploy admin lab4# 测试
# 存储文件
echo 'hello ceph oject storage' > testfile.txt
ceph osd pool create mytest 8
rados put test-object-1 testfile.txt --pool=mytest# 查看读取文件
rados -p mytest ls
rados get test-object-1 testfile.txt.1 --pool=mytest
cat testfile.txt.1# 查看文件位置
ceph osd map mytest test-object-1# 删除文件
rados rm test-object-1 --pool=mytest# 删除pool
ceph osd pool rm mytest mytest --yes-i-really-really-mean-it
复制代码

块存储

# 安装ceph
yum install -y ceph# 复制相关文件到要使用ceph-client的机器
ceph-deploy admin lab4# 创建块设备镜像
rbd create foo --size 4096 --image-feature layering
rbd info foo
rados -p rbd ls# 映射镜像到块设备
sudo rbd map foo --name client.admin# 使用块设备创建文件系统
sudo mkfs.ext4 -m0 /dev/rbd/rbd/foo# 挂载使用
sudo mkdir /mnt/ceph-block-device
sudo mount /dev/rbd/rbd/foo /mnt/ceph-block-device
cd /mnt/ceph-block-device
echo 'hello ceph block storage' > testfile.txt# 清理
cd ~
sudo umount -lf /mnt/ceph-block-device
sudo rbd unmap foo
rbd remove foo
rados -p rbd ls
复制代码

S3对象存储

11.11.11.111 为安装了 RGW 的机器

# 安装
yum install -y ceph ceph-radosgw# 复制相关文件到要使用ceph-client的机器
ceph-deploy admin lab4# 创建S3所需要的pool
ceph osd pool create .rgw 128 128
ceph osd pool create .rgw.root 128 128
ceph osd pool create .rgw.control 128 128
ceph osd pool create .rgw.gc 128 128
ceph osd pool create .rgw.buckets 128 128
ceph osd pool create .rgw.buckets.index 128 128
ceph osd pool create .rgw.buckets.extra 128 128
ceph osd pool create .log 128 128
ceph osd pool create .intent-log 128 128
ceph osd pool create .usage 128 128
ceph osd pool create .users 128 128
ceph osd pool create .users.email 128 128
ceph osd pool create .users.swift 128 128
ceph osd pool create .users.uid 128 128# 查看
rados lspools# 访问测试
curl -I http://11.11.11.111/# 创建S3用户
# 保存如下命令返回的 user access_key secret_key
radosgw-admin user create --uid=foo --display-name=foo --email=foo@foo.com# 创建admin用户
radosgw-admin user create --uid=admin --display-name=admin# 允许admin读写users信息
radosgw-admin caps add --uid=admin --caps="users=*"# 允许admin读写所有的usage信息
radosgw-admin caps add --uid=admin --caps="usage=read,write"# 安装s3测试工具
yum install -y s3cmd# 配置s3cmd, 只需指定Access Key和Secret Key,其他默认即可
s3cmd --configure# 修该生成的配置文件
vim $HOME/.s3cfg
host_base = 11.11.11.111
host_bucket = 11.11.11.111/%(bucket)
use_https = False# 创建Bucket
s3cmd mb s3://mybucket
s3cmd ls# 上传Object
echo 'hello ceph block storage s3' > hello.txt
s3cmd put hello.txt s3://mybucket# 查看Object
s3cmd ls s3://mybucket# 下载Object
cd /tmp
s3cmd get s3://mybucket/hello.txt
cd ~# 删除bucket下所有对象
s3cmd del -rf s3://mybucket/
s3cmd ls -r s3://mybucket# 删除Bucket
s3cmd mb s3://mybucket1
s3cmd rb s3://mybucket1# 删除S3用户
radosgw-admin user rm --uid=foo
radosgw-admin user rm --uid=admin# 删除pool
ceph osd pool delete .rgw .rgw --yes-i-really-really-mean-it
ceph osd pool delete .rgw.root .rgw.root --yes-i-really-really-mean-it
ceph osd pool delete .rgw.control .rgw.control --yes-i-really-really-mean-it
ceph osd pool delete .rgw.gc .rgw.gc --yes-i-really-really-mean-it
ceph osd pool delete .rgw.buckets .rgw.buckets --yes-i-really-really-mean-it
ceph osd pool delete .rgw.buckets.index .rgw.buckets.index --yes-i-really-really-mean-it
ceph osd pool delete .rgw.buckets.extra .rgw.buckets.extra --yes-i-really-really-mean-it
ceph osd pool delete .log .log --yes-i-really-really-mean-it
ceph osd pool delete .intent-log .intent-log --yes-i-really-really-mean-it
ceph osd pool delete .usage .usage --yes-i-really-really-mean-it
ceph osd pool delete .users .users --yes-i-really-really-mean-it
ceph osd pool delete .users.email .users.email --yes-i-really-really-mean-it
ceph osd pool delete .users.swift .users.swift --yes-i-really-really-mean-it
ceph osd pool delete .users.uid .users.uid --yes-i-really-really-mean-it
复制代码

CephFS存储

# 安装ceph
yum install -y ceph ceph-fuse# 复制相关文件到要使用ceph-client的机器
ceph-deploy admin lab4# CephFS需要使用两个Pool来分别存储数据和元数据
ceph osd pool create fs_data 128
ceph osd pool create fs_metadata 128
ceph osd lspools# 创建一个CephFS
ceph fs new cephfs fs_metadata fs_data# 查看
ceph fs ls# 使用内核提供的功能 挂载CephFS
# 由于可能会有bug,建议使用 4.0 以上的内核
# 优点是性能比使用ceph-fuse更好
# name,secret 为 /etc/ceph/ceph.client.admin.keyring 里的内容
mkdir /mnt/mycephfs
mount -t ceph lab1:6789,lab2:6789,lab3:6789:/ /mnt/mycephfs -o name=admin,secret=AQBoclRaiilZJBAACLjqg2OUOOB/FNa20UJXYA==
df -h
cd /mnt/mycephfs
echo 'hello ceph CephFS' > hello.txt
cd ~
umount -lf /mnt/mycephfs
rm -rf /mnt/mycephfs# 使用 ceph-fuse 挂载CephFS
mkdir /mnt/mycephfs
ceph-fuse -m lab1:6789 /mnt/mycephfs
df -h
cd /mnt/mycephfs
echo 'hello ceph CephFS' > hello.txt
cd ~
umount -lf /mnt/mycephfs
rm -rf /mnt/mycephfs# 清理
# 停止 metadata server
# 本次部署在lab1,去lab1停止服务
systemctl stop ceph-mds@lab1
ceph fs rm cephfs --yes-i-really-mean-it
ceph osd pool delete fs_data fs_data --yes-i-really-really-mean-it
ceph osd pool delete fs_metadata fs_metadata --yes-i-really-really-mean-it# 开启 metadata server
# 方便以后使用 cephfs
systemctl start ceph-mds@lab1

本文转自掘金-ceph安装配置

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

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

相关文章

推荐好用的JavaScript模块

2019独角兽企业重金招聘Python工程师标准>>> 译者按&#xff1a; 作者将自己常用的JavaScript模块分享给大家。 原文&#xff1a;? JavaScript Modules Worth Using ?译者: Fundebug为了保证可读性&#xff0c;本文采用意译而非直译。另外&#xff0c;本文版权归原…

select函数_SQL高级功能:窗口函数

一、窗口函数有什么用&#xff1f;在日常生活中&#xff0c;经常会遇到需要在每组内排名&#xff0c;比如下面的业务需求&#xff1a;排名问题&#xff1a;每个部门按业绩来排名topN问题&#xff1a;找出每个部门排名前N的员工进行奖励面对这类需求&#xff0c;就需要使用sql的…

发挥项目“临时性”威力,让项目顺利实施

所谓临时性,就是要有明确的“开始”和“结束”。虽然大家都知道项目一定会有开始和结束的,但要更多地关注“明确“。 问题1:问商务(售前)或业主,这个项目什么时候结束? 答:商务或业主他们有时候也不知道,因为国内的项目大多数是提前开始交付,是一边交付,一边把里程…

上拉加载更多后台数据_6-7【微信小程序全栈开发课程】记录页面(七)--分页加载记录数据...

现在是一次性加载所有的记录数据&#xff0c;数据多的时候&#xff0c;会加载比较慢&#xff0c;所以我们改成分页加载&#xff0c;一次最多加载15条数据每次拉倒底部都会自动加载下一页的数据&#xff0c;知道所有的数据加载完成1、添加data变量编辑record.vue文件&#xff0c…

spring cloud eureka服务注册和调用

SPRING INITIALIZR构建工程 spring boot 可通过SPRING INITIALIZR构建项目访问SPRING INITIALIZR官网&#xff0c;填写项目相关信息后&#xff0c;生成项目。将下载的项目解压&#xff0c;打开idea&#xff0c;file-->new-->project from existing sources。import proje…

打印工资条怎么做到每个人都有表头明细_朋友说:能不能用python,帮我写一个“制作工资条”的自动化程序?...

本文说明今天和一个朋友吃饭&#xff0c;她说我经常使用Excel制作工资条&#xff0c;但是每个月都要做一遍&#xff0c;你能不能用python写一个代码&#xff0c;能够自动化完成这个工作。这当然可以啦&#xff0c;就是这么牛逼&#xff01;我们先来看看原始数据是什么样子的。那…

做优化的数据库工程师请参考!CynosDB的计算层设计优化揭秘

本文由云社区发表本文作者&#xff1a;孙旭&#xff0c;腾讯数据库开发工程师&#xff0c;9年数据库内核开发经验&#xff1b;熟悉数据库查询处理&#xff0c;并发控制&#xff0c;日志以及存储系统&#xff1b;熟悉PostgreSQL&#xff08;Greenplum&#xff0c;PGXC等&#xf…

netty发送数据_看完这篇还不清楚Netty的内存管理,那我就哭了

说明在学习Netty的时候&#xff0c;ByteBuf随处可见&#xff0c;但是如何高效分配ByteBuf还是很复杂的&#xff0c;Netty的池化内存分配这块还是比较难的&#xff0c;很多人学习过&#xff0c;看过但是还是云里雾里的&#xff0c;本篇文章就是主要来讲解&#xff1a;Netty分配池…

数字化改革体系架构“152”两次迭代升级为“1612”

数字化改革体系架构已经完成两次迭代&#xff0c;152-1512-1612。 2021年&#xff0c;浙江在全国率先启动一项关系全局、影响深远、制胜未来的重大集成改革——数字化改革&#xff0c;并确定为全面深化改革的总抓手。 2021年2月18日&#xff0c;数字化改革大会“152”工作体系…

python 40位的数减个位数_Python数据分析入门教程(五):数据运算

作者 | CDA数据分析师进行到这一步就可以算是开始正式的烹饪了&#xff0c;在这部分之前的数据操作部分我们列举了一些不同维度的分析指标&#xff0c;这一章我们主要看看这些指标都是怎么计算出来的。一、算术运算算术运算就是基本的加减乘除&#xff0c;在Excel或者Python中数…

数字化改革“152”体系详解

架构图 “1” 即一体化智能化公共数据平台&#xff08;平台大脑&#xff09;&#xff0c;按照“统一规划、统一支撑、统一架构、统一平台、统一标准、统一建设、统一管理、统一运维"的要求&#xff0c;建设省市县三级公共数据平台&#xff0c;叠加三级“大脑功能&#xf…

数字化改革“141”体系

县级以上是“152”大框架&#xff0c;县以下是“141”体系。 141体系是&#xff1a;县级社会治理中心、乡镇&#xff08;街道&#xff09;基层治理“四个平台”、村社网格。 “1” 第一个“1”指县级社会治理中心。 “4” 第二个“4”指乡镇&#xff08;街道&#xff09;基…

接口做的好怎么形容_淘宝直播预告怎么做才合格?如何做好?

很多淘宝商家在直播前没有做淘宝直播预告&#xff0c;或者不知道怎么去做直播预告&#xff0c;这对直播的效果会有很大的影响&#xff0c;那么直播前如何做好直播预告呢?怎样的直播预告才是合格的&#xff0c;下面来了解一下。1.必须去淘宝直播中控台发布。因为手机上发布目前…

“1+7+N”改革工作体系介绍

2021年&#xff0c;浙江省确定了“17N”的改革工作体系&#xff0c;要求以全面深化改革新成效再创体制机制新优势。&#xff08;2022年已经升级为“1612N”&#xff0c;点击阅读&#xff09; “1” 数字化改革&#xff0c;这是浙江全面深化改革的总抓手。将聚焦打造全球数字变…

浙江省数字化改革回顾(2022年5月)

事业的伟大在于目标的壮丽&#xff0c;也在于过程的壮丽&#xff1b;改革的成果在于享有的丰富&#xff0c;也在于经历的丰富。2021年2月18日&#xff0c;春节假期后首个工作日&#xff0c;浙江省委召开全省数字化改革大会&#xff0c;在全国率先开启数字化改革探索实践。此后&…

python 某个数是不是在某个范围内_教写一个简单的python小程序(04)

点击蓝字关注我们 会酸的柚子Python爱好者搞机少年七夕结束了~酸柚也是被强塞了满嘴的狗粮在这样充满恋爱腐朽气息的一天酸柚也是马不停蹄的在赶稿子兄弟们&#xff0c;给我顶起来呀~我们来看看今日的题目可能很多小伙伴对完全平方数这个概念有点生疏了完全平方数数学上&#x…

浙江公布2022年数字化改革“最系列“成果 评选出最佳应用104项

10月29日&#xff0c;省委改革办&#xff08;省数改办&#xff09;公布了2022年数字化改革“最系列”成果。该评选由省委改革办&#xff08;省数改办&#xff09;会同省委政研室、省人大常委会法工委、省市场监管局和省大数据局共同开展&#xff0c;评选了最佳应用104项、最强大…

dot net core 使用 IPC 进程通信

原文:dot net core 使用 IPC 进程通信版权声明&#xff1a;博客已迁移到 http://lindexi.gitee.io 欢迎访问。如果当前博客图片看不到&#xff0c;请到 http://lindexi.gitee.io 访问博客。本文地址 https://blog.csdn.net/lindexi_gd/article/details/79946496 dot net core 使…

Android手机用wifi连接adb调试的方法

https://www.jianshu.com/p/dc6898380e38 0x0 前言 Android开发肯定要连接pc的adb进行调试&#xff0c;传统的方法是用usb与pc进行连接&#xff0c;操作简单即插即用&#xff0c;缺点是pc上必须得有对应手机的usb驱动程序&#xff0c;对于谷歌亲儿子系列和三星摩托等外国品牌而…

控制台应用程序换换为窗体应用_Epic为开发者设计了一套iPhone使用的运动捕捉应用程序...

玩懂手机网7月13日资讯&#xff0c;我们都知道对于游戏或者是动漫开发者来说&#xff0c;运动捕捉设备是一套非常昂贵的设备&#xff0c;需要非常专业的独立开发人员&#xff0c;大量的时间才能完成&#xff0c;最近Epic为开发者设计了一套iPhone使用的运动捕捉应用程序。这套i…