欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

创建虚拟机以及搭建ceph

程序员文章站 2022-07-09 22:39:14
...

什么是分布式文件系统

创建虚拟机以及搭建ceph
常用分布式文件系统

Lustre
Hadoop
FastDFS
Ceph
GlusterFS

什么是Ceph

创建虚拟机以及搭建ceph
Ceph 组件

创建虚拟机以及搭建ceph

实验拓扑图

创建虚拟机以及搭建ceph

什么是块储存

单机块设备
-光盘
-磁盘
分布式块储存
-Ceph
-Cinder

一、

创建一台虚拟机的步骤 《文件》–《新建虚拟机》—《自定义》----《稍后安装操作系统》—

创建虚拟机以及搭建ceph

安装时内存稍微大一点(1.5G 左右)—《网络类型》使用默认直接下一步 剩下的步骤都使用默认值(直接点击下一步)

二、

给虚拟机安装操作系统 《编辑虚拟机设置》----《CD|DVD》----《使用 iso》----浏览选择光盘 iso 按照第一阶段牛老师的步骤安装 Linux 操作系统。

三、

在 VMware 中创建虚拟网络 《编辑》----《虚拟网络编辑器》----《更改设置》----《添加网络》

创建虚拟机以及搭建ceph
添加一个 vmnet4,确定,确定

修改 windows 虚拟网络的 IP,《网络和 intenet 设置》----《网络和共享中心》----《更改 设配器设置》,双击 vmnet4,—《设置》----双击《tcp/ipv4》,设置 IP 地址:192.168.4.254, 子网掩码:255.255.255.0,确定即可

四、

给所有虚拟机设置网络连接方式(我们需要 4 台虚拟机,4 台虚拟机都做一样的操作)

打开虚拟机----编辑虚拟机设置------《网络适配器》----《自定义》连接到《vmnet4》确 定即可,接下来就可以进入虚拟机系统,通过 nmcli 设置网卡 IP。

五、

给所有虚拟机配置 YUM 源 已经启动的虚拟机,右击虚拟机,选《设置》 没有启动的虚拟机,可以点击《编辑虚拟机设置》 确保每个虚拟机都加载了 CentOS 系统光盘的 ISO

还需要让所有虚拟机再多加载一个 ceph.iso 光盘,给所有虚拟机添加一个光驱 《设置》虚拟机,-----《添加》-----《CD/DVD 驱动器》—使用 ISO,选择 ceph10.iso 光 盘
创建虚拟机以及搭建ceph

最好重启一下 修改/etc/fstab 实现光盘的永久挂载 # vi /etc/fstab /dev/sr0 /media iso9660 defaults 0 0 /dev/sr1 /mnt iso9660 defaults 0 0 # mount -a

#vi /etc/yum.repos.d/dvd.repo [dvd] name=centos baseurl=file:///mnt #不要照抄,需要各位同学 ls 查看下对应目录的内容 gpgcheck=0

提示:最小化安装,没有 vim 软件,不提供命令自动补齐 # yum -y install vim bash-completion

给所有虚拟机配置 IP 和主机名(这里仅以 node1 为例) #ip a s #查看 vmware 虚拟机中网卡的名称(可能每个人不一样) # nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.4.11/24 connection.autoconnect yes # nmcli connection up ens33 # hostnamect set-hostname node1

共享存储的常见类型: 1)块存储(iSCSI、ceph) 客户端多了一个磁盘 2)文件系统(NFS、ceph) 客户端直接 mount 3)对象存储(ceph)

Ceph 组件 OSD 提供共享磁盘(默认 3 副本) MON 提供监控和集群地图 要求:MON 至少 3 台,因为有过半原则

Ceph 实验的环境准备: 1.配置 YUM 源(ceph 光盘) 2.SSH **(免密码登陆) 3.修改 hosts 解析 4.NTP 时间同步 5.node1、node2、node3 每台虚拟机添加 2 块磁盘(20G)

(1)

