Ceph手动部署(Jewel版)

本文档详细介绍了如何手动部署Ceph Jewel版集群,包括配置集群、部署mon和OSD节点、清除环境以及重启服务的步骤。在部署过程中,强调了配置hosts文件、生成Cluster ID、秘钥和monmap的重要性,并提供了清理和重启服务的指导。

Ceph手动部署(Jewel版)

其他版本类似,详见 docs.ceph.com/docs/${版本名称,如jewel}/install/manual-deployment/

部署集群

前提:配置好/etc/hosts文件

部署mon

  1. 生成Cluster ID(仅节点controller1)
uuidgen
  1. 编辑配置文件(仅节点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
#-----------
  1. 生成秘钥(仅节点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
  1. 生成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
  1. 分发秘钥以及monmap(除节点controller1)
scp /etc/ceph/ceph* controller2:/etc/ceph/
scp /etc/ceph/monmap controller2:/etc/ceph/
  1. 创建并初始化mon文件夹(所有节点)
ceph-mon --mkfs  --monmap /etc/ceph/monmap --keyring /etc/ceph/ceph.mon.keyring -i $(hostname)
  1. 创建完成标志文件(所有节点)
touch /var/lib/ceph/mon/ceph-$(hostname)/done
  1. 启动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

清除环境

  1. 停下所有mon与osd
kill -9 $(ps -ef | grep -E '(-mon|osd)' | grep -v grep | awk '{printf $2" "}')

如无ceph mon/osd程序运行中,则报错,不用管

  1. 解除osd的mount
mount | grep ceph | awk '{printf "umount "$3"\n"}' | bash
  1. 删除相关文件夹与文件
\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
  1. 格式化盘

由于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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值