暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Centos 7 基于 ceph-deploy部署O版多节点Ceph集群

原创 尚雷 2022-11-16
1553

注:因为公司最近在搞分布式存储,而Ceph在开源分布式存储方面有很多优势,于是自己参照资料在测试环境尝试大家拿了一套分布式Ceph集群,并整理了整个部署过程,文档如下,也希望熟悉Ceph的大牛能多多指正。

一、基于 ceph-deploy部署Ceph

1.1 环境准备

1.1.1 系统配置

推荐选用Linux 7操作系统,建议升级操作系统内核到可支持最高版本。

本次部署选用Centos 7.9,并将操作系统内核升级到5.19.0-1.el7.elrepo.x86_64。

image20220811090641665.png

1.1.2 配置主机名解析

本次部署选用9台虚拟机,一台作为管理节点,三台作为MON角色节点,两台作为MGR角色节点,三台用于OSD角色节点。

IP地址 主机名 主机别名
10.110.3.243 admin.ceph.org admin
10.110.3.244 mon01.ceph.org mon01
10.110.3.245 mon02.ceph.org mon02
10.110.3.246 mon03.ceph.org mon03
10.110.3.247 mgr01.ceph.org mgr01
10.110.3.248 mgr02.ceph.org mgr02
10.110.3.249 store01.ceph.org strore01
10.110.3.250 store02.ceph.org strore02
10.110.3.251 store03.ceph.org strore03

1.1.3 网络设置

部署Ceph集群推荐配置双网卡,其中一个网卡用于外部通讯,承载业务数据流量,另外一个网卡用于集群内部数据交换,防止在进行内部数据交换的时候占用业务通道,影响业务通讯。

本次测试10.110.3.0/24为业务使用,192.168.78.0/24为集群内部使用,并为10.110.3.0/24配置默认路由。

1.1.4 硬件设置

除部署OSD节点的三台主机每台额外配置两块硬盘,其余节点只需部署安装操作系统盘。

image20220811101220484.png

1.1.5 时间同步设置

Ceph对时间同步要求很高,默认各节点时间误差不能超过50ms。

如各节点可以访问互联网,只需直接启用chronyd服务即可,使用root用户在每个节点执行如下操作。

# systemctl enable chronyd && systemctl start chronyd # timedatectl set-timezone Asia/Shanghai

如无法访问互联网,推荐使用本地服务器,修改每个节点/etc/chrony.conf配置文件,将server后配置修改为指定时间服务器地址即可,如有多个,可指定多个server,server后面跟时间服务器的地址,如

server admin.ceph.org iburst

image20220811094910261.png

可通过chronyc sources -v命令查询时间同步信息。

image20220811095117835.png

1.1.6 防火墙和Selinux设置

# 所有节点都需关闭防火墙 systemctl stop firewalld.service systemctl disable --now firewalld systemctl status firewalld # 关闭Selinux sed -i "/^SELINUX/s@enforcing@disabled@" /etc/sysconfig/selinux getenforce

1.1.7 配置Ceph管理用户

1.1.7.1 创建集群管理cephadm管理用户

# 使用root用户在admin节点创建脚本 cat > create_cephadm.sh <<EOF #!/bin/bash useradd -m -s /bin/bash cephadm echo cephadm:cephadm | chpasswd echo "cephadm ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/cephadm chmod 0440 /etc/sudoers.d/cephadm EOF # 然后在admin节点批量执行 for i in {243..251}; do ssh root@10.110.3.$i bash < create_cephadm.sh ; done

1.1.7.2 所有主机通过cephadm用户免密认证

# 在admin节点使用root用户执行如下命令 su - cephadm ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa PASS=cephadm for i in {243..251};do sshpass -p $PASS ssh-copy-id -o StrictHostKeyChecking=no cephadm@10.110.3.$i done

1.1.8 配置YUM源

