Ubuntu20.04LTS环境docker+cephadm方式部署Ceph 17.2.5

简述
什么是ecph
​ ceph是一个开放、自我修复和自我管理的统一分布式存储系统。具有高扩展性、高新能、高可靠性的优点。

​ ceph分布式存储优势

​ 高扩展性:使用普通X86服务器,支持10~1000台服务器,支持TB到EB级的扩展。

​ 高可靠性:没有单点故障,多数据副本,自动管理,自动修复。

​ 高性能:数据分布均衡

ceph支持三种调用接口: 块存储、文件系统存储、对象存储。三种方式可以一同使用。

ceph的三个主要进程
​ Monitor监控整个集群的状态,维护集群的cluster MAP数据分布图(二进制表),保证集群数据的一致性。

​ OSD用于集群中所有数据与对象的存储,处理集群数据的复制、恢复、回填、在均衡,并向其他osd守护进程发送心跳,然后向Monitor提供监控信息。

​ MDS(可选)为Ceph文件系统提供元数据计算、缓存与同步。MDS进程并不是必须的进程,只有需要使用CephFS时,才需要配置MDS节点。

部署时注意事项
​ ceph生产环境推荐:

​ 1、存储集群采用全万兆网络(条件允许使用光纤网络)

​ 2、集群网络与公共网络分立

​ 3、mon、mds与osd分离部署在不通机器上

​ 4、OSD使用SATA亦可

​ 5、根据容量规划集群

​ 6、志强E5 2620 V3或以上的cpu,64GB或更高内存

​ 7、集群主机分散部署,避免机柜故障(电源、网络)

 

1、环境准备

1.1主机信息

主机名 IP 角色 备注 磁盘 hosts
node1 192.168.10.101 admin,osd,mon,mar   sda/60G IP 主机名
node2 192.168.10.102 osd,mds   sdb/20G IP 主机名
node3 192.168.10.103 osd,mds   sdb/20G IP 主机名
node4 192.168.10.104 client 客户端,访问存储 sdb/60G IP 主机名

 

1.2修改主机名

node1/node2/node3

hostnamectl set-hostname node1/node2/node3

1.3修改hosts文件,加入主机信息

vi /etc/hosts
192.168.10.101 node1
192.168.10.102 node2
192.168.10.103 node3
 1.4NTP时间同步

1.4.1在node1上,从阿里云的NTP服务器上同步时间。

apt -y install chrony
 
# 备份NTP服务的原始配置文件
mv /etc/chrony/chrony.conf /etc/chrony/chrony.conf.bak
 
# 编写一个空的配置文件,文件只有两行配置
vim /etc/chrony/chrony.conf
--------------------
server ntp.aliyun.com iburst
allow 192.168.10.101/24
# 保存退出
 
#重启系统的ntp服务
service chrony restart

1.4.2再配置ceph0002和ceph0003的NTP服务,从ceph0001上拉去时间。

apt -y install chrony
 
# 备份NTP服务的原始配置文件
mv /etc/chrony/chrony.conf /etc/chrony/chrony.conf.bak
 
# 编写一个空的配置文件,文件只有一行配置
vim /etc/chrony/chrony.conf
--------------------
server ceph0001 iburst
 
#重启系统的ntp服务
service chrony restart

 1.4.3三台节点执行以下命令。

chronyc sources

 

1.5 关闭 iptable 和 firewalld

systemctl stop iptables
systemctl stop firewalld
systemctl disable iptables
systemctl disable firewalld

1.6关闭 SElinux

vi /etc/selinux/config

SELINUX=disabled

1.7生成SSH证书,并分发到其他节点

ssh-keygen -t rsa -P ''
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.10.102
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.10.103

1.8依赖安装

cephadm 部署 ceph 集群时,需要如下依赖:
  • python3
  • Docker或Podman
  • systemd
  • lvm2

运行以下命令即可安装Docker:

wget -qO- get.docker.com | sh

查看Docker版本

docker -v

使用以下命令 启动docker后台服务、使Docker在开机时自动启动:

sudo service docker start
systemctl enable docker

 

2. 安装部署Ceph17.2.5

2.1安装cephadm,拉取ceph镜像

以下命令在controller节点执行

# 下面的命令会自动安装 docker 等依赖
apt install -y cephadm
 
# 拉取ceph镜像
docker pull quay.io/ceph/ceph:v17.2
 
# 查看cpeh版本
$ cephadm version
ceph version 17.2.5 (98318ae89f1a893a6ded3a640405cdbb33e08757) quincy (stable)
 
# 查看docker镜像
$ docker images
REPOSITORY          TAG         IMAGE ID       CREATED       SIZE
quay.io/ceph/ceph   v17.2       cc65afd6173a   2 months ago   1.36GB

 通过运行以下命令确认cephadm

which cephadm

成功的命令将返回以下内容:/usr/sbin/cephadm

 

 

2.2创建集群

使用 cephadm 创建 Ceph 集群的流程为:

  • 初始化第一个 mon 节点
  • 配置 ceph 命令行
  • 扩展集群 osd 节点

2.2.1. 初始化 mon 节点

cephadm bootstrap --mon-ip 192.168.10.101 --allow-overwrite

 显示出 Bootstrap complete. 表示部署成功。使用:

–image quay.io/ceph/ceph:v17.2 指定镜像地址
–registry-url 指定仓库 https://hub.docker.com/u/quayioceph
–single-host-defaults
可以登陆输出的地址输入账号密码进入dashboard界面查看ceph运行情况如下图所示。

 

启用 CEPH CLI

安装该ceph-common软件包,其中包含所有 ceph 命令

cephadm add-repo --release pacific
cephadm install ceph-common

 

添加主机

1分发 SSH 公钥

我们在 2.1 引导第一台机器的时候,SSH 生成了一个公钥文件(默认位置是 /etc/ceph/ceph.pub)。

Cephadm 通过 SSH 免密实现对集群中各个机器的操作(私钥藏起来了),所以我们得把这个 SSH 公钥,分发到每个集群的主机上。

命令:ssh-copy-id -f -i /etc/ceph/ceph.pub root@<new-host>把引导机上的 SSH 公钥副本 /etc/ceph/ceph.pub 的内容,
写入 root@<new-host> 的 /root/.ssh/authorized_keys 中,从而实现免密(引导机的 /root/.ssh/authorized_keys 在引导阶段就已经写入了)。
ssh-copy-id -f -i /etc/ceph/ceph.pub root@node2
ssh-copy-id -f -i /etc/ceph/ceph.pub root@host3
2添加主机
ceph orch host add node2 192.168.10.102
ceph orch host add node3 192.168.10.103

 若不能添加主机,请检查主机的4个依赖(python3、Docker或Podman、systemd、lvm2),未安装的须安装,所有主机的docker需要启动

添加额外的监视器 MON 

ceph orch daemon add mon node2:192.168.10.102
ceph orch daemon add mon node3:192.168.10.103

 

添加OSD

 

CEPH-MGR 管理员

apt install ceph-mgr

创建一个身份验证密钥:

ceph auth get-or-create mgr.$name mon 'allow profile mgr' osd 'allow *' mds 'allow *'

将该密钥放入路径中,对于集群“ceph”和 mgr $name“foo”来说,该路径将是mgr data/var/lib/ceph/mgr/ceph-foo

启动 ceph-mgr 守护进程:

ceph-mgr -i $name

 

 

 

 

posted @ 2024-08-02 14:45  dachenyi  阅读(34)  评论(0编辑  收藏  举报