配置 YUM 源(ceph 光盘)【所有主机都需要操作】 # vim /etc/yum.repos.d/ceph.repo [mon] name=mon baseurl=file:///media/MON gpgcheck=0 [osd] name=osd baseurl=file:///media/OSD gpgcheck=0 [tools] name=tools baseurl=file:///media/Tools gpgcheck=0

2)

SSH **(免密码登陆)【我们使用 node1 配置 ssh **】 [aaa@qq.com ~]# ssh-****** [aaa@qq.com ~]# for i in 10 11 12 13 do ssh-copy-id 192.168.4.$i done

3)

修改 hosts 解析(解析的域名必须跟主机名一致) [aaa@qq.com ~]# vim /etc/hosts … … 192.168.4.10 client 192.168.4.11 node1 192.168.4.12 node2 192.168.4.13 node3 [aaa@qq.com ~]# for i in client node2 node3 do scp /etc/hosts $i:/etc/ done

4)

配置 NTP 时间同步(client 做服务器,所有 node 节点与 client 同步时间) [aaa@qq.com ~]# vim /etc/chrony.conf allow 192.168.4.0/24 #26 行 local stratum 10 #29 行 [aaa@qq.com ~]# systemctl restart chronyd.service [aaa@qq.com ~]# firewall-cmd --set-default-zone=trusted [aaa@qq.com ~]# vim /etc/sysconfig/selinux SELINUX=permissive [aaa@qq.com ~]# setenforce 0

所有 node 节点与 client 同步时间 [aaa@qq.com ~]# vim /etc/chrony.conf server 192.168.4.10 iburst #第 3 行 [aaa@qq.com ~]# for i in node1 node2 node3 do scp /etc/chrony.conf $i:/etc/ ssh $i "systemctl restart chronyd" done

5)

开打 vmware 给 node1、node2、node3 每台虚拟机添加 2 块磁盘 右击虚拟机----《设置》----《添加》----《硬盘》,按提示点击下一步即可 添加完毕后需要重启虚拟机(node1,node2,node3) 重启系统后,使用#lsblk 命令可以查看磁盘是否添加成功!

推荐:给 vmware 可以做一个快照

部署 Ceph 集群 [aaa@qq.com ~]# yum -y install ceph-deploy #一定要在有 ssh **的主机上安装 [aaa@qq.com ~]# mkdir ceph-cluster #但凡执行 ceph-deploy 脚本,必须在该目录下,否则会出错 [aaa@qq.com ~]# cd ceph-cluster/ [aaa@qq.com ceph-cluster]# for i in node1 node2 node3 do ssh $i "yum -y install ceph-mon ceph-osd ceph-mds ceph-radosgw" done

关闭所有节点的防火墙和 SELinux [aaa@qq.com ~]# firewall-cmd --set-default-zone=trusted [aaa@qq.com ~]# vim /etc/sysconfig/selinux SELINUX=permissive [aaa@qq.com ~]# setenforce 0 [aaa@qq.com ~]# firewall-cmd --set-default-zone=trusted [aaa@qq.com ~]# vim /etc/sysconfig/selinux SELINUX=permissive [aaa@qq.com ~]# setenforce 0 [aaa@qq.com ~]# firewall-cmd --set-default-zone=trusted [aaa@qq.com ~]# vim /etc/sysconfig/selinux SELINUX=permissive [aaa@qq.com ~]# setenforce 0

部署 MON 集群 [aaa@qq.com ceph-cluster]# ceph-deploy new node1 node2 node3 #测试所有 node 节点状态,创建了 ceph 的配置文件 ceph.conf(在当前目录下)

[aaa@qq.com ceph-cluster]# ls ceph.conf
[aaa@qq.com ceph-cluster]# ls /etc/ceph/ #/etc/ceph 是启动 ceph 需要读取配置文件的地方
[aaa@qq.com ceph-cluster]# ceph-deploy mon create-initial
#把当前目录下的 ceph 配置文件远程拷贝到目标主机(node1,node2,node3)放到/etc/ceph 目录,并且启动 ceph-mon 服务(服务名称为 aaa@qq.com主机名)