# 使用root用户在admin管理节点主备配置YUM源 cat > /etc/yum.repos.d/ceph.repo <<EOF [Ceph] name=Ceph packages for $basearch baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-octopus/el7/x86_64/ enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc priority=1 [Ceph-noarch] name=Ceph noarch packages baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-octopus/el7/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc priority=1 [ceph-source] name=Ceph source packages baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-octopus/el7/SRPMS enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc priority=1 EOF # 然后使用root用户通过ansible分发到其余节点 # 此处已在admin节点/etc/ansible/hosts配置了ceph组 ansible ceph -m copy -a 'src=/etc/yum.repos.d/ceph.repo dest=/etc/yum.repos.d/ceph.repo'

image20220811112458739.png

1.2 集群安装配置

1.2.1 安装ceph-deploy

在admin节点安装ceph-deploy工具。

# 使用cephadm用户在admin节点执行操作 [cephadm@admin]$ sudo mkdir /usr/local/ceph-cluster && cd /usr/local/ceph-cluster [cephadm@admin]$ sudo chmod 777 /usr/local/ceph-cluster/ [cephadm@admin ceph-cluster]$ sudo yum install -y ceph-deploy [cephadm@admin ceph-cluster]$ ceph-deploy --version 1.5.25

image20220811114203796.png

1.2.2 安装MON节点

1.2.2.1 MON节点初始化

使用cephadm用户在admin节点操作创建第一个MON节点。

[cephadm@admin ~]$ cd /usr/local/ceph-cluster [cephadm@admin ceph-cluster]$ ceph-deploy new --public-network 10.110.3.0/24 --cluster-network 192.168.78.0/24 mon01:mon01.ceph.org

===========================================================================================================================================================================================================================================================================================================================================================================================================================================

产生了报错,报错信息如下,根据网上资料显示报错问题与ceph-deploy版本有关,建议指令添加参数“–no-ssh-copykey”。

推荐将ceph-deploy程序升级到2.0.1。

wget https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-15.2.9/el7/noarch/ceph-deploy-2.0.1-0.noarch.rpm

rpm -Uvh ceph-deploy-2.0.1-0.noarch.rpm

image20220811115611802.png

image20220811132544289.png

===========================================================================================================================================================================================================================================================================================================================================================================================================================================

# 添加--no-ssh-copykey参数 [cephadm@admin ceph-cluster]$ ceph-deploy new --public-network 10.110.3.0/24 --cluster-network 192.168.78.0/24 mon01:mon01.ceph.org --no-ssh-copykey

image20220811131159124.png
image20220811131307979.png

1.2.2.2 MON节点安装软件

使用ceph-deploy命令在admin节点远程完成MON软件包安装。

# admin节点以cephadm用户远程安装mon01节点软件包 [cephadm@admin ceph-cluster]$ ceph-deploy install --no-adjust-repos --nogpgcheck --mon mon01

执行完毕后可登陆mon01节点查看到ceph进程,以及自动创建了ceph用户。

image20220811133815235.png

1.2.2.3 MON节点初始化生成配置信息

使用ceph-deploy命令在admin节点远程完成mon01节点初始化。

[cephadm@admin ceph-cluster]$ ceph-deploy --overwrite-conf mon create-initial

命令执行完毕后,在admin节点/usr/local/ceph-cluster下生成了许多配置文件,如下所示:

image20220811134754106.png

  • ceph.bootstrap-mds.keyring 引导启动mds的秘钥文件
  • ceph.bootstrap-mgr.keyring 引导启动mgr的秘钥文件
  • ceph.bootstrap-osd.keyring 引导启动osd的秘钥文件
  • ceph.bootstrap-rgw.keyring 引导启动rgw的秘钥文件
  • ceph.client.admin.keyring Ceph客户端和管理端通信的认证秘钥,非常重要

此时在mon01节点上已自动开启了mon的守护进程。

image20220811135316786.png

1.2.3 推送秘钥实现集群管理

为方便后续监控环境认证操作,在admin主机上,需把配置文件和admin秘钥拷贝到Ceph集群各个监控角色节点上。

现在还未安装mon02及mon03节点,此时先将秘钥拷贝到mon01节点。

[cephadm@admin ceph-cluster]$ ceph-deploy --overwrite-conf config push mon01

