Ceph集群-2·创建部署

一、环境准备

拓扑图

  • 1台客户端虚拟机:Client
  • 3台存储集群虚拟机:node1~3
  • 存储集群虚拟机IP地址分别为:192.168.88.11~13
  • 每台存储集群虚拟机至少要有2g的内存
  • 每台存储集群虚拟机需要含有2块空闲硬盘
  • 每台存储集群虚拟机搭建好yum等服务

实验拓扑.png

二、Ceph:分布式存储集群部署流程思路

  • 环境准备
  • 配置NTP服务
  • 安装软件包
  • 创建集群
  • 创建OSD存储空间
  1. 所有节点:添加2块额外的硬盘
  2. 所有节点:配置yum服务端和客户端
  3. 选出一台存储集群虚拟机作为控制节点,配置到所有节点的免密登录
  4. 在所有的节点主机上配置名称解析(hosts)
  5. 在所有节点上安装软件包(ceph-mon ceph-osd ceph-mds ceph-radosgw)
  6. 配置NTP使得所有节点时间是同步的
  7. 在主节点(node1)上安装ceph-deploy工具
  8. 新建ceph集群,安装mon组件
  9. 初始化ceph disk
  10. 配置osd分区

三、开始进行操作流程:

第一步、环境准备

  • 上传ceph10.iso镜像,配置yum源
# 将提前下载好的ceph10.iso文件传到自己的yum服务器(pubserver )上,进行挂载。
# 创建/iso目录将ceph10.iso上传到/iso目录
[root@pubserver ~] mkdir /iso
# 再创建 /var/ftp/ceph目录,方便后续挂载到这个目录
[root@pubserver ~] mkdir /var/ftp/ceph
#设置开机自动挂载ceph10.iso
[root@pubserver ~] vim /etc/fstab   # 追加一行如下
/iso/ceph10.iso /var/ftp/ceph   iso9660 defaults   0 0
# 挂载
[root@pubserver ~] mount -a
#查看并确认挂载已经成功
[root@pubserver ~]# df -h /var/ftp/ceph/
文件系统        容量  已用  可用 已用% 挂载点
/dev/loop3      284M  284M     0  100% /var/ftp/ceph
[root@pubserver ~] ls /var/ftp/ceph/
EULA  MON  README                      Tools
GPL   OSD  RPM-GPG-KEY-redhat-release  TRANS.TBL
  • 在所有节点配置yum仓库(7系列镜像、ceph-osd、ceph-mon、ceph-tools)
# 在node1~3节点上配置yum仓库
[root@node1 ~]# cat /etc/yum.repos.d/local.repo
[rhel7_repo]
name=CentOS-$releasever - Base
baseurl=ftp://192.168.88.240/dvd
enabled=1
gpgcheck=0
# 在node1~3节点上配置ceph10.iso镜像仓库
[root@node1 ~]# vim /etc/yum.repos.d/ceph.repo
[osd]
name=ceph osd
baseurl=ftp://192.168.88.240/ceph/OSD
enabled=1
gpgcheck=0

[mon]
name=ceph mon
baseurl=ftp://192.168.88.240/ceph/MON
enabled=1
gpgcheck=0

[tools]
name=ceph tools
baseurl=ftp://192.168.88.240/ceph/Tools
enabled=1
gpgcheck=0
[root@node1 ~]# yum repolist
... ...
repolist: 10,174
#配置完一个后scp到其他节点
[root@node1 ~]# scp /etc/yum.repos.d/ceph.repo 192.168.88.12:/etc/yum.repos.d/
[root@node1 ~]# ^12^13
[root@node1 ~]# ^13^10
PS:各节点务必关闭selinux和防火墙
  • 选出一台主机作为控制节点( 我这边是将node1节点作为控制机),配置到所有节点的免密登录
