其他分享
首页 > 其他分享> > 单机CEPH安装部署与对象存储

单机CEPH安装部署与对象存储

作者:互联网

个人记录,仅供参考
本文只记录操作流程以及我遇到的报错和解决手段,不包含CEPH知识
报错若没遇到可以不看,遇到其他问题可以去附录里的链接找找

1. 单机CEPH安装部署

(1) 准备

虚拟机:VMware WorkStation 16 Pro
系统:Ubuntu 20.04.3 LTS
安装ceph-deploy:

sudo apt -y install ceph-deploy

ceph-deploy是一个ceph的简易部署工具,先装这个

(2) 创建新集群

创建一个文件夹 myceph 在其内部打开终端输入:

ceph-deploy new zuiyumeng-virtual-machine

其中zuiyumeng-virtual-machine为我的主机名(后面改成了zuiyumeng),主机名可以输入hostname命令查看
这个命令可能会出现下面的报错1、2
修改配置
因为是单节点集群,需要修改配置把集群的副本数量设置为1,就是将以下内容加入ceph.conf中(在myceph中)

[global]
osd pool default size = 1
osd pool default min size = 1

报错1:

[ceph_deploy][ERROR ] RuntimeError: AttributeError: module 'platform' has no attribute 'linux_distribution'

原因是python3.7后不再支持platform.linux_distribution

解决:

修改/usr/lib/python3/dist-packages/ceph_deploy/hosts/remotes.py中对应位置为如下所示(需要对应权限,可以在终端中sudo vim修改)

def platform_information(_linux_distribution=None):
    """ detect platform information from remote host """
    """
    linux_distribution = _linux_distribution or platform.linux_distribution
    distro, release, codename = linux_distribution()
    """
    distro = release = codename = None
    try:
          linux_distribution = _linux_distribution or platform.linux_distribution
          distro, release, codename = linux_distribution()
    except AttributeError:
          pass

修改后如图:
image.png

报错2:

[zuiyumeng-virtual-machine][DEBUG ] IP addresses found: ['192.168.218.128']
[ceph_deploy.new][DEBUG ] Resolving host zuiyumeng-virtual-machine
[ceph_deploy][ERROR ] UnableToResolveError: Unable to resolve host: zuiyumeng-virtual-machine
解决:

不清楚什么情况,但试了一下,重新设置了一个主机名就好了

hostnamectl set-hostname zuiyumeng

其中zuiyumeng是新设置的主机名
然后输入

ceph-deploy new zuiyumeng

就成功了= =

(3) 安装ceph软件包

安装Ceph软件,这里安装L版本(luminous),命令:

ceph-deploy install --release luminous zuiyumeng

**初始化 mon **Ceph的整个集群的状态和配置信息等都是通过一个名为Monitor的集群管理的,因此首先需要启动Monitor服务。可以执行如下命令完成:

ceph-deploy mon create-initial 
ceph-deploy admin zuiyumeng

启动Monitor节点后Ceph集群就可以访问了,通过ceph -s命令可以查看集群的状态。
部署ceph mgr ceph mgr也是一个必须部署的组件,可以通过如下命令部署。

ceph-deploy mgr create zuiyumeng

**部署ceph osd **osd是Ceph中存储数据的节点,这里就构建一个只有一个逻辑卷的OSD实验一下。
部署前先查看当前节点可用磁盘信息(重点看/的信息而不是\的信息)

ceph-deploy disk list zuiyumeng

这个命令可能发生下面的报错3
可以看到有/dev/sda 、/dev/sdb等等
当然,我这次实验所有节点都在这个虚拟机上所以也可以直接使用命令lsblk查看磁盘
如果没有sdb的话需要去再挂载一个(保险起见,为了不影响sda,但我也没试过直接用sda),操作过程见报错3后面
确认有sdb后先擦除磁盘

ceph-deploy disk zap zuiyumeng /dev/sdb

这时可能出现报错4
之后就可以创建一个运行在整个盘上的OSD

ceph-deploy osd create zuiyumeng --data /dev/sdb

这时可能出现报错5
到此,CEPH以及安装并部署完毕了

报错3

