手动安装ceph集群

先使用管理员用户做前期的准备,后面都是使用ceph用户进行安装。

sudo su -

设置主机名

hostnamectl set-hostname storage-ceph01
hostnamectl set-hostname storage-ceph02
hostnamectl set-hostname storage-ceph03

设置主机名映射

cat << EOF | sudo tee -a  /etc/hosts >> /dev/null
172.20.0.5 storage-ceph01
172.20.0.27 storage-ceph02
172.20.0.6 storage-ceph03
EOF

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

关闭selinux

setenforce 0
sed -ri 's#(SELINUX=).*#\1disabled#g' /etc/selinux/config

安装ntp服务同步

yum install -y ntp
vi /etc/ntp.conf
注释 `server xxxx iburst` 的几行,在下面添加 `server ntp1.aliyun.com iburst`。
systemctl enable ntpd
systemctl start ntpd

添加ceph用户

useradd -d /home/ceph -m ceph
echo 123456 | passwd --stdin ceph

设置ceph密码

echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
sudo chmod 0440 /etc/sudoers.d/ceph

添加ceph源

cat << EOM | sudo tee /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-15.2.12/el7/noarch/
enabled=1
gpgcheck=0
 
[ceph-x84_64]
name=Ceph x86_64 packages
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-15.2.12/el7/x86_64/
enabled=1
gpgcheck=0
EOM

yum makecache

以下操作都使用ceph用户

su - ceph

下载ceph相关的安装包

sudo yum install -y snappy leveldb gdisk python-argparse gperftools-libs
sudo yum install -y ceph

安装mon

生成ceph集群的uuid

# uuidgen       (其中一台主机生成即可)
4d8fec26-e363-4753-b60f-49d69ab44cab

export cephuid=4d8fec26-e363-4753-b60f-49d69ab44cab     # (三台主机都执行,且uuid一致。)

ceph的全局配置文件

cat <<EOF | sudo tee /etc/ceph/ceph.conf >> /dev/null
[global]
fsid = $cephuid
mon initial members = storage-ceph01, storage-ceph02, storage-ceph03
mon host = 172.20.0.5, 172.20.0.27, 172.20.0.6
public network = 192.168.31.0/24
cluster network = 172.20.0.0/24
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
osd pool default size = 3
osd pool default min size = 2
osd pool default pg num = 333
osd pool default pgp num = 333
osd crush chooseleaf type = 1
EOF

需要修改 mon initial members mon host public network cluster network 的值,如果只有一个内网的话,可以把 public network 的参数去掉即可。

生成monitor keyring

#storage-ceph01
ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'

生成client.admin keyring

#storage-ceph01
sudo 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 *'
sudo chown ceph.ceph /etc/ceph/ceph.client.admin.keyring

生成用于集群初始化初始化的cluster.bootstrap keyring

#storage-ceph01
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

生成初始化monmap

#storage-ceph01
monmaptool --create --add storage-ceph01 172.20.0.5 --add storage-ceph02 172.20.0.27 --add storage-ceph03 172.20.0.6 --fsid $cephuid /tmp/monmap

注意修改IP地址及主机名

分发monmap文件

#storage-ceph01
scp /tmp/monmap root@storage-ceph02:/tmp/
scp /tmp/monmap root@storage-ceph03:/tmp/

分发client.admin keyring

#storage-ceph01
scp /etc/ceph/ceph.client.admin.keyring root@storage-ceph02:/etc/ceph/
scp /etc/ceph/ceph.client.admin.keyring root@storage-ceph03:/etc/ceph/

分发monitor keyring

#storage-ceph01
scp /tmp/ceph.mon.keyring root@storage-ceph02:/tmp/
scp /tmp/ceph.mon.keyring root@storage-ceph03:/tmp/

修改权限

#storage-ceph02 && storage-ceph03
sudo chown ceph:ceph /tmp/ceph.mon.keyring
sudo chown ceph.ceph /etc/ceph/ceph.client.admin.keyring