image20220811141007704.png

此时登陆mon01节点执行ceph -s 会报如下信息:

image20220811140520698.png

以上报错原因是因为虽把认证文件传递给了对应的mon01监控角色主机,但服务是通过普通用户cephadm进行交流的,默认情况下,传递过去的认证文件cephadm普通用户是无法正常读取的,需要为其赋权。

# 登陆mon01节点操作 [cephadm@mon01 ~]$ sudo chown cephadm:cephadm /etc/ceph/ceph.client.admin.keyring

此时mon01节点再执行ceph -s 就不再报错,如下图所示。

image.png

1.2.4 部署集群管理节点实现远程管理

如果想实现在admin节点来对远程主机进行状态查询,需要安装ceph-common软件。

[cephadm@admin ceph-cluster]$ sudo yum install -y ceph-common [cephadm@admin ceph-cluster]$ ceph-deploy admin admin [cephadm@admin ceph-cluster]$ sudo chown cephadm:cephadm /etc/ceph/ceph.client.admin.keyring [cephadm@admin ceph-cluster]$ ceph -s

image.png

1.2.5 部署MGR节点

1.2.5.1 安装MGR软件

在admin节点使用cephadm用户远程安装mgr软件到mgr01节点。

[cephadm@admin ceph-cluster]$ ceph-deploy install --mgr mgr01

1.2.5.2 配置MGR节点启动ceph-mgr进程

在admin节点使用cephadm用户创建mgr节点并生成相关配置。

[cephadm@admin ceph-cluster]$ ceph-deploy mgr create mgr01

image20220811151608740.png

修改mgr01节点上/etc/ceph/ceph.client.admin.keyring文件属组和权限以便cephadm查看状态。

# 在admin节点使用cephadm通过ansible将ceph.client.admin.keyring上传到mgr01节点/etc/ceph目录下,并赋权 # 通过ansible拷贝文件 [cephadm@admin ceph-cluster]$ sudo ansible 10.110.3.247 -m copy -a 'src=/etc/ceph/ceph.client.admin.keyring dest=/etc/ceph/ceph.client.admin.keyring' # mgr01节点上为cephadm用户赋权 [cephadm@mgr01 ~]$ sudo chown cephadm:cephadm /etc/ceph/ceph.client.admin.keyring # mgr01节点查看集群状态 [cephadm@mgr01 ~]$ ceph -s

image.png
image.png

1.2.6 部署OSD节点

1.2.6.1 OSD节点安装软件

在admin节点使用cephadm用户远程安装osd软件到store01节点。

[cephadm@admin ceph-cluster]$ ceph-deploy install --release octopus --osd store01

================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

执行ceph-deploy install --release octopus --osd store01报如下错:

原因是因为ceph-deploy升级到2.0.1,在安装octopus版本时会报错:

image.png

解决办法如下:

# 使用root用户在admin节点执行 cd /usr/lib/python2.7/site-packages/ceph_deploy/hosts/centos 修改install.py文件 '{url}noarch/ceph-release-1-0.{dist}.noarch.rpm'.format(url=url, dist=dist) 替换为'{url}noarch/ceph-release-1-1.{dist}.noarch.rpm'.format(url=url, dist=dist)

然后重新执行 ceph-deploy install --release octopus --osd store01

================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

admin节点查看store01所有可用的osd盘。

[cephadm@admin ceph-cluster]$ ceph-deploy disk list store01

image.png

1.2.6.2 配置OSD存储节点

如果磁盘之前被使用过,可以通过如下命令来格式化磁盘,类似于执行dd格式化磁盘。

[cephadm@admin ceph-cluster]$ for i in {1..3};do ceph-deploy disk zap store01 /dev/sdc /dev/sdd;done

创建OSD存储盘。

