Ultima attività 1712420160

Ceph deploy notes

notes.md Raw

这里将在 3 台 node 上安装 ceph。

三台 node 的 hostname 分别是:

  • node1
  • node2
  • node3

三个 node 全部都插一块 新的 大硬盘。假如是 /dev/sdb

三个 node 最好是物理服务器,ceph 喜欢摸到真实的硬盘。

当然你非要用虚拟机也没什么问题,但是你都建设好虚拟机的存储系统了,为什么还需要 ceph ???

三个 node 之间没有防火墙,网是通的。

三个 node 你都需要使用 root 用户来执行命令。sudo su

虽然在 root 用户下面敲命令不是 Linux 的正确用法,但是 ceph 不喜欢非 root 用户。我承认这是它设计的不好。

开启root ssh

vim /etc/ssh/sshd_config

将里面的 PermitRootLogin 改成 yes,将 PasswordAuthentication 改成 yes

是的,这非常不优雅。ceph 喜欢用 root ssh 到各个 node 上一顿跑命令。但是它就是这么设计的。

systemctl restart ssh sshd

改好密码

passwd

设置一个 root 密码

关停服务 (可选)

如果你的盘已经配成了是基于 Glusterfs 的。先关停所有 Docker stack,然后关停 glusterfs 服务。

docker stack rm $(docker stack ls --format '{{.Name}}')

关掉 glusterfs。

sudo systemctl stop glusterd
sudo systemctl disable glusterd

取消挂载老盘,别忘了umount多个地点。对老盘跑

umount /swarm-vol
umount /var/no-direct-write-here/gluster-bricks
rm -rvf /swarm-vol
rm -rvf /var/no-direct-write-here/gluster-bricks

当然,如果你是新服务器,新盘,那没有这码子事儿。直接继续就行了。

清空老盘

将老盘彻底抹除。抹除前记得备份。

fdisk /dev/sdb
d g w

准备 Ceph 文件

去那些node上,每台 node 都要跑:

sudo mkdir /etc/ceph

每台 node 都安装 docker。ceph 天生就需要 docker 来部署它自己的许多组件。

curl -fsSL get.docker.com -o get-docker.sh
CHANNEL=stable sh get-docker.sh
rm get-docker.sh

初始化ceph,在node1上运行

curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm
chmod +x cephadm
mkdir -p /etc/ceph
./cephadm bootstrap --mon-ip $MYIP # MYIP 是你的内网 IP 地址。

等90秒,别忘了复制输出的内容。

把这些文件都拷到node2和node3上

scp /etc/ceph/ceph.conf root@node2:/etc/ceph/ceph.conf
scp /etc/ceph/ceph.conf root@node3:/etc/ceph/ceph.conf
scp /etc/ceph/ceph.client.admin.keyring root@node2:/etc/ceph/ceph.client.admin.keyring
scp /etc/ceph/ceph.client.admin.keyring root@node3:/etc/ceph/ceph.client.admin.keyring
scp /etc/ceph/ceph.pub root@node2:/root/.ssh/authorized_keys
scp /etc/ceph/ceph.pub root@node3:/root/.ssh/authorized_keys

在主机上安装好ceph-common

apt install -y ceph-common

添加主机

ceph orch host add node2
ceph orch host add node3
ceph orch host ls

添加OSD

我们可以先让 Ceph 自动检测一波

ceph orch apply osd --all-available-devices

如果有问题,可以手动添加

ceph orch device zap node1 /dev/sdb --force
ceph orch device zap node2 /dev/sdb --force
ceph orch device zap node3 /dev/sdb --force

挂载新文件系统

echo "
# mount cephfs
node1,node2,node3:/ /swarm-vol ceph name=admin,noatime,_netdev 0 0
" | sudo tee -a /etc/fstab
sudo mkdir /swarm-vol
sudo mount /swarm-vol