一、情况预备
拓扑图
- 1台客户端假造机:Client
- 3台存储集群假造机:node1~3
- 存储集群假造机IP所在分别为:192.168.88.11~13
- 每台存储集群假造机至少要有2g的内存
- 每台存储集群假造机必要含有2块空闲硬盘
- 每台存储集群假造机搭建好yum等服务
二、Ceph:分布式存储集群摆设流程思绪
- 情况预备
- 设置NTP服务
- 安装软件包
- 创建集群
- 创建OSD存储空间
- 全部节点:添加2块额外的硬盘
- 全部节点:设置yum服务端和客户端
- 选出一台存储集群假造机作为控制节点,设置到全部节点的免密登录
- 在全部的节点主机上设置名称剖析(hosts)
- 在全部节点上安装软件包(ceph-mon ceph-osd ceph-mds ceph-radosgw)
- 设置NTP使得全部节点时间是同步的
- 在主节点(node1)上安装ceph-deploy工具
- 新建ceph集群,安装mon组件
- 初始化ceph disk
- 设置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 ToolsGPL 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 - Basebaseurl=ftp://192.168.88.240/dvdenabled=1gpgcheck=0# 在node1~3节点上设置ceph10.iso镜像堆栈[root@node1 ~]# vim /etc/yum.repos.d/ceph.repo[osd]name=ceph osdbaseurl=ftp://192.168.88.240/ceph/OSDenabled=1gpgcheck=0[mon]name=ceph monbaseurl=ftp://192.168.88.240/ceph/MONenabled=1gpgcheck=0[tools]name=ceph toolsbaseurl=ftp://192.168.88.240/ceph/Toolsenabled=1gpgcheck=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^10PS:各节点务必关闭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 client1192.168.88.11 node1192.168.88.12 node2192.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服务器的ipserver 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]# lsceph.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 MOUNTPOINTvda 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是否与自己创建的数目划一
|