debian搭建ceph记录(接入libvirt)

文章目录

  • [一. 搭建集群](#一. 搭建集群)
    • [1. 准备节点](#1. 准备节点)
    • [2. 安装基础包(所有节点都执行)](#2. 安装基础包(所有节点都执行))
    • [3. 在节点1上初始化集群](#3. 在节点1上初始化集群)
  • [二. 客户端使用](#二. 客户端使用)
    • [1. 客户端连接集群](#1. 客户端连接集群)
    • [2. 挂载ceph块设备](#2. 挂载ceph块设备)
    • [3. libvirt使用ceph块设备](#3. libvirt使用ceph块设备)

一. 搭建集群

1. 准备节点

我是在kvm环境下搭建的3台虚拟机

机器名 IP OS 数据磁盘
ceph1 192.168.22.131 Debian12 20GB*2
ceph2 192.168.22.132 Debian12 20GB*2
ceph3 192.168.22.133 Debian12 20GB*2

2. 安装基础包(所有节点都执行)

复制代码
# 更换apt软件源
sed -i "[email protected]@mirrors.aliyun.com@g" /etc/apt/mirrors/debian*
apt update

# 添加aliyun的ceph软件源,url中的【squid】对应cepf版本19.2.2
apt install -y gnupg software-properties-common 
wget -q -O- 'https://mirrors.aliyun.com/ceph/keys/release.asc' | sudo apt-key add -
apt-add-repository 'deb https://mirrors.aliyun.com/ceph/debian-squid/ bookworm main'

# 安装包
apt install -y podman lvm2 ceph-common

3. 在节点1上初始化集群

复制代码
# 安装cephadm 
apt install -y cephadm 

# 创建集群
cephadm bootstrap --mon-ip 192.168.22.131

# 配置公钥到其他节点
ssh-copy-id -f -i /etc/ceph/ceph.pub [email protected]
ssh-copy-id -f -i /etc/ceph/ceph.pub [email protected]

# 添加节点
ceph orch host add ceph2 192.168.22.132
ceph orch host add ceph3 192.168.22.133

# 查看节点情况
ceph orch host ls

# 添加_admin这个label后可以允许该节点运行ceph命令
ceph orch host label add ceph2 _admin
ceph orch host label add ceph3 _admin

# 设置 mon 节点
ceph orch apply mon 3
ceph orch apply mon ceph1,ceph2,ceph3 

# 查看 mon 详情
ceph mon dump

# 列出所有节点的存储设备
ceph orch device ls

# 所有可使用设备创建osd
ceph orch apply osd --all-available-devices

# 创建一个pool给rbd使用
ceph osd pool create rbd_pool
rbd pool init rbd_pool

# 创建用户rbd_user
ceph auth get-or-create client.rbd_user mon 'profile rbd' osd 'profile rbd pool=rbd_pool' mgr 'profile rbd pool=rbd_pool'
# 将输出内容追加到文件/etc/ceph/ceph.client.{ID}.keyring中

# 创建一个10GB的镜像
rbd create --size 10240 rbd_pool/image1

# 查看rbd_pool下的镜像
rbd -p rbd_pool ls

二. 客户端使用

1. 客户端连接集群

复制代码
# 安装ceph-common
apt install -y ceph-common

# 将ceph集群中的下面两个文件拷贝到客户端同目录
# (可以通过配置不同ceph用户来控制访问权限,这里我配置了管理员admin的key)
/etc/ceph/ceph.conf
/etc/ceph/ceph.client.admin.keyring

# 查看集群状态,若返回集群信息则配置成功
ceph status

2. 挂载ceph块设备

复制代码
# 将集群pool中的image映射到本地
rbd map rbd_pool/image1

# 执行lsblk命令,发现新增设备/dev/rbd0
lsblk

# 本地创建目录/data1
mkdir /data1

# 格式化rbd0
mkfs.ext4 /dev/rbd0

# 挂载到本地目录后,即可正常访问
mount /dev/rbd0 /data1

3. libvirt使用ceph块设备

准备另一台kvm机器,安装libvirt环境,下载qcow2镜像等,可参考我的另一篇文章
记录使用libvirt创建虚拟机、自定义qcow2镜像

把下载的qcow2文件转为ceph集群中的镜像(可以作为模板快速复制)

复制代码
qemu-img convert -f qcow2 -O raw debian-12-genericcloud-amd64.qcow2 rbd:rbd_pool/vm1.qcow2

在rbd_pool中创建一个5GB的image作为数据盘

复制代码
qemu-img create -f rbd rbd:rbd_pool/vm1-data 5G

生成访问ceph的key

复制代码
# 创建用户rbd_user,限制只能访问rbd_pool
ceph auth get-or-create client.rbd_user mon 'profile rbd' osd 'profile rbd pool=rbd_pool' mgr 'profile rbd pool=rbd_pool'

# 生成secret文件
cat > secret.xml <<EOF
<secret ephemeral='no' private='no'>
        <usage type='ceph'>
                <name>client.rbd_user secret</name>
        </usage>
</secret>
EOF

# 定义secret, 返回【secret_uuid】
virsh secret-define --file secret.xml

# 把用户rbd_user的key写入文件
ceph auth get-key client.rbd_user | tee client.rbd_user.key

# 	设置secret的值
virsh secret-set-value --secret 【替换secret_uuid】 --base64 $(cat client.rbd_user.key) && rm client.rbd_user.key secret.xml

定义虚拟机的xml文件

xml 复制代码
<domain type='kvm'>
   <name>vm1</name>
   <memory unit='GiB'>1</memory>
   <vcpu>1</vcpu>
   <os>
       <type arch='x86_64' machine='pc-i440fx-2.9'>hvm</type>
       <boot dev='hd'/>
   </os>
   <features>
       <acpi/>
       <apic/>
       <pae/>
   </features>
   <devices>
       <disk type='file' device='cdrom'>
           <driver name='qemu' type='raw'/>
           <source file='/data/vm1/init.iso'/>
           <target dev='hda' bus='ide'/>
           <readonly/>
       </disk>
       <disk type='network' device='disk'>
           <source protocol='rbd' name='rbd_pool/os1'>
               <host name='192.168.22.131' port='6789'/>
               <host name='192.168.22.132' port='6789'/>
               <host name='192.168.22.133' port='6789'/>
           </source>
           <auth username='rbd_user'>
               <secret type='ceph' uuid='【替换secret_uuid】'/>
           </auth>
           <target dev='vda' bus='virtio'/>
       </disk>
       <disk type='network' device='disk'>
           <source protocol='rbd' name='rbd_pool/vm1-data'>
               <host name='192.168.22.131' port='6789'/>
               <host name='192.168.22.132' port='6789'/>
               <host name='192.168.22.133' port='6789'/>
           </source>
           <auth username='rbd_user'>
               <secret type='ceph' uuid='【替换secret_uuid】'/>
           </auth>
           <target dev='vdb' bus='virtio'/>
       </disk>
       <interface type='bridge'>
           <source bridge='virbr0'/>
           <model type='virtio'/>
       </interface>
       <console type='pty'>
           <target type='serial' port='0'/>
       </console>
   </devices>
</domain>

定义&启动&连接虚拟机

复制代码
virsh define vm1.xml
virsh start vm1
virsh console vm1

https://www.cnblogs.com/gustabm/p/17663966.html

https://cloud-atlas.readthedocs.io/zh-cn/latest/ceph/rbd/compare_local_ssd_ceph_rbd.html

相关推荐
胡八一2 天前
kafka配置SASL_PLAINTEXT简单认证
kafka·debian·linq
aitav02 天前
⚡ Linux Debian 安装与配置 Docker
linux·docker·debian
两斤半3 天前
Debian重装系统后
linux·debian
belldeep3 天前
WSL 安装 Debian 12 后,如何安装图形界面 X11 ?
linux·debian·tk·x11·startx
wuzhenwei04193 天前
debian系统redis-dump安装
redis·debian
QX_hao5 天前
【zookeeper】--部署3.6.3
分布式·zookeeper·debian
belldeep8 天前
WSL 安装 Debian 12 后,Linux 如何安装 vim ?
linux·debian·vim
Christal_pyy12 天前
树莓派4基于Debian GNU/Linux 12 (Bookworm)开启VNC,使用MobaXterm连接VNC出现黑屏/灰屏问题
linux·运维·debian
belldeep12 天前
WSL 安装 Debian 12 后,Linux 如何安装 redis ?
linux·redis·debian