[zuiyumeng][INFO  ] Running command: sudo fdisk -l
[ceph_deploy][ERROR ] Traceback (most recent call last):
[ceph_deploy][ERROR ]   File "/usr/lib/python3/dist-packages/ceph_deploy/util/decorators.py", line 69, in newfunc
[ceph_deploy][ERROR ]     return f(*a, **kw)
[ceph_deploy][ERROR ]   File "/usr/lib/python3/dist-packages/ceph_deploy/cli.py", line 166, in _main
[ceph_deploy][ERROR ]     return args.func(args)
[ceph_deploy][ERROR ]   File "/usr/lib/python3/dist-packages/ceph_deploy/osd.py", line 434, in disk
[ceph_deploy][ERROR ]     disk_list(args, cfg)
[ceph_deploy][ERROR ]   File "/usr/lib/python3/dist-packages/ceph_deploy/osd.py", line 375, in disk_list
[ceph_deploy][ERROR ]     if line.startswith('Disk /'):
[ceph_deploy][ERROR ] TypeError: startswith first arg must be bytes or a tuple of bytes, not str
[ceph_deploy][ERROR ] 
解决:
sudo vim /usr/lib/python3/dist-packages/ceph_deploy/osd.py

修改

if line.startswith('Disk /'):

if line.startswith(b'Disk /'):

我的在375行

VMware加载新磁盘

先关闭客户机(关机)
操作一图览,注意磁盘大小不用这么大,我最终好像就用了几十M,或者用完后跟据磁盘文件路径直接删除即可
image.png

报错4:

[zuiyumeng][ERROR ] RuntimeError: command returned non-zero exit status: 1
[ceph_deploy][ERROR ] RuntimeError: Failed to execute command: /usr/sbin/ceph-volume lvm zap /dev/sdb
解决:

手动查看并删除原osd创建的lvm信息

dmsetup ls

删除ceph osd lvm映射关系

dmsetup remove ceph--7438e419--a9e4--430c--98e2--64c9a7506562-osd--block--01320314--335f--4b9c--b310--015b9aab8ff6

这里后面ceph-.....替换成你的遗留信息名字
删除lv

lvremove /dev/mapper/ceph--7438e419--a9e4--430c--98e2--64c9a7506562-osd--block--01320314--335f--4b9c--b310--015b9aab8ff6

删除相关文件(如果还有的话)

rm –rf /dev/ceph--7438e419--a9e4--430c--98e2--64c9a7506562

PS: 这个解决方法我找了5个小时....

报错5:

[zuiyumeng][WARNIN] Running command: /usr/bin/ceph-authtool --gen-print-key
[zuiyumeng][WARNIN] Running command: /usr/bin/ceph --cluster ceph --name client.bootstrap-osd --keyring /var/lib/ceph/bootstrap-osd/ceph.keyring -i - osd new 41f1c070-8a32-43c6-ad44-964bf8757cbc
[zuiyumeng][WARNIN] Running command: lvcreate --yes -l 25 -n osd-block-41f1c070-8a32-43c6-ad44-964bf8757cbc ceph-d657d83a-bc89-4ebd-a0b7-24fa754d6c16
[zuiyumeng][WARNIN]  stderr: Volume group "ceph-d657d83a-bc89-4ebd-a0b7-24fa754d6c16" has insufficient free space (0 extents): 25 required.
[zuiyumeng][WARNIN] --> Was unable to complete a new OSD, will rollback changes
[zuiyumeng][WARNIN] Running command: /usr/bin/ceph --cluster ceph --name client.bootstrap-osd --keyring /var/lib/ceph/bootstrap-osd/ceph.keyring osd purge-new osd.0 --yes-i-really-mean-it
[zuiyumeng][WARNIN]  stderr: 2022-06-17T23:26:53.831+0800 7f2fee202700 -1 auth: unable to find a keyring on /etc/ceph/ceph.client.bootstrap-osd.keyring,/etc/ceph/ceph.keyring,/etc/ceph/keyring,/etc/ceph/keyring.bin,: (2) No such file or directory
[zuiyumeng][WARNIN] 2022-06-17T23:26:53.831+0800 7f2fee202700 -1 AuthRegistry(0x7f2fe8059360) no keyring found at /etc/ceph/ceph.client.bootstrap-osd.keyring,/etc/ceph/ceph.keyring,/etc/ceph/keyring,/etc/ceph/keyring.bin,, disabling cephx
[zuiyumeng][WARNIN]  stderr: purged osd.0
[zuiyumeng][WARNIN] -->  RuntimeError: command returned non-zero exit status: 5
[zuiyumeng][ERROR ] RuntimeError: command returned non-zero exit status: 1
[ceph_deploy.osd][ERROR ] Failed to execute command: /usr/sbin/ceph-volume --cluster ceph lvm create --bluestore --data /dev/sdb
[ceph_deploy][ERROR ] GenericError: Failed to create 1 OSDs
解决:

方法同报错4

2. 对象存储

**部署ceph rgw **

ceph-deploy rgw create zuiyumeng

验证rgb,浏览器访问 http://192.168.218.128:7480/
其中192.168.218.128为你文件夹中ceph.conf文件中mon_host后面的ip,端口号不变
可以看到输出以下内容

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Owner>
<ID>anonymous</ID>
<DisplayName/>
</Owner>
<Buckets/>
</ListAllMyBucketsResult>

部署ceph mds

ceph-deploy mds create zuiyumeng

查看 mds 状态

ceph mds stat

可以看到输出

 1 up:standby

**创建ceph账号 **

radosgw-admin user create --uid=admin --display-name=admin --admin

可以看到输出的(你的值和我的不一样),这两个等下要用

"access_key": "02ZC6NZW5FMET8FVDIAW",
"secret_key": "NuO951B79lBlA72qlUGMBMIBsYDtA5wVfr2omdRj"

可以随时用

radosgw-admin user info --uid admin

查看这两个key
使用s3cmd工具管理ceph桶

sudo apt-get install s3cmd

配置

s3cmd --configure

输入刚才的两个key,其他的全部回车,最后会有retry....填n,save.....填y
修改配置

vim /root/.s3cfg

修改以下内容:

host_base = 192.168.218.128:7480
host_bucket = 192.168.218.128:7480/%(bucket)
use_https = False

使用对象存储
执行创建桶操作

s3cmd mb s3://test

查看桶是否创建成功

s3cmd ls

上传一个文件夹到刚才的桶中(在存有文件的文件夹打开终端)

s3cmd put /home/zuiyumeng/文档/tmp/* s3://test/

从桶中下载文件(需要先创建文件夹)

s3cmd get s3://test/* /home/zuiyumeng/文档/tmp1/

常用命令

1、配置,主要是 Access Key ID 和 Secret Access Key
s3cmd --configure
2、列举所有 Buckets。(bucket 相当于根文件夹)
s3cmd ls
3、创建 bucket,且 bucket 名称是唯一的,不能重复,默认创建的 bucket 是公开的。
s3cmd mb s3://my-bucket-name
4、删除空 bucket
s3cmd rb s3://my-bucket-name
5、列举 Bucket 中的内容
s3cmd ls s3://my-bucket-name
6、上传
s3cmd put file.txt s3://my-bucket-name/file.txt
支持批量上传,直接指定多个文件,如
s3cmd put t.py s3://tccpoc/t.py up.py s3://tccpoc/up.py
如果上传终断,比如ctrl+c,会显示upload-id,按照指示,带上`--upload-id`就可以实现断点上传
7、上传并将权限设置为所有人可读
s3cmd put --acl-public file.txt s3://my-bucket-name/file.txt
--acl-private,也可以是私有
8、批量上传文件
s3cmd put ./* s3://my-bucket-name/
9、下载文件
s3cmd get s3://my-bucket-name/file.txt file.txt
支持批量下载,直接指定多个文件,如
s3cmd get s3://tccpoc/t.py s3://tccpoc/up.py
如果下载终断,比如ctrl+c,带上参数`--continue`,可以实现断点下载
10、批量下载
s3cmd get s3://my-bucket-name/* ./
11、删除文件,
s3cmd del s3://my-bucket-name/file.txt
支持批量删除,直接指定多个 bucket 对象,如
s3cmd del s3://my-bucket-name/file.txt s3://my-bucket-name/file2.txt
12、来获得对应的bucket所占用的空间大小
s3cmd du -H s3://my-bucket-name

附录:主要参考文章

单机版Ceph环境部署,Linux平台
Ceph分布式存储系列(三):Ceph集群在线扩容及OSD相关命令
k8s学习笔记——ceph集群安装
Rook Ceph OSD异常,格式化osd硬盘重新挂载
Ceph 基础篇 - 对象存储使用
Ceph对象存储单机部署
s3cmd使用介绍

标签:ceph,存储,deploy,--,单机,s3cmd,CEPH,zuiyumeng,osd
来源: https://www.cnblogs.com/zuiyumeng/p/16387733.html