[aaa@qq.com ceph-cluster]# systemctl status aaa@qq.com 确认服务是否启动 [aaa@qq.com ceph-cluster]# ceph -s

部署 OSD 集群 每台虚拟机都添加了 2 块磁盘(/dev/sdb、/dev/sdc) sdb 用来做缓存盘,sdc 做数据盘 读写操作 缓存 数据 client<---------->ceph 集群[sdb]<----->[sdc] 硬盘分:传统磁盘[容量大、性能差]和固态盘[容量小、性能高] 可以使用固态盘做缓存,磁盘做数据盘 假设每个磁盘是 20G,最终我们的 ceph 集群提供多大的容量?答案是 60G node1[sdb]+[sdc]20G node2[sdb]+[sdc]20G = 20+20+20=60G node3[sdb]+[sdc]20G

1)

把所有的磁盘初始化(仅在 node1 操作) [aaa@qq.com ~]# cd ceph-cluster/ #必须的操作
[aaa@qq.com ceph-cluster]# ceph-deploy disk zap node1:sdb node1:sdc [aaa@qq.com ceph-cluster]# ceph-deploy disk zap node2:sdb node2:sdc
[aaa@qq.com ceph-cluster]# ceph-deploy disk zap node3:sdb node3:sdc

2)

启动 OSD 服务共享这些磁盘 [aaa@qq.com ceph-cluster]# ceph-deploy osd create node1:sdc:/dev/sdb 远程 node1 启动 osd 服务把/dev/sdc 共享给用户,/dev/sdb 作为缓存盘(允许一次性启动多 台主机的服务)并且把 sdc 挂载到了/var/lib/ceph/xxx 目录 常见错误及解决方法(非必须操作)。 使用 osd create 创建 OSD 存储空间时,如提示下面的错误提示:
[ceph_deploy][ERROR ] RuntimeError: bootstrap-osd keyring not found; run ‘gatherkeys’ 可以使用如下命令修复文件,重新配置 ceph 的**文件: [aaa@qq.com ceph-cluster]# ceph-deploy gatherkeys node1 node2 node3

[aaa@qq.com ceph-cluster]# ceph-deploy osd create node2:sdc:/dev/sdb
[aaa@qq.com ceph-cluster]# ceph-deploy osd create node3:sdc:/dev/sdb

验证:OSD 的服务名称 aaa@qq.com数字 [aaa@qq.com ceph-cluster]# df -h /dev/sdc1
20G 34M 20G 1% /var/lib/ceph/osd/ceph-0
[aaa@qq.com ceph-cluster]# systemctl status ceph-osd 键两下
[aaa@qq.com ceph-cluster]# systemctl status aaa@qq.com [aaa@qq.com ceph-cluster]# ceph osd tree

块共享实验:ceph 总容量是 60G 在服务端我们就可以任意个创建共享镜像 image(共享盘),大小可以任意 创建一个 5G 共享盘----》用户访问 /dev/rbd0 创建 10G 共享盘 ----》 存储池(默认有一个名称为 rbd 的池)

[aaa@qq.com ~]# ceph osd lspools #查看共享池

[aaa@qq.com ~]# rbd create jacob --image-feature layering --size 5G
#创建共享镜像,名称为 jacob,开启功能:支持 cow,共享大小为 5G

[aaa@qq.com ~]# rbd list #列出所有共享镜像 jacob
[aaa@qq.com ~]# rbd info jacob #查看某个镜像的详细信息

[aaa@qq.com ~]# rbd resize --size 10G jacob #扩容容量
[aaa@qq.com ~]# rbd resize --size 5G jacob --allow-shrink #缩减容量

客户端访问共享:(client 做客户端主机) [aaa@qq.com ~]# yum -y install ceph-common
[aaa@qq.com ~]# scp node1:/etc/ceph/ceph.conf /etc/ceph/ #拷贝配置文件,配置文件中记录的有 ceph 集群服务器的 IP 信息

[aaa@qq.com ~]# scp node1:/etc/ceph/ceph.client.admin.keyring /etc/ceph/

