ceph-deploy离线部署ceph集群及报错解决FAQ

本文详细介绍了如何使用ceph-deploy在离线环境中搭建ceph集群,包括环境准备、组件介绍、集群初始化和扩展。同时,文章还涵盖了常见运维问题的FAQ,如osd和mon的下线流程。
摘要由CSDN通过智能技术生成

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475

ceph-deploy部署ceph集群

环境介绍
主机名 ip地址 操作系统 角色 备注
ceph-node1 10.153.204.13 Centos7.6 mon、osd、mds、mgr、rgw、ceph-deploy chronyd时钟同步(主)
ceph-node2 10.130.22.45 Centos7.6 mon、osd、mds、mgr、rgw chronyd时钟同步
ceph-node3 10.153.204.28 Centos7.3 mon、osd chronyd时钟同步

此环境共三台机器,操作前ntp需要同步,node1为ceph-deploy部署节点,每台机器三块分区用作osd磁盘。

ceph组件介绍
名称 作用
osd 全称Object Storage Device,主要功能是存储数据、复制数据、平衡数据、恢复数据等。每个OSD间会进行心跳检查,并将一些变化情况上报给Ceph Monitor。
mon 全称Monitor,负责监视Ceph集群,维护Ceph集群的健康状态,同时维护着Ceph集群中的各种Map图,比如OSD Map、Monitor Map、PG Map和CRUSH Map,这些Map统称为Cluster Map,根据Map图和object id等计算出数据最终存储的位置。
mgr 全称Manager,负责跟踪运行时指标和Ceph集群的当前状态,包括存储利用率,当前性能指标和系统负载。
mds 全称是MetaData Server,主要保存的文件系统服务的元数据,如果使用cephfs功能才会启用它,对象存储和块存储设备是不需要使用该服务。
rgw 全称radosgw,是一套基于当前流行的RESTFUL协议的网关,ceph对象存储的入口,不启用对象存储,则不需要安装。

每个组件都需要保证高可用性:
1.osd服务越多,在相同副本的情况下高可用性就越强。
2.mon一般部署三个,保证高可用。
3.mgr一般部署两个,保证高可用。
4.mds一般部署两套保证高可用,每套都为主从。
5.rgw一般部署两个,保证高可用。

ceph版本介绍

第一个 Ceph 版本是 0.1 ,要回溯到 2008 年 1 月。多年来,版本号方案一直没变,直到 2015 年 4 月 0.94.1 ( Hammer 的第一个修正版)发布后,为了避免 0.99 (以及 0.100 或 1.00 ),制定了新策略:

  • x.0.z - 开发版(给早期测试者和勇士们)
  • x.1.z - 候选版(用于测试集群、高手们)
  • x.2.z - 稳定、修正版(给用户们)

这里使用的 ceph version 15.2.9,ceph-deploy 2.0.1

ceph安装前准备工作
1.升级系统内核到4系或以上

我这里升级到了4.17,升级步骤此处省略。

2.firewalld、iptables、SElinux关闭
## 防火墙
systemctl stop firewalld.service 
systemctl disable firewalld.service

## selinux
setenforce
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

3.chronyd时间同步

这里以node1为时钟服务端,其他节点为时钟客户端

[master下操作]
vim /etc/chrony.conf
...
## 主要下面几个点
server 10.153.204.13 iburst #指定服务端
allow 10.0.0.0/8 #把自身当作服务端
...

[slave下操作]
vim /etc/chrony.conf
...
server 10.153.204.13 iburst #指定服务端
...

## 然后重启服务,查看状态
systemctl enable chronyd
systemctl restart chronyd
timedatectl
chronyc sources -v

4.在ceph-deploy节点写临时hosts文件
# cat /etc/hosts
10.153.204.13  ceph-node1
10.130.22.45 ceph-node2
10.153.204.28 ceph-node3


5.创建普通用户,赋予sudo权限,并将ceph-deploy节点对其他节点做免密操作
## 利用ansible给所有机器创建 cephadmin 用户
ansible all -m shell -a 'groupadd -r -g 2022 cephadmin && useradd -r -m -s /bin/bash -u 2022 -g 2022 cephadmin && echo cephadmin:123456 | chpasswd'

## 赋予sudo权限,并不需要密码
ansible node -m shell -a 'echo "cephadmin ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers'

## 做免密
su - cephadmin
ssh-keygen 
ssh-copy-id ceph-node2
ssh-copy-id ceph-node3

6.将osd磁盘准备好,最好一块磁盘一个osd,此环境资源紧张,我这里一个分区一个osd
[root@ceph-node1 ~]$ lsblk 
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
nvme0n1     259:0    0 931.5G  0 disk 
├─nvme0n1p5 259:7    0   100G  0 part 
├─nvme0n1p3 259:5    0   100G  0 part 
├─nvme0n1p6 259:8    0   100G  0 part 
├─nvme0n1p4 259:6    0   100G  0 part 

所有osd机器磁盘分布相同,仅分区就好,先不要创建lvm、格式化等。

7.如果是内网机器,需要自己构建本地ceph yum源

(1)找个外网机器,执行此脚本,可以根据自己需要更改版本信息及url地址

#!/usr/bin/env bash

URL_REPO=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-15.2.9/el7/x86_64/
URL_REPODATA=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-15.2.9/el7/x86_64/repodata/

function get\_repo()
{
test -d ceph_repo || mkdir ceph_repo
cd ceph_repo

for i in `curl $URL\_REPO | awk -F '"' '{print $4}' | grep rpm`;do
    curl -O $URL\_REPO/$i
done
}

function get\_repodata()
{
test -d ceph_repo/repodata || mkdir ceph_repo/repodata
cd ceph_repo/repodata

for i in `curl $URL\_REPODATA | awk -F '"' '{print $4}' | grep xml`;do
    curl -O $URL\_REPODATA/$i
done
}

if [ $1 == 'repo' ];then 
    get_repo()
elif [ $1 == 'repodata' ];then
    get_repodata()
elif [ $1 == 'all' ];then
    get_repo()
    get_repodata()
else
    echo '请输入其中一个参数[ repo | repodata | all ]'
fi

(2)上传至内网服务器,安装 配置 nginx

yum -y install nginx

## 主要修改以下字段,/home/ceph\_repo 替换为你的真实目录。
vim /etc/nginx/nginx.conf
    server {
        listen       8080;
        listen       [::]:8080;
        server_name  _;
        root         /home/ceph;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
           autoindex on;
        }

    }

systemctl start nginx 

(3)配置yum源–每个节点都要配置

cat > /etc/yum.repos.d/ceph-http.repo << EOF
[local-ceph]
name=local-ceph
baseurl=http://ceph-node1:8080/ceph_repo
gpgcheck=0
enable=1
[noarch-ceph]
name=local-ceph
baseurl=http://ceph-node1:8080/noarch_repo
gpgcheck=0
enable=1
EOF

然后

yum makecache

## 检查是否生效
yum list | grep ceph 

ceph-deploy部署

1.查看并目前ceph-deploy版本
# yum list ceph-deploy --showduplicates
Loaded plugins: fastestmirror, langpacks, priorities
Loading mirror speeds from cached hostfile
Available Packages
ceph-deploy.noarch                                     1.5.25-1.el7                                     epel       
ceph-deploy.noarch                                     1.5.29-0                     
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值