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
为cephuser启用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 '目录。