在CentOS 7上使用Ceph作为块设备

Ceph是一个开源的存储平台,它提供高性能,可靠性和可扩展性。 它是一个免费的分布式存储系统,可以在没有单点故障的情况下进行设置。 Ceph提供对象,块和文件级存储的接口。

这是我们Ceph教程系列的第二部分 - 点击这里Ceph I教程(在CentOS上设置Ceph群集) 。 在第二部分中,我将引导您逐步安装和配置Ceph Block Device客户端,以便在CentOS 7上使用Ceph作为文件系统。

前提条件

  • Ceph集群 - Ceph I教程
  • 客户端服务器 - CentOS 7 - 主机名和IP
    • 10.0.15.15客户端
  • 根权限

第1步 - 配置Ceph客户端节点

在本节中,我们将CentOS 7服务器配置为Ceph客户端。 我们将Ceph客户端配置为其他Ceph节点(mon-osd)。

登录到eCph客户机节点。

ssh root@10.0.15.15

添加一个新的' cephuser '并为用户设置一个新密码。

useradd -d /home/cephuser -m cephuser
passwd cephuser

通过添加一个新的配置到'sudoers.d'目录,为' cephuser '启用无密码sudo。

echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers
chmod 0440 /etc/sudoers.d/cephuser

为ce​​phuser启用sudo password-less后,需要在客户机节点上禁用SELinux。

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

接下来,安装NTP并使用ntpdate命令同步系统时间。 然后启动NTP服务。

yum install -y open-vm-tools
yum install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntpd.service
systemctl start ntpd.service

将所有ceph群集节点的主机配置添加到' / etc / hosts '文件。

vim /etc/hosts

这是我从Ceph I教程中的配置。

10.0.15.10        ceph-admin
10.0.15.11        mon1
10.0.15.21        osd1
10.0.15.22        osd2
10.0.15.23        osd3
10.0.15.15        client

保存主机文件并退出编辑器。

第2步 - 配置Ceph管理员节点

在第一步中,我们为ceph安装准备了Ceph客户机节点。 但是我们仍然需要配置ceph-admin节点来管理客户机节点上的Ceph安装。 现在我们将从'ceph-admin'节点在客户机节点上安装Ceph。

登录到ceph-admin节点。

ssh root@ceph-admin
su - cephuser

用vim编辑ssh配置文件。

vim ~/.ssh/config

在文件末尾添加新的客户端节点配置。

Host client
        Hostname client
        User cephuser

保存配置文件并退出vim。

接下来,编辑ceph-admin节点上的/ etc / hosts文件。

sudo vim /etc/hosts

并添加客户端主机名和IP地址。

10.0.15.15      client

保存/ etc / hosts并退出编辑器。

现在我们可以将ceph-admin SSH密钥添加到客户机节点。

ssh-keyscan client >> ~/.ssh/known_hosts
ssh-copy-id client

请求时输入您的“cephuser”密码。

尝试使用以下命令连接到客户端节点服务器来测试连接。

ssh client

第3步 - 在客户端节点上安装Ceph

在这一步中,我们将从ceph-admin节点在客户机节点(作为客户机节点的节点)上安装Ceph。

以root身份登录到ceph-admin节点,并以su形式成为“cephuser”。

ssh root@ceph-admin
su - cephuser

转到Ceph集群目录,在我们的第一个Ceph教程中,我们使用了' cluster '目录。

cd cluster/

使用ceph-deploy在客户机节点上安装Ceph,然后将配置和管理密钥推送到客户端节点。

ceph-deploy install client
ceph-deploy admin client

Ceph安装将需要一些时间(取决于服务器和网络速度)。 当任务完成后,连接到客户端节点并更改管理密钥的权限。

ssh client
sudo chmod 644 /etc/ceph/ceph.client.admin.keyring

Ceph已安装在客户端节点上。

第4步 - 配置并挂载Ceph作为块设备

Ceph允许用户使用Ceph集群作为精简配置的块设备。 我们可以像我们系统上的普通硬盘一样装载Ceph存储。 Ceph块存储或Ceph RADOS块存储(RBD)将块设备映像存储为对象,它会自动对Ceph集群进行条带化和复制。 Ceph RBD已经与KVM集成,因此我们还可以将其用作OpenStack,Apache CLoudstack,Proxmox VE等各种虚拟化平台上的块存储。