[root@node1 ~]# ssh-keygen    # 生成密钥对
[root@node1 ~]# for i in {10..13}
> do
> ssh-copy-id 192.168.88.$i
> done
  • 在所有的节点主机上配置名称解析(hosts)注意,解析的名字必须是该机器的主机名**(必须要保持同步)**
[root@node1 ~]# vim /etc/hosts   # 增加4行
... ...
192.168.88.10    client1
192.168.88.11    node1
192.168.88.12    node2
192.168.88.13    node3
#同步hosts文件到其他几个节点
[root@node1 ~]# for i in 10 12 13
> do
> scp /etc/hosts 192.168.88.$i:/etc/
> done

第二步:配置NTP服务

  • 使得所有节点时间是同步的(将yum服务器‘pubserver ’同时作为时间服务器NTP)
#安装并配置chrony服务
[root@pubserver ~]# yum install -y chrony
[root@pubserver ~]# vim /etc/chrony.conf 
 20 #minsources 2
 21 
 22 # Allow NTP client access from local network.  
 # 注意这里一定要修改授权的网段
 23 allow 192.168.88.0/24  # 授权192.168.88.0/24可以时钟同步
 24 
 25 # Serve time even if not synchronized to a time source.
 26 local stratum 10    # 即使没有从一个源同步时钟,也为其他主机提供时间

# 确认时区为:Asia/Shanghai (CST, +0800)
# 确认当前时间也是正确
[root@pubserver ~]# timedatectl 
               Local time: 三 2022-12-07 14:14:46 CST
           Universal time: 三 2022-12-07 06:14:46 UTC
                 RTC time: 三 2022-12-07 06:14:47
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
              NTP service: active
          RTC in local TZ: no
#启动chrony服务
[root@client1 ~]# systemctl restart chronyd
  • 配置node1-3成为pubserver的NTP客户端
# node1~3安装chrony
[root@node1 ~]# for i in node{1..3}
> do
> ssh $i yum install -y chrony
> done
# 配置node1-3成为pubserver的NTP客户端
[root@node1 ~]# vim /etc/chrony.conf  # 将server开头的全注释,添加下面一行
# ntp服务器的ip
server 192.168.88.240 iburst
[root@node1 ~]# for i in node{2..3}
> do
> scp /etc/chrony.conf $i:/etc/
> done
# 启动服务
[root@node1 ~]# for i in node{1..3}
> do
> ssh $i systemctl restart chronyd
> done
# 验证时间是否同步  client1前面有^*表示同步成功
[root@node1 ~]# chronyc sources -v
... ...
^* pubserver  10   6    17    40 -4385ns[-1241us] +/-  162us

第三步:安装软件包

  • 在所有节点上安装软件包(ceph-mon ceph-osd ceph-mds ceph-radosgw)
# 在3个节点上安装软件包
[root@node1 ~]# for i in node{1..3}
> do
> ssh $i yum install -y ceph-mon ceph-osd ceph-mds ceph-radosgw
> done
  • 在主节点(node1)上安装ceph-deploy工具,将node1作为部署主机,这样就可以操控其他节点
[root@node1 ~]# yum install -y ceph-deploy
# 查看使用帮助
[root@node1 ~]# ceph-deploy --help
[root@node1 ~]# ceph-deploy mon --help   # 查看mon子命令的帮助
# 创建ceph-deploy工作目录
[root@node1 ~]# mkdir ceph-cluster
# 进入工作目录(执行后续操作必须在工作目录中进行)
[root@node1 ~]# cd ceph-cluster

第四步:创建集群

  • 创建Ceph集群配置
# 创建集群(node{1..3})的配置文件
[root@node1 ceph-cluster]# ceph-deploy new node{1..3}
[root@node1 ceph-cluster]# ls
ceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring
# 配置文件说明
[root@node1 ceph-cluster]# tree .
.
├── ceph.conf               # 集群配置文件
├── ceph-deploy-ceph.log    # 日志文件
└── ceph.mon.keyring        # 共享密钥
# 开启ceph的缺省特性,如果不写将来创建镜像会存在挂载不上的问题
[root@node1 ceph-cluster]# vim ceph.conf   # 尾部追加一行如下
rbd_default_features = 1
  • 根据当前工作目录中的配置进行安装集群mon组件(mon必须奇数部署)