创建mon的目录

#storage-ceph01
mkdir /var/lib/ceph/mon/ceph-storage-ceph01
 
#storage-ceph02
mkdir /var/lib/ceph/mon/ceph-storage-ceph02
 
#storage-ceph03
mkdir /var/lib/ceph/mon/ceph-storage-ceph03

对节点monitor初始化

#storage-ceph01
ceph-mon --mkfs -i storage-ceph01 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
 
#storage-ceph02
ceph-mon --mkfs -i storage-ceph02 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
 
#storage-ceph03
ceph-mon --mkfs -i storage-ceph03 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
 
#所有查看生成的文件
[ceph@storage-ceph01 ~]$ ls /var/lib/ceph/mon/ceph-storage-ceph01/
keyring  kv_backend  store.db

启动mon服务

sudo systemctl restart ceph-mon@storage-ceph01
sudo systemctl enable ceph-mon@storage-ceph01
sudo systemctl restart ceph-mon@storage-ceph02
sudo systemctl enable ceph-mon@storage-ceph02
sudo systemctl restart ceph-mon@storage-ceph03
sudo systemctl enable ceph-mon@storage-ceph03

问题一: 3 monitors have not enabled msgr2 ,该问题的方法。(所有mon节点执行)

ceph mon enable-msgr2

问题二: mons are allowing insecure global_id reclaim ,该问题的方法。(其中一个mon节点执行)

如果AUTH_INSECURE_GLOBAL_ID_RECLAIM还没有引发健康警报并且auth_expose_insecure_global_id_reclaim尚未禁用该设置(默认情况下处于启用状态),则当前没有需要升级的客户端已连接,可以安全地禁止不安全的global_id回收:
ceph config set mon auth_allow_insecure_global_id_reclaim false
# 如果仍然有需要升级的客户端,则可以使用以下方法暂时使此警报静音:
ceph health mute AUTH_INSECURE_GLOBAL_ID_RECLAIM_ALLOWED 1w   # 1 week
# 不建议这样做,但是您也可以无限期地禁用此警告,方法是:
ceph config set mon mon_warn_on_insecure_global_id_reclaim_allowed false

安装mgr

生成mgr keyring

#storage-ceph01
mkdir /var/lib/ceph/mgr/ceph-storage-ceph01
cat <<EOF | tee /var/lib/ceph/mgr/ceph-storage-ceph01/keyring >> /dev/null
$(ceph auth get-or-create mgr.storage-ceph01 mon 'allow profile mgr' osd 'allow *' mds 'allow *')
EOF
 
#storage-ceph02
mkdir /var/lib/ceph/mgr/ceph-storage-ceph02
cat <<EOF | tee /var/lib/ceph/mgr/ceph-storage-ceph02/keyring >> /dev/null
$(ceph auth get-or-create mgr.storage-ceph02 mon 'allow profile mgr' osd 'allow *' mds 'allow *')
EOF
 
 
#storage-ceph03
mkdir /var/lib/ceph/mgr/ceph-storage-ceph03
cat <<EOF | tee /var/lib/ceph/mgr/ceph-storage-ceph03/keyring >> /dev/null
$(ceph auth get-or-create mgr.storage-ceph03 mon 'allow profile mgr' osd 'allow *' mds 'allow *')
EOF

启动mgr服务

#storage-ceph01
sudo systemctl restart ceph-mgr@storage-ceph01
sudo systemctl enable ceph-mgr@storage-ceph01
 
#storage-ceph02
sudo systemctl restart ceph-mgr@storage-ceph02
sudo systemctl enable ceph-mgr@storage-ceph02
 
#storage-ceph03
sudo systemctl restart ceph-mgr@storage-ceph03
sudo systemctl enable ceph-mgr@storage-ceph03