在客户机节点上创建新的块设备之前,我们必须检查集群状态。 登录到Ceph监视器节点并检查集群状态。

ssh mon1
sudo ceph -s

确保群集运行状况为“ HEALTH_OK ”,pgmap为“ active&clean ”。

在这一步中,我们将使用Ceph作为块设备,或者在客户端服务器上使用CentOS 7作为客户机节点操作系统来阻止存储。 从ceph-admin节点,用ssh连接到客户机节点。 我们在第一章中为该节点配置了无密码登录,因此无需密码。

ssh client

Ceph提供rbd命令来管理rados块设备图像。 我们可以使用rbd命令创建新的映像,调整大小,创建快照,并导出我们的块设备。

创建一个大小为40GB的新的rbd映像,然后在rbd列表中检查' disk01 '。

rbd create disk01 --size 40960
rbd ls -l

接下来,激活rbd内核模块。

sudo modprobe rbd
sudo rbd feature disable disk01 exclusive-lock object-map fast-diff deep-flatten

现在,通过rbd内核模块将disk01映像映射到块设备,然后确保映射设备列表中的disk01

sudo rbd map disk01
rbd showmapped

我们可以看到disk01映像已被映射为' / dev / rbd0 '设备。 在使用它存储数据之前,我们必须使用mkfs命令格式化该disk01映像。 我将使用XFS文件系统。

sudo mkfs.xfs /dev/rbd0

将' / dev / rbd0 ' 挂载到mnt目录。 为此,我将使用' mydisk '子目录。

sudo mkdir -p /mnt/mydisk
sudo mount /dev/rbd0 /mnt/mydisk

Ceph RBD或RADOS块设备已经配置并安装在系统上。 使用df命令检查设备是否正确安装。

df -hT

在CentOS 7上使用Ceph作为块设备已经成功。

第5步 - 在启动时设置RBD

在CentOS 7 Client节点上使用Ceph作为阻止设备已经成功。 现在我们将配置为将Ceph Block Device自动安装到系统。 在引导时我们需要为“ RBD自动安装 ”创建一个服务文件。

在/ usr / local / bin目录中创建一个新文件,以安装和卸载RBD disk01。

cd /usr/local/bin/
vim rbd-mount

粘贴下面的脚本:

#!/bin/bash
# Script Author: http://bryanapperson.com/
# Change with your pools name
export poolname=rbd

# CHange with your disk image name
export rbdimage=disk01

# Mount Directory
export mountpoint=/mnt/mydisk

# Image mount/unmount and pool are passed from the systems service as arguments
# Determine if we are mounting or unmounting
if [ "$1" == "m" ]; then
   modprobe rbd
   rbd feature disable $rbdimage exclusive-lock object-map fast-diff deep-flatten
   rbd map $rbdimage --id admin --keyring /etc/ceph/ceph.client.admin.keyring
   mkdir -p $mountpoint
   mount /dev/rbd/$poolname/$rbdimage $mountpoint
fi
if [ "$1" == "u" ]; then
   umount $mountpoint
   rbd unmap /dev/rbd/$poolname/$rbdimage
fi

保存文件并退出vim,然后使其可执行chmod。

chmod +x rbd-mount

接下来,转到systemd目录并创建服务文件。

cd /etc/systemd/system/
vim rbd-mount.service

粘贴服务配置如下:

[Unit]
Description=RADOS block device mapping for $rbdimage in pool $poolname"
Conflicts=shutdown.target
Wants=network-online.target
After=NetworkManager-wait-online.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/local/bin/rbd-mount m
ExecStop=/usr/local/bin/rbd-mount u
[Install]
WantedBy=multi-user.target

保存文件并退出vim。

重新加载systemd文件,并使rbd-mount服务在引导时启动。

systemctl daemon-reload
systemctl enable rbd-mount.service

如果现在重新启动客户机节点,rbd'disk01'将自动挂载到' / mnt / mydisk '目录。

参考

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