#拷贝访问 ceph 集群的**文件,有了**才有权限访问集群

[aaa@qq.com ~]# lsblk
[aaa@qq.com ~]# rbd map jacob /dev/rbd0 [aaa@qq.com ~]# rbd map test /dev/rbd1
[aaa@qq.com ~]# lsblk

客户端进行快照还原数据的实验: 副本:写数据,可以自动备份 3 份;删数据时,删除 3 份 快照:写数据;快照;模拟认为误操作;还原快照

1)

格式化、挂载、写数据
[aaa@qq.com ~]# mkfs.xfs /dev/rbd0 [aaa@qq.com ~]# mkdir /data
[aaa@qq.com ~]# mount /dev/rbd0 /data/
[aaa@qq.com ~]# echo "abc hello world" > /data/test.txt

回到 node 集群(给 jacob 共享盘创建快照
[aaa@qq.com ~]# rbd snap ls jacob #默认该镜像盘没有快照

[aaa@qq.com ~]# rbd snap create jacob --snap jacob-snap1 #给 jacob 镜像盘创建快照,快照名称为 jacob-snap1 到 client 模拟数据被误操作删除(ceph 不支持在线还原快照)

[aaa@qq.com ~]# rm -rf /data/test.txt

[aaa@qq.com ~]# umount /data/
到 node 集群还原快照

[aaa@qq.com ~]# rbd snap rollback jacob  --snap  jacob-snap1 客户端再次挂载访问共享
 [aaa@qq.com ~]# mount /dev/rbd0   /data/
 
  [aaa@qq.com ~]# cat /data/test.txt 

使用快照克隆一个新的镜像盘 image Jacob—3G 数据(快照)----》创建新的共享 创建一个新的共享 1)保护快照(防止快照被删除)

[aaa@qq.com ~]# rbd snap protect jacob --snap jacob-snap1

[aaa@qq.com ~]# rbd clone jacob --snap jacob-snap1 jacob-clone \ --image-feature layering
#使用现有 jacob 镜像盘的 jacob-snap1 这个快照,克隆一个新的共享镜像盘,名称为 jacobclone
[aaa@qq.com ~]# rbd ls

[aaa@qq.com ~]# rbd info jacob-clone
[aaa@qq.com ~]# rbd flatten jacob-clone
[aaa@qq.com ~]# rbd info jacob-clone #克隆镜像很多数据都来自于快照链 #如果希望克隆镜像可以独立工作,就需要将父快照中的数据,全部拷贝一份,但比较耗时!!!

[aaa@qq.com ~]# rbd snap unprotect jacob --snap jacob-snap1 #取消快照保护
[aaa@qq.com ~]# rbd snap rm jacob --snap jacob-snap1 #删除快照

客户端取消对 ceph 共享盘的挂载实验
[aaa@qq.com ~]# umount /data/
[aaa@qq.com ~]# rbd showmapped

[aaa@qq.com ~]# rbd unmap jacob
[aaa@qq.com ~]# rbd unmap /dev/rbd1

真机安装的 CentOS,创建 KVM 虚拟机 node1(10G 磁盘)

/var/lib/libvirt/images/a.qcow2(10G) node2(10G 磁盘)

/var/lib/libvirt/images/b.qcow2(10G) ceph 集群(10T)20G

默认新建虚拟机(虚拟磁盘使用的是本地磁盘) 真机创建虚拟机(虚拟机调用 ceph 网络磁盘)云盘 真机坏了 换一台其他主机(调用云盘)

Ceph 可以提供块共享、文件系统共享、对象存储
ceph-mon
ceph-osd
ceph-mds
ceph-radosgw

创建Ceph块储存(知识点)

  • 创建块储存镜像
  • 客户端映射镜像
  • 创建镜像快照
  • 使用快照还原数据
  • 使用快照克隆镜像
  • 删除快照与镜像

补充 手动添加网关完以后
命令行加入(添加网关)

nmcli connection add con-name ens37 ifname ens37 type ethernet

相关标签: 权限