问题三:解决 HEALTH_WARN Module 'restful' has failed dependency: No module named 'pecan' ,该问题的方法。(所有mgr节点执行)

sudo su -
pip3 install pecan werkzeug

应该只需要执行 sudo su -pip3 install pecan werkzeug 即可。需要重启操作系统。等一段时间再看看 ceph -s。如果还没有好的话,pip3 install --user ceph pecan werkzeug 再重启操作系统。

安装osd

分发cluster.bootstrap keyring

#storage-ceph01
scp /var/lib/ceph/bootstrap-osd/ceph.keyring root@storage-ceph02:/var/lib/ceph/bootstrap-osd/
scp /var/lib/ceph/bootstrap-osd/ceph.keyring root@storage-ceph03:/var/lib/ceph/bootstrap-osd/
 
#三台主机
sudo chown ceph.ceph /var/lib/ceph/bootstrap-osd/ceph.keyring 

创建lvm

# 清理磁盘
sudo dmsetup remove ceph--8ac0d9e1--ace9--4260--bc3d--9984442293f2-osd--block--05fa6b88--5b2b--4f06--8f7f--85218373da0e
sudo wipefs -af /dev/vdb 

# osd节点执行
sudo ceph-volume lvm create --data /dev/vdb

启动服务

sudo systemctl restart ceph-osd@0.service
sudo systemctl enable ceph-osd@0.service
sudo systemctl restart ceph-osd@1.service
sudo systemctl enable ceph-osd@1.service
sudo systemctl restart ceph-osd@2.service
sudo systemctl enable ceph-osd@2.service

安装mds

创建mds目录

#storage-ceph01
mkdir -p /var/lib/ceph/mds/ceph-storage-ceph01
 
#storage-ceph02
mkdir -p /var/lib/ceph/mds/ceph-storage-ceph02
 
#storage-ceph03
mkdir -p /var/lib/ceph/mds/ceph-storage-ceph03

创建mds keyring

#storage-ceph01
ceph-authtool --create-keyring /var/lib/ceph/mds/ceph-storage-ceph01/keyring --gen-key -n mds.storage-ceph01
 
#storage-ceph02
ceph-authtool --create-keyring /var/lib/ceph/mds/ceph-storage-ceph02/keyring --gen-key -n mds.storage-ceph02
 
#storage-ceph03
ceph-authtool --create-keyring /var/lib/ceph/mds/ceph-storage-ceph03/keyring --gen-key -n mds.storage-ceph03

授权mds keyring

#storage-ceph01
ceph auth add mds.storage-ceph01 osd "allow rwx" mds "allow" mon "allow profile mds" -i /var/lib/ceph/mds/ceph-storage-ceph01/keyring
 
#storage-ceph02
ceph auth add mds.storage-ceph02 osd "allow rwx" mds "allow" mon "allow profile mds" -i /var/lib/ceph/mds/ceph-storage-ceph02/keyring
 
#storage-ceph03
ceph auth add mds.storage-ceph03 osd "allow rwx" mds "allow" mon "allow profile mds" -i /var/lib/ceph/mds/ceph-storage-ceph03/keyring

配置文件添加mds配置

cat <<EOF | sudo tee -a /etc/ceph/ceph.conf >> /dev/null
 
[mds.storage-ceph01]
host = storage-ceph01
 
[mds.storage-ceph02]
host = storage-ceph02
 
[mds.storage-ceph03]
host = storage-ceph03
EOF

启动mds服务

#storage-ceph01
sudo systemctl restart ceph-mds@storage-ceph01
sudo systemctl enable ceph-mds@storage-ceph01
 
#storage-ceph02
sudo systemctl restart ceph-mds@storage-ceph02
sudo systemctl enable ceph-mds@storage-ceph02
 
#storage-ceph03
sudo systemctl restart ceph-mds@storage-ceph03
sudo systemctl enable ceph-mds@storage-ceph03
posted @   jiaxzeng  阅读(354)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示