RockyLinux 安装 Ceph
文章目录
环境
操作系统 | 主机名 | 公用地址 | 集群地址 | 数据裸盘 | ceph 版本 |
---|---|---|---|---|---|
Rocky Linux 8.4 | ceph41 | 10.0.4.41 | 192.168.4.41 | /dev/sdb, /dev/sdc | 15.2.14 |
Rocky Linux 8.4 | ceph42 | 10.0.4.42 | 192.168.4.42 | /dev/sdb, /dev/sdc | 15.2.14 |
Rocky Linux 8.4 | ceph43 | 10.0.4.43 | 192.168.4.43 | /dev/sdb, /dev/sdc | 15.2.14 |
关闭防火墙,配置 host
-
在全部节点上执行如下操作
-
关闭 firewalld 和 SELinux
1 2 3
systemctl stop firewalld systemctl disable firewalld sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config # 重启操作系统生效
-
配置各节点主机名解析
1 2 3
echo "10.0.4.41 ceph41" >> /etc/hosts echo "10.0.4.42 ceph42" >> /etc/hosts echo "10.0.4.43 ceph43" >> /etc/hosts
配置 yum 源
-
在全部节点上执行如下操作
-
移动系统默认的 repo 文件到备份目录
1 2 3
cd /etc/yum.repos.d mkdir bak mv Rocky-*.repo bak/
-
创建新的系统 yum 源文件 /etc/yum.repos.d/rocky-nju.repo,使用南京大学镜像站,内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13
[appstream] name=Rocky Linux $releasever - AppStream baseurl=https://mirrors.nju.edu.cn/$contentdir/$releasever/AppStream/$basearch/os/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial [baseos] name=Rocky Linux $releasever - BaseOS baseurl=https://mirrors.nju.edu.cn/$contentdir/$releasever/BaseOS/$basearch/os/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
-
创建 epel yum 源文件 /etc/yum.repos.d/epel-tsinghua.repo,使用清华大学镜像站,内容如下
1 2 3 4 5 6 7
[epel] name=Extra Packages for Enterprise Linux $releasever - $basearch baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/Everything/$basearch failovermethod=priority enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever
-
下载 RPM-GPG-KEY-EPEL-8
1 2
cd /etc/pki/rpm-gpg/ curl -LO https://mirrors.nju.edu.cn/epel/RPM-GPG-KEY-EPEL-8
-
创建 ceph yum 源文件 /etc/yum.repos.d/ceph-tsinghua.repo,使用清华大学镜像站,内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
[ceph] name=Ceph packages for $basearch baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-15.2.14/el8/$basearch enabled=1 priority=2 gpgcheck=1 gpgkey=https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc [ceph-noarch] name=Ceph noarch packages baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-15.2.14/el8/noarch enabled=1 priority=2 gpgcheck=1 gpgkey=https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc
-
导入 release.asc
1
rpm --import 'https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc'
-
更新 yum 缓存
1 2
dnf clean all dnf makecache
配置时间同步
-
在全部节点上执行如下操作
-
安装 chrony
1
dnf install chrony
-
如果内网没有时间服务器,可以在 ceph41 上启动一个时间同步服务,修改 /etc/chrony.conf
1 2 3 4 5 6 7
... pool ntp.aliyun.com iburst ... allow 10.0.4.0/24 ... local stratum 10 ...
-
设置 ceph42 和 ceph43 从 ceph41 上同步时间,修改 /etc/chrony.conf
1 2 3
... pool ceph41 iburst ...
-
在全部服务器上启动 chronyd 服务,并设置开机自动启动
1 2
systemctl start chronyd systemctl enable chronyd
安装 ceph
-
在全部节点上执行如下操作
1 2
dnf install leveldb gdisk gperftools-libs python3-ceph-argparse nvme-cli dnf install ceph
-
创建 ceph 配置文件 /etc/ceph/ceph.conf,内容如下
1 2 3 4 5 6 7 8 9 10 11
[global] fsid = aaaa0000-bbbb-1111-cccc-2222dddd3333 mon_initial_members = ceph41, ceph42, ceph43 mon_host = 10.0.4.41, 10.0.4.42, 10.0.4.43 public_network = 10.0.4.0/24 cluster_network = 192.168.4.0/24 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx osd_pool_default_size = 2 # 推荐使用官方默认的 3 osd_pool_default_min_size = 2
部署 mon
-
在 ceph41 上执行如下操作
-
这里创建了一堆傻逼密钥文件,没看懂啥意思,照搬官网
1 2 3 4 5 6 7
ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *' ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *' ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' --cap mgr 'allow r' ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring chown ceph:ceph /tmp/ceph.mon.keyring monmaptool --create --add ceph41 10.0.4.41 --add ceph42 10.0.4.42 --add ceph43 10.0.4.43 --fsid aaaa0000-bbbb-1111-cccc-2222dddd3333 /tmp/monmap
-
初始化 mon 数据目录
1 2
sudo -u ceph mkdir /var/lib/ceph/mon/ceph-ceph41 sudo -u ceph ceph-mon --mkfs -i ceph41 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
-
启动 mon 服务,并设置开机自动启动
1 2
systemctl start ceph-mon@ceph41 systemctl enable ceph-mon@ceph41
-
复制密钥文件到 ceph42 和 ceph43 上
1 2 3 4 5 6 7
scp /tmp/{ceph.mon.keyring,monmap} ceph42:/tmp/ scp /etc/ceph/ceph.client.admin.keyring ceph42:/etc/ceph/ scp /var/lib/ceph/bootstrap-osd/ceph.keyring ceph42:/var/lib/ceph/bootstrap-osd/ scp /tmp/{ceph.mon.keyring,monmap} ceph43:/tmp/ scp /etc/ceph/ceph.client.admin.keyring ceph43:/etc/ceph/ scp /var/lib/ceph/bootstrap-osd/ceph.keyring ceph43:/var/lib/ceph/bootstrap-osd/
-
在 ceph42 上执行如下操作
-
初始化 mon 数据目录
1 2 3
chown ceph:ceph /tmp/ceph.mon.keyring sudo -u ceph mkdir /var/lib/ceph/mon/ceph-ceph42 sudo -u ceph ceph-mon --mkfs -i ceph42 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
-
启动 mon 服务,并设置开机自动启动
1 2
systemctl start ceph-mon@ceph42 systemctl enable ceph-mon@ceph42
-
在 ceph43 上执行如下操作
-
初始化 mon 数据目录
1 2 3
chown ceph:ceph /tmp/ceph.mon.keyring sudo -u ceph mkdir /var/lib/ceph/mon/ceph-ceph43 sudo -u ceph ceph-mon --mkfs -i ceph43 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
-
启动 mon 服务,并设置开机自动启动
1 2
systemctl start ceph-mon@ceph43 systemctl enable ceph-mon@ceph43
-
在任一节点上执行如下操作
-
mon 额外配置
1 2 3 4 5
# 开启 msgr2,监听 tcp 3300 端口 ceph mon enable-msgr2 # 禁用 auth_allow_insecure_global_id_reclaim ceph config set mon auth_allow_insecure_global_id_reclaim false
查看集群状态
-
在任一节点上执行如下操作
1
ceph -s
-
集群状态如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14
cluster: id: aaaa0000-bbbb-1111-cccc-2222dddd3333 health: HEALTH_OK services: mon: 3 daemons, quorum ceph41,ceph42,ceph43 (age ...) mgr: no daemons active osd: 0 osds: 0 up, 0 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 0 B used, 0 B / 0 B avail pgs:
部署 mgr
-
在 ceph41 上执行如下操作
-
又是创建密钥文件,没看懂啥意思,照搬官网
1 2 3
sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-ceph41 ceph auth get-or-create mgr.ceph41 mon 'allow profile mgr' osd 'allow *' mds 'allow *' -o /var/lib/ceph/mgr/ceph-ceph41/keyring chown ceph.ceph /var/lib/ceph/mgr/ceph-ceph41/keyring
-
启动 mgr 服务,并配置开机自动启动
1 2
systemctl start ceph-mgr@ceph41 systemctl enable ceph-mgr@ceph41
-
在 ceph42 上执行如下操作
-
创建密钥文件
1 2 3
sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-ceph42 ceph auth get-or-create mgr.ceph42 mon 'allow profile mgr' osd 'allow *' mds 'allow *' -o /var/lib/ceph/mgr/ceph-ceph42/keyring chown ceph.ceph /var/lib/ceph/mgr/ceph-ceph42/keyring
-
启动 mgr 服务,并配置开机自动启动
1 2
systemctl start ceph-mgr@ceph42 systemctl enable ceph-mgr@ceph42
-
在 ceph43 上执行如下操作
-
创建密钥文件
1 2 3
sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-ceph43 ceph auth get-or-create mgr.ceph43 mon 'allow profile mgr' osd 'allow *' mds 'allow *' -o /var/lib/ceph/mgr/ceph-ceph43/keyring chown ceph.ceph /var/lib/ceph/mgr/ceph-ceph43/keyring
-
启动 mgr 服务,并配置开机自动启动
1 2
systemctl start ceph-mgr@ceph43 systemctl enable ceph-mgr@ceph43
查看集群状态
-
在任一节点上执行如下操作
1
ceph -s
-
集群状态如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
cluster: id: aaaa0000-bbbb-1111-cccc-2222dddd3333 health: HEALTH_WARN OSD count 0 < osd_pool_default_size 2 services: mon: 3 daemons, quorum ceph41,ceph42,ceph43 (age ...) mgr: ceph41(active, since ...), standbys: ceph42, ceph43 osd: 0 osds: 0 up, 0 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 0 B used, 0 B / 0 B avail pgs:
部署 osd
逻辑卷 osd
-
操作简单,推荐
-
直接创建并启动逻辑卷 osd
1 2
ceph-volume lvm create --bluestore --data /dev/sdb ceph-volume lvm create --bluestore --data /dev/sdc
-
上一步执行成功后,每个 ceph-osd 服务都已启动,且开机自动启动
裸设备 osd
-
操作麻烦,不推荐
-
在全部节点上执行如下操作
-
准备 osd
1 2
ceph-volume raw prepare --bluestore --data /dev/sdb ceph-volume raw prepare --bluestore --data /dev/sdc
-
查看 osd 的 id
1
ceph-volume raw list
-
激活 osd,使用裸设备创建 osd 时不支持 systemd,需要单独配置开机自动启动
1 2
ceph-volume raw activate --device /dev/sdb --no-systemd ceph-volume raw activate --device /dev/sdc --no-systemd
-
在 ceph41 上启动 osd 服务
1 2
systemctl start ceph-osd@0 systemctl start ceph-osd@1
-
配置开机自动启动
1 2 3 4 5 6
chmod 0755 /etc/rc.d/rc.local echo 'ceph-volume raw activate --device /dev/sdb --no-systemd ceph-volume raw activate --device /dev/sdc --no-systemd systemctl start ceph-osd@0 systemctl start ceph-osd@1 ' >> /etc/rc.d/rc.local
-
在 ceph42 上启动 osd 服务
1 2
systemctl start ceph-osd@2 systemctl start ceph-osd@3
-
配置开机自动启动
1 2 3 4 5 6
chmod 0755 /etc/rc.d/rc.local echo 'ceph-volume raw activate --device /dev/sdb --no-systemd ceph-volume raw activate --device /dev/sdc --no-systemd systemctl start ceph-osd@2 systemctl start ceph-osd@3 ' >> /etc/rc.d/rc.local
-
在 ceph43 上启动 osd 服务
1 2
systemctl start ceph-osd@4 systemctl start ceph-osd@5
-
配置开机自动启动
1 2 3 4 5 6
chmod 0755 /etc/rc.d/rc.local echo 'ceph-volume raw activate --device /dev/sdb --no-systemd ceph-volume raw activate --device /dev/sdc --no-systemd systemctl start ceph-osd@4 systemctl start ceph-osd@5 ' >> /etc/rc.d/rc.local
查看集群状态
-
在任一节点执行如下操作
1
ceph -s
-
集群状态如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14
cluster: id: aaaa0000-bbbb-1111-cccc-2222dddd3333 health: HEALTH_OK services: mon: 3 daemons, quorum ceph41,ceph42,ceph43 (age ...) mgr: ceph41(active, since ...), standbys: ceph42, ceph43 osd: 6 osds: 6 up (since ...), 6 in (since ...) data: pools: 1 pools, 1 pgs objects: 0 objects, 0 B usage: ... GiB used, ... GiB / ... GiB avail pgs: 1 active+clean
部署 mds
-
只有 cephfs 会用到 mds
-
在 ceph41 上执行如下操作
-
创建密钥文件 …… 照搬官网
1 2 3
sudo -u ceph mkdir -p /var/lib/ceph/mds/ceph-ceph41 sudo -u ceph ceph-authtool --create-keyring /var/lib/ceph/mds/ceph-ceph41/keyring --gen-key -n mds.ceph41 ceph auth add mds.ceph41 osd "allow rwx" mds "allow *" mon "allow profile mds" -i /var/lib/ceph/mds/ceph-ceph41/keyring
-
启动 mds 服务,并配置开机自动启动
1 2
systemctl start ceph-mds@ceph41 systemctl enable ceph-mds@ceph41
-
在 ceph42 上执行如下操作
-
创建密钥文件 …… 照搬官网
1 2 3
sudo -u ceph mkdir -p /var/lib/ceph/mds/ceph-ceph42 sudo -u ceph ceph-authtool --create-keyring /var/lib/ceph/mds/ceph-ceph42/keyring --gen-key -n mds.ceph42 ceph auth add mds.ceph42 osd "allow rwx" mds "allow *" mon "allow profile mds" -i /var/lib/ceph/mds/ceph-ceph42/keyring
-
启动 mds 服务,并配置开机自动启动
1 2
systemctl start ceph-mds@ceph42 systemctl enable ceph-mds@ceph42
-
在 ceph43 上执行如下操作
-
创建密钥文件 …… 照搬官网
1 2 3
sudo -u ceph mkdir -p /var/lib/ceph/mds/ceph-ceph43 sudo -u ceph ceph-authtool --create-keyring /var/lib/ceph/mds/ceph-ceph43/keyring --gen-key -n mds.ceph43 ceph auth add mds.ceph43 osd "allow rwx" mds "allow *" mon "allow profile mds" -i /var/lib/ceph/mds/ceph-ceph43/keyring
-
启动 mds 服务,并配置开机自动启动
1 2
systemctl start ceph-mds@ceph43 systemctl enable ceph-mds@ceph43
查看集群状态
-
在任一节点上执行如下操作
1
ceph -s
-
集群状态如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
cluster: id: aaaa0000-bbbb-1111-cccc-2222dddd3333 health: HEALTH_OK services: mon: 3 daemons, quorum ceph41,ceph42,ceph43 (age ...) mgr: ceph41(active, since ...), standbys: ceph42, ceph43 mds: cephfs:1 {0=ceph43=up:active} 2 up:standby osd: 3 osds: 3 up, 3 in data: pools: 1 pools, 1 pgs objects: 0 objects, 0 B usage: ... GiB used, ... GiB / ... GiB avail pgs: 1 active+clean
简单使用
rbd
- 创建 rbd 池
1 2
ceph osd pool create rbd 128 128 ceph osd pool application enable rbd rbd
cephfs
-
创建 cephfs 池
1 2 3 4 5 6
# 创建 cephfs 元数据池,pg 不用太大,设置 3 个副本 ceph osd pool create cephfs_metadata 8 8 ceph osd pool set cephfs_metadata size 3 # 创建 cephfs 数据池,根据数据量配置相应 pg ceph osd pool create cephfs_data 128 128
-
创建 cephfs 文件系统
1
ceph fs new cephfs cephfs_metadata cephfs_data
-
查看 mds 状态
1
ceph mds stat
-
在任一 ceph 节点服务器上查看 admin 用户的 key
1
cat /etc/ceph/ceph.client.admin.keyring | grep key | awk '{print $2}'
-
在其他服务器上挂载 cephfs
1
mount -t ceph 10.0.4.41:6789,10.0.4.42:6789,10.0.4.43:6789:/ /mnt -o name=admin,secret={admin 的 key}
文章作者 Colben
上次更新 2021-09-29