cephadm安装reef版本ceph集群

时间:2024-03-30 16:36:02

环境

操作系统
Rocky Linux 9.2 minimal

三个节点节点名称

ipmi pub ip clus ip
ceph1 192.168.255.8 192.168.120.10
ceph2 192.168.255.9 192.168.120.20
ceph3 192.168.255.10 192.168.120.30

所有节点

yum -y install dmidecode vim wget lvm2 chrony epel-release yum-utils device-mapper-persistent-data
yum -y install podman # reef默认使用podman不再使用docker

配置chrony同步内网时钟源

以ceph1作为时钟源为例:

ceph1中的/etc/chrony.conf配置

pool ceph1 iburst
allow 192.168.255.0/24
localstratum 10

其他节点的/etc/chrony.conf配置

server ceph1 iburst

关闭防火墙和selinux

systemctl disable --now firewalld
setenforce 0; sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

部署节点

安装release-ceph
dnf search release-ceph
dnf install --assumeyes centos-release-ceph-reef.noarch
yum -y install ceph-common
安装cephadm
dnf -y install cephadm
pub和clus网络配置SSH互信到其他节点

配置podman仓库可信

[root@ceph03 ~]# cat /etc/containers/registries.conf.d/myregistry.conf
[[registry]]
location = "reg.ankele.com"
insecure = true

完事后,可能要podman login reg.ankele.com -u admin -p Harbor12345
不需要重启podman服务

部署

# 指定镜像
export CEPHADM_IMAGE="reg.ankele.com/ceph/ceph:v18"
# 千万不要cehpadm --docker,会有问题的
cephadm bootstrap \
--mon-ip 192.168.255.8 \
--cluster-network 192.168.120.0/24 \
--log-to-file \
--initial-dashboard-user admin \
--initial-dashboard-password admin \
--allow-overwrite

复制ceph.pub到其他节点

ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph2

ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph3

添加节点

ceph orch host add ceph2

ceph orch host add ceph3

添加osd

ceph orch device ls # 这里可能会显示有的盘unavailable,因为他们有LVM或者GPT header,按照下边的方法删除标记
ceph orch host add 完后可能出现device ls看不到盘,这时可以尝试ceph orch host rm 掉这个节点再添加回来

ceph orch apply osd --all-available-devices # 添加完节点后默认30min后其上的硬盘才能available

或者一个一个添加

ceph orch daemon add osd ceph1:/dev/nvme0n1

若是添加OSD失败,

可以查看一下是否有LVM标记或者GPT header

查看wipefs -n /dev/nvme0n1

删除标记wipefs -a /dev/nvme0n1 或者 wipefs -o 0x218 /dev/nvme1n1

登录到https://192.168.120.10:8443修改密码admin为HelloWorld

修改密码:ceph dashboard ac-user-set-password admin -i ./dashboard_password.yml