Ceph手动部署(Jewel版)
其他版本类似,详见 docs.ceph.com/docs/${版本名称,如jewel}/install/manual-deployment/
部署集群
前提:配置好/etc/hosts文件
部署mon
- 生成Cluster ID(仅节点controller1)
uuidgen
- 编辑配置文件(仅节点controller1)
vim /etc/ceph/ceph.conf
#-----------
[global]
fsid={UUID}
mon initial members = hostname1,...
mon hosts = ip1,...
public network = 192.168.0.0/16
cluster network = 192.168.0.0/16
## 可根据需求定制
auth cluster required = none
auth service required = none
auth client required = none
## 可根据需求定制
osd pool default size = 3
osd pool default min size = 1
osd crush chooseleaf type = 1
osd pool default pg num = 64
osd pool default pgp num = 64
mon_clock_drift_allowed = 10
#-----------
- 生成秘钥(仅节点controller1)
ceph-authtool --create-keyring /etc/ceph/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 --set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
ceph-authtool /etc/ceph/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
- 生成monmap(添加所有mon节点)(仅节点controller1)
monmaptool --create \
--add controller1 192.168.83.74 \
--add controller2 192.168.83.75 \
--add controller3 192.168.83.76 \
--fsid c5437f73-7a89-4e19-ba71-809643e39433 /etc/ceph/monmap
- 分发秘钥以及monmap(除节点controller1)
scp /etc/ceph/ceph* controller2:/etc/ceph/
scp /etc/ceph/monmap controller2:/etc/ceph/
- 创建并初始化mon文件夹(所有节点)
ceph-mon --mkfs --monmap /etc/ceph/monmap --keyring /etc/ceph/ceph.mon.keyring -i $(hostname)
- 创建完成标志文件(所有节点)
touch /var/lib/ceph/mon/ceph-$(hostname)/done
- 启动ceph mon(所有节点)
ceph-mon -i $(hostname)
此时ceph -s状态为err,因为没有部署osd。
部署OSD
运行脚本(所有osd节点)
./create_osds.sh controller1
脚本内容:
#! /bin/bash
# version: v1.0
# time: 2020.09.08
# author: ahanwhite
#
# 部署除根盘以外的所有磁盘
# 需要指定盘符前缀及根盘名称
# 使用: ./create_osds.sh prefix_of_disk root_disk
# 如:./create_osds.sh sd sda
set -e
HOSTNAME=$(hostname)
echo "######################################正在执行创建主机"${HOSTNAME}"上的osd"
ceph osd crush add-bucket ${HOSTNAME} host
ceph osd crush move ${HOSTNAME} root=default
\rm /var/lib/ceph/osd/* -rf
for line in $(lsblk | grep ^$2 | awk '{printf $1"\n"}' | grep -Ev "^sda")
do
UUID=$(uuidgen)
OSD_ID=$(ceph osd create ${UUID})
echo "######################################正在创建:osd."${OSD_ID}",其disk是 /dev/"${line}
mkdir /var/lib/ceph/osd/ceph-${OSD_ID}
mkfs.xfs -f /dev/${line}
mount /dev/${line} /var/lib/ceph/osd/ceph-${OSD_ID}
ceph-osd -i ${OSD_ID} --mkfs --mkkey --osd-uuid ${UUID}
ceph auth add osd.${OSD_ID} osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-${OSD_ID}/keyring
ceph osd crush add osd.${OSD_ID} 1.0 host=${HOSTNAME}
touch /var/lib/ceph/osd/ceph-${OSD_ID}/sysvinit
ceph-osd -i ${OSD_ID}
done
清除环境
- 停下所有mon与osd
kill -9 $(ps -ef | grep -E '(-mon|osd)' | grep -v grep | awk '{printf $2" "}')
如无ceph mon/osd程序运行中,则报错,不用管
- 解除osd的mount
mount | grep ceph | awk '{printf "umount "$3"\n"}' | bash
- 删除相关文件夹与文件
\rm /var/lib/ceph/mon/* -rf
\rm /var/lib/ceph/osd/* -rf
\rm /etc/ceph/monmap
# 或删除所有秘钥与monmap
\rm ceph.client.admin.keyring ceph.mon.keyring monmap
- 格式化盘
由于create_osds脚本中创建osd前会进行格式化,所以这里的命令仅需要时运行:
mkfs.xfs -f /dev/sdb
重启服务
重启单个节点上mon:
kill -9 $(ps -ef | grep 'ceph-mon' | grep -v grep | awk '{printf $2" "}') && ceph-mon -i $(hostname)
重启单个节点上所有osd:
ps -ef | grep 'ceph-osd' | grep -v grep | awk '{printf "kill -9 "$2" && "$8" "$9" "$10"\n"}' | bash
本文档详细介绍了如何手动部署Ceph Jewel版集群,包括配置集群、部署mon和OSD节点、清除环境以及重启服务的步骤。在部署过程中,强调了配置hosts文件、生成Cluster ID、秘钥和monmap的重要性,并提供了清理和重启服务的指导。
&spm=1001.2101.3001.5002&articleId=109725967&d=1&t=3&u=d02f7aad40664ba7a36ea8d4c01bc856)
1万+

被折叠的 条评论
为什么被折叠?