# ceph-deploy moncreate-initial 安装集群mon组件
[root@node1 ceph-cluster]# ceph-deploy mon create-initial
# 
#
#
# 如果安装过程中出现keyring...这种报错,可以试着执行以下命令:
[root@node1 ceph-cluster]# ceph-deploy gatherkeys node{1..3}
# 如果安装错误,可以清理数据后,重新安装。清理数据命令:
[root@node1 ceph-cluster]# ceph-deploy purge node1
[root@node1 ceph-cluster]# ceph-deploy purge node2
[root@node1 ceph-cluster]# ceph-deploy purge node3
[root@node1 ceph-cluster]# systemctl status ceph-mon*
● ceph-mon@node1.service .. ..
[root@node2 ~]# systemctl status ceph-mon*
● ceph-mon@node2.service ... ...
[root@node3 ~]# systemctl status ceph-mon*
● ceph-mon@node3.service ... ...
# 注意:这些服务在30分钟之内只能启动3次,超过报错。
  • 查看集群状态
[root@node1 ceph-cluster]# ceph -s
....
...health HEALTH_ERR   # 因为还没有硬盘,所以状态是HEALTH_ERR
....

第五步:创建OSD存储空间

  • 使用zap进行初始化ceph disk
# 查看disk帮助
[root@node1 ceph-cluster]# ceph-deploy disk --help
# 初始化:各主机的硬盘。vmware应该是sdb和sdc(相当于格式化)初始化格式为GPT格式
[root@node1 ceph-cluster]# ceph-deploy disk zap node1:vdb node1:vdc 
[root@node1 ceph-cluster]# ceph-deploy disk zap node2:vdb node2:vdc 
[root@node1 ceph-cluster]# ceph-deploy disk zap node3:vdb node3:vdc 
# 初始化还可以这么写
[root@node1 ceph-cluster]# ceph-deploy disk zap node{1..3}:vd{b,c} 
  • 创建OSD配置osd分区
# 创建存储空间。
# ceph会硬盘分为两个分区
# 一个分区大小为5GB,用于保存ceph的内部资源;
# 另一个分区是剩余全部空间
[root@node1 ceph-cluster]# ceph-deploy osd --help
[root@node1 ceph-cluster]# ceph-deploy osd create node1:vd{b,c}
[root@node1 ceph-cluster]# lsblk 
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  30G  0 disk 
└─vda1 253:1    0  30G  0 part /
vdb    253:16   0  20G  0 disk 
├─vdb1 253:17   0  15G  0 part /var/lib/ceph/osd/ceph-0
└─vdb2 253:18   0   5G  0 part 
vdc    253:32   0  20G  0 disk 
├─vdc1 253:33   0  15G  0 part /var/lib/ceph/osd/ceph-1
└─vdc2 253:34   0   5G  0 part 
# 将其他节点的硬盘空间也交给osd进行管理
[root@node1 ceph-cluster]# ceph-deploy osd create node2:vd{b,c}
[root@node1 ceph-cluster]# ceph-deploy osd create node3:vd{b,c}
# 也可以这么写
[root@node1 ceph-cluster]# ceph-deploy osd create node{1..3}:vd{b,c}
# 检查各个节点是否出现2个osd进程(因为有两块硬盘用于ceph)
[root@node1 ceph-cluster]# systemctl status ceph-osd* 
# 查看集群状态,如果HEALTH_OK 则视为集群创建完成
[root@node1 ceph-cluster]# ceph -s 
....
...health HEALTH_OK     # 状态是HEALTH_OK表示一切正常
...
  • 重点关注:health是否为ok,mon、osd是否与自己创建的数量一致
    ceph安装成功的状态.png
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值