# 在admin节点使用cephadm用户先创建一块OSD存储盘。 [cephadm@admin ceph-cluster]$ ceph-deploy --overwrite-conf osd create store01 --data /dev/sdc # 通过ansible拷贝文件 [cephadm@admin ceph-cluster]$ sudo ansible 10.110.3.249 -m copy -a 'src=/etc/ceph/ceph.client.admin.keyring dest=/etc/ceph/ceph.client.admin.keyring' # store01节点上为cephadm用户赋权 [cephadm@mgr01 ~]$ sudo chown cephadm:cephadm /etc/ceph/ceph.client.admin.keyring # mgr01节点查看集群状态 [cephadm@mgr01 ~]$ ceph -s [cephadm@mgr01 ~]$ ps aux |grep ceph

image.png

image.png

image.png

# 将store01第二块磁盘也加入到OSD # 在admin节点使用cephadm用户操作 [cephadm@admin ceph-cluster]$ ceph-deploy --overwrite-conf osd create store01 --data /dev/sdd # 查看当前osd状态信息 [cephadm@admin ceph-cluster]$ ceph-deploy osd list store01

image20220812102242722.png

此时查询store01上的ceph状态,显示是在做Rebalance。

image.png

通过如下以下信息可以查看store01上的相关信息:

[root@store01 ~]# pvs [root@store01 ~]# lvs [root@store01 ~]# lsblk [root@store01 ~]# systemctl status ceph-osd@0

image20220812103749847.png

1.3 扩展集群实现高可用

1.3.1 实现MON节点高可用

此时集群只有一个MON节点,会导致单点故障,需添加新MON节点实现高可用。

1.3.1.1 安装MON软件

为mon02、mon03两台MON节点安装MON软件。

# 在admin节点使用cephadm用户操作 # 为mon02节点安装MON软件 [cephadm@admin ceph-cluster]$ ceph-deploy install --mon mon02 # 为mon03节点安装MON软件 [cephadm@admin ceph-cluster]$ ceph-deploy install --mon mon03

1.3.1.2 添加MON新节点

将mon02、mon03添加至集群。

# 在admin节点使用cephadm用户操作 # 添加mon02节点 [cephadm@admin ceph-cluster]$ ceph-deploy mon add mon02 # 添加mon03节点 [cephadm@admin ceph-cluster]$ ceph-deploy mon add mon03

1.3.1.3 修改配置添加新加入MON节点

在admin节点使用cephadm用户修改ceph.conf文件。

[cephadm@admin ~]$ cd /usr/local/ceph-cluster [cephadm@admin ceph-cluster]$ vim ceph.conf # 修改mon_host,将mon02、mon03两个节点publicIP添加进去,如下,然后保存 mon_host = 10.110.3.244,10.110.3.245,10.110.3.246

image.png

1.3.2 实现MGR节点高可用

此时集群只有一个MGR节点,存在单点故障,现将mgr02节点添加至集群。

1.3.2.1 安装MGR软件

通过admin节点实现远程为mgr02节点安装MGR软件。

# 在admin节点使用cephadm用户操作 [cephadm@admin ceph-cluster]$ ceph-deploy install --mgr mgr02

1.3.2.2 添加MGR新节点

通过admin节点远程操作将mgr02节点添加至集群。

# 在admin节点使用cephadm用户操作 [cephadm@admin ceph-cluster]$ ceph-deploy mgr create mgr02

1.3.3 实现OSD节点高可用

将mon02、mon03节点添加至集群。

1.3.3.1 安装OSD软件

通过admin节点实现远程安装mon02、mon03两节点上的OSD软件。

# 在admin节点使用cephadm用户操作 [cephadm@admin ceph-cluster]$ ceph-deploy install --release octopus --osd store02 store03

=====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

在安装store02和store03时报如下错误。

image.png

原因是因为store02和store03两个节点未按照如下python36相关rpm包导致

image.png

需为其安装相应RPM包,我手工下载相关rpm包并执行安装,相应rpm包下载方法如下:

wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/p/python36-cryptography-2.3-2.el7.x86_64.rpm wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/p/python36-six-1.14.0-3.el7.noarch.rpm wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/p/python36-cffi-1.9.1-3.el7.x86_64.rpm wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/p/python36-requests-2.14.2-2.el7.noarch.rpm wget https://download-ib01.fedoraproject.org/pub/epel/7/aarch64/Packages/p/python36-prettytable-0.7.2-19.el7.noarch.rpm wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/p/python36-pycparser-2.14-2.el7.noarch.rpm wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/p/python36-urllib3-1.25.6-2.el7.noarch.rpm wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/p/python36-chardet-3.0.4-1.el7.noarch.rpm wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/p/python36-dateutil-2.4.2-5.el7.noarch.rpm wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/p/python36-ply-3.9-2.el7.noarch.rpm wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/p/python36-pysocks-1.6.8-7.el7.noarch.rpm wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/p/python36-pyOpenSSL-17.3.0-1.el7.noarch.rpm wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/p/python36-PyYAML-3.13-1.el7.x86_64.rpm wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/p/python36-idna-2.10-1.el7.noarch.rpm wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/p/python36-bcrypt-3.1.6-2.el7.x86_64.rpm wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/p/python36-asn1crypto-0.24.0-7.el7.noarch.rpm # 然后执行rpm安装 rpm -ivh python36*.rpm --nodeps

=====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

然后重新在admin节点执行ceph-deploy install --release octopus --osd store02 store03安装即可。

然后分别格式化store02、store03上的磁盘。

[cephadm@admin ceph-cluster]$ for i in {1..3};do ceph-deploy disk zap store02 /dev/sdc /dev/sdd;done [cephadm@admin ceph-cluster]$ for i in {1..3};do ceph-deploy disk zap store03 /dev/sdc /dev/sdd;done

1.3.3.2 添加OSD新节点磁盘到OSD

通过admin节点实现远程操作将store02、store03上的磁盘添加到OSD。

# 在admin节点使用cephadm用户操作 # 添加store02的磁盘到OSD [cephadm@admin ceph-cluster]$ ceph-deploy --overwrite-conf osd create store02 --data /dev/sdc [cephadm@admin ceph-cluster]$ ceph-deploy --overwrite-conf osd create store02 --data /dev/sdd # 添加store03的磁盘到OSD [cephadm@admin ceph-cluster]$ ceph-deploy --overwrite-conf osd create store03 --data /dev/sdc [cephadm@admin ceph-cluster]$ ceph-deploy --overwrite-conf osd create store03 --data /dev/sdd

1.3.4 同步Ceph配置文件到所有主机节点

通过admin节点实现远程操作将Ceph配置文件同步到所有主机节点。

# 在admin节点使用cephadm用户操作 [cephadm@admin ceph-cluster]$ ceph-deploy --overwrite-conf config push admin mon0{1,2,3} mgr0{1,2} store0{1,2,3}

在admin节点使用cephadm通过ansible将ceph.client.admin.keyring上传到所有主机节点,并批量修改用户属组和权限。

[cephadm@admin ceph-cluster]$ sudo ansible ceph -m copy -a 'src=/etc/ceph/ceph.client.admin.keyring dest=/etc/ceph/ceph.client.admin.keyring' [cephadm@admin ceph-cluster]$ sudo ansible ceph -m file -a "dest=/etc/ceph/ceph.client.admin.keyring mode=644 owner=cephadm group=cephadm"

1.3.5 禁用不安全模式

此时使用ceph -s 查看集群健康状况,显示为 HEALTH_WARN。

image.png
使用ceph health detail查看详细信息如下:

image.png

可以看到下面有句提示:HEALTH_WARN mons are allowing insecure global_id reclaim

解决办法就是要禁用不安全模式,方法如下:

# 在admin节点使用cephadm执行 [cephadm@admin ceph-cluster]$ ceph config set mon auth_allow_insecure_global_id_reclaim false

再次查看集群状态信息,显示正常。

image.png

1.3 启用管理界面

要启用ceph-dashboard图形界面,需要启用dashboard模块。

[cephadm@mgr01 ~]$ ceph mgr module enable dashboard

发现有报错,报错信息如下:
image.png
目前,该问题还未解决,待后续学习再解决。

最后修改时间:2022-11-29 09:35:34
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论