目录
六、搭建前准备工作(详见http://t.csdn.cn/vH97M)
2、命令:for i in 130 131 132;do scp /etc/hosts 192.168.115.${i}:/etc/hosts;done
#要测试,需要在四台虚拟机上分别测试IP地址以及主机名能否实现免密登录。
(二)创建集群(注意当前操作以及下面操作需在/usr/local/soft/cephcluster目录下进行操作)
(四)在指定主机(centos1、centos2和centos3)上安装Ceph软件。
2、之后点击“继续访问192.168.115.128(不安全)”
3、出现下面界面,将设置 Ceph Dashboard 的登录凭据设置的用户名和密码写入其中
一、概述
(一)ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。
(二)Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。
(三)RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。
二、特点
(一)统一存储
虽然 ceph 底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口。所以在开源存储软件中,能够一统江湖。至于能不能千秋万代,就不知了。
(二) 高扩展性
扩容方便、容量大。能够管理上千台服务器、EB 级的容量。
(三)可靠性强
支持多份强一致性副本,EC。副本能够垮主机、机架、机房、数据中心存放。所以安全可靠。存储节点可以自动管理、自动修复。无单点故障,容错性强。
(四)高性能
因为是多个副本,因此在读写操作时候能够做到高度并行化。理论上,节点越多,整个集群的 IOPS和吞吐量越高。另外一点 ceph 客户端读写数据直接与存储设备(osd) 交互。
三、组件
(一)Monitor
一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据。
(二)OSD
OSD全称Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有很多个OSD。
(三)MDS
MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。
(四)Object
Ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据。
(五)PG
PG全称Placement Grouops,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据。
(六)RADOS
RADOS全称Reliable Autonomic Distributed Object Store,是Ceph集群的精华,用户实现数据分配、Failover等集群操作。
(七)Libradio
Librados是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持。
(八)CRUSH
CRUSH是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。
(九)RBD
RBD全称RADOS block device,是Ceph对外提供的块设备服务。
(十)RGW
RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。
(十一)CephFS
CephFS全称Ceph File System,是Ceph对外提供的文件系统服务。
四、架构图
(一)文件上传,先将文件切片成N个object(如果开启了cephFS,可以使用MDS缓存)
(二)切片后的文件object会存入到Ceph中
(三)文件存储前,会经过CRUSH算法,计算当前文件存储归结于哪个PG
(四)PG是逻辑概念上对文件存储范围划分的索引
(五)根据PG索引将文件存储到指定服务器的OSD中
五、搭建前环境拓扑
虚拟机名 | 主机名 | IP |
Monitor+OSD1 | centos1 | 192.168.115.128 |
OSD2 | centos2 | 192.168.115.130 |
OSD3 | centos3 | 192.168.115.131 |
client | centos4 | 192.168.115.132 |
六、搭建前准备工作(详见http://t.csdn.cn/vH97M)
(一)四台虚拟机分别关闭防火墙
命令:systemctl stop firewalld.service
systemctl disable firewalld.service
(二)四台虚拟机分别关闭图形网络管理器
命令:systemctl stop NetworkManager
systemctl disable NetworkManager
(三)四台虚拟机分别静态配置IP
(四)四台虚拟机分别关闭Selinux
命令:setenforce 0
(五)四台虚拟机分别修改主机名
命令:hostnamectl set-hostname centos{1..4}
bash #刷新
(六)四台虚拟机分别修改ssh配置文件
命令:sed -i "s/#UseDNS yes/UseDNS no/" /etc/ssh/sshd_config
#这是一条用于修改SSH配置的命令,它将在/etc/ssh/sshd_config
文件中查找所有以#UseDNS yes
开头的行,然后将其替换为UseDNS no
,以禁用SSH连接时的DNS解析。
重启ssh服务:systemctl restart sshd
(七)设置主机名免密登录(在centos1主机中操作)
1、命令:vim /etc/hosts
192.168.115.128 centos1
192.168.115.130 centos2
192.168.115.131 centos3
192.168.115.132 centos4
2、命令:for i in 130 131 132;do scp /etc/hosts 192.168.115.${i}:/etc/hosts;done
#这是一个用于将本地主机的/etc/hosts文件复制到指定IP地址的远程主机上的命令,它使用循环语句和scp命令实现了批量复制的功能。具体来说,for i in 130 131 132表示将i依次赋值为130、131、132,然后执行循环语句;do和done之间的部分是循环体,其中scp /etc/hosts 192.168.115.${i}:/etc/hosts表示将本地主机的/etc/hosts文件复制到IP地址为192.168.115.${i}的远程主机上。
(八)配置ssh免密登录
1、配置centos1(192.168.115.128)
命令:ssh-keygen #生成密钥
for i in 130 131 132;do ssh-copy-id root@192.168.115.$i;done #上传密钥
2、配置centos2(192.168.115.130)
命令:ssh-keygen #生成密钥
for i in 128 131 132;do ssh-copy-id root@192.168.115.$i;done #上传密钥
3、配置centos3(192.168.115.131)
命令:ssh-keygen #生成密钥
for i in 130 128 132;do ssh-copy-id root@192.168.115.$i;done #上传密钥
4、配置centos4(192.168.115.132)
命令:ssh-keygen #生成密钥
for i in 130 131 128;do ssh-copy-id root@192.168.115.$i;done #上传密钥
#要测试,需要在四台虚拟机上分别测试IP地址以及主机名能否实现免密登录。
(九)设置时间同步(在centos1上开启时间同步服务器)
1、安装
命令:yum -y install ntp
2、配置
命令:vim /etc/ntp.conf
server 127.127.1.0 #定义时间服务器
fudge 127.127.1.0 stratum 8 #定义时间层次
3、启动服务
命令:systemctl start ntpd #开启服务
systemctl enable ntpd #设置为开机自启
4、客户端对时
命令:for i in 130 131;do ssh 192.168.115.$i ntpdate 192.168.115.128;done
(十)添加磁盘(除了虚拟机centos4不添加磁盘)
(十一)热扫描磁盘
命令:echo "- - -" > /sys/class/scsi_host/host0/scan
for i in 130 131;do ssh 192.168.115.$i echo "- - -" > /sys/class/scsi_host/host0/scan && lsblk;done
#这是一个用于在多个远程主机上执行命令的循环语句,它将在IP地址为192.168.115.130和192.168.115.131的两台主机上执行相同的命令。具体来说,for i in 130 131表示将i依次赋值为130、131,然后执行循环语句;do和done之间的部分是循环体,其中ssh 192.168.115.$i表示连接IP地址为192.168.115.$i的远程主机,echo "- - -" > /sys/class/scsi_host/host0/scan表示向远程主机发送命令,将字符串"- - -"写入/sys/class/scsi_host/host0/scan文件中,这个命令的作用是重新扫描SCSI总线,并检测新加入的硬盘设备;最后,lsblk表示列出当前系统中所有的块设备信息。
(十二)格式化
命令:mkfs.xfs /dev/sdb
#需分别在虚拟机centos1、centos2、centos3上输入此命令
七、安装ceph(只在虚拟机centos1执行)
(一)解决依赖关系
命令:yum -y install epel-release
yum -y install lttng-ust
#epel-release是一个第三方软件源的仓库,它提供了大量常用的Linux软件包,包括一些不在默认仓库中的软件包。通常在安装一些第三方软件时需要先安装该软件包,以获取更全面的软件包支持。
#lttng-ust是一个用户空间跟踪器,它可以用于在系统和应用程序级别对Linux进行跟踪和分析,为调试和性能分析提供有用的信息。
(二)添加ceph安装源
命令:vim /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/x86_64/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[Ceph-noarch]
name=Ceph noarch packages
# 清华源
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/noarch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/SRPMS/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
(三)安装
命令: yum -y install ceph ceph-deploy
八、集群构建(只在虚拟机centos1执行)
(一)创建集群目录
命令:mkdir -p /usr/local/soft/cephcluster
cd /usr/local/soft/cephcluster
(二)创建集群(注意当前操作以及下面操作需在/usr/local/soft/cephcluster目录下进行操作)
ceph-deploy new centos1 centos2 centos3
#此过程消耗时间过长(可以稍微休息一下)
(三)修改配置文件ceph.conf
命令:vim ceph.conf(将下面内容添加到该文件中)
#对外开放网段
public network = 192.168.115.0/24
# 设置pool池默认分配数量
osd pool default size = 2
# 容忍更多的时钟误差
mon clock drift allowed = 2
mon clock drift warn backoff = 30
# 允许删除pool
mon_allow_pool_delete = true
[mgr]
# 开启WEB仪表盘
mgr modules = dashboard
(四)在指定主机(centos1、centos2和centos3)上安装Ceph软件。
命令:ceph-deploy install centos1 centos2 centos3
(五)创建初始监视器(monitor)
命令:ceph-deploy mon create-initial
(六)同步管理信息
命令:ceph-deploy admin centos1 centos2 centos3
#这是使用ceph-deploy在三个节点上创建Ceph管理密钥的命令。具体来说,ceph-deploy是Ceph官方提供的一个管理工具,admin是该工具提供的一个子命令,用于在指定的Ceph节点上创建管理员用户和密钥。在执行此命令之前,您需要已经通过ceph-deploy安装了Ceph软件,并且已经创建了一个或多个Ceph监视器,以及在这些监视器上运行了Ceph Manager守护程序。在执行此命令后,将在指定的三台节点上创建一个名为ceph的用户,该用户将被授予管理Ceph集群的权限,并且会生成一个密钥文件,可以在后续操作中使用该密钥文件来管理Ceph集群。
(七)安装mgr(管理守护进程)
命令:ceph-deploy mgr create centos1 centos2 centos3
(八)安装rgw
命令:ceph-deploy rgw create centos1 centos2 centos3
(九)创建mds服务
命令:ceph-deploy mds create centos1 centos2 centos3
(十)OSD安装
创建OSD
命令:ceph-deploy osd create --data /dev/sdb centos1
ceph-deploy osd create --data /dev/sdb centos2
ceph-deploy osd create --data /dev/sdb centos3
#OSD服务是对象存储守护进程, 负责把对象存储到本地文件系统, 必须要有一块独立的磁盘作为存储。如果没有独立磁盘,怎么办? 可以在Linux下面创建一个虚拟磁盘进行挂载。
(十一)查看集群状态
命令:ceph -s
#如果安装失败需要:
ceph-deploy purge centos1 centos2 centos3
ceph-deploy purgedata centos1 centos2 centos3
ceph-deploy forgetkeys
将三台节点的mon信息也删除:
rm -rf /var/run/ceph/
在centos1上操作,删除完之后从创建集群目录开始做
九、安装dashboard(只在虚拟机centos1执行)
(一)开启dashboard模块
命令:ceph mgr module enable dashboard
(二)生成签名
命令:ceph dashboard create-self-signed-cert
(三)创建目录
命令:mkdir -p /usr/local/jx/cephcluster/mgr-dashboard
(四)生成自签名证书
命令:cd /usr/local/jx/cephcluster/mgr-dashboard
openssl req -new -nodes -x509 -subj "/O=IT/CN=ceph-mgr-dashboard" -days 3650 -keyout dashboard.key -out dashboard.crt -extensions v3_ca
(五)启动服务
命令:ceph mgr module disable dashboard
ceph mgr module enable dashboard
(六)设置访问地址与端口
命令:ceph config set mgr mgr/dashboard/server_addr 192.168.115.128
ceph config set mgr mgr/dashboard/server_port 9001
(七)关闭https
命令:ceph config set mgr mgr/dashboard/ssl false
(八)列出 Ceph 管理进程管理的守护进程列表。
命令:ceph mgr services
(九)设置 Ceph Dashboard 的登录凭据
命令:ceph dashboard set-login-credentials jx123 123.com
(十)访问
1、出现下面界面点击“高级”
#注意访问时要输入https://192.168.115.128:8443
2、之后点击“继续访问192.168.115.128(不安全)”
3、出现下面界面,将设置 Ceph Dashboard 的登录凭据设置的用户名和密码写入其中
4、登录成功界面
十、ceph文件系统创建(只在虚拟机centos1执行)
(一)创建存储池
命令:cd /usr/local/soft/cephcluster
ceph osd pool create cephfs_data 128
ceph osd pool create cephfs_metadata 64
#少于5个OSD可把pg_num设置为128
OSD数量在5到10,可以设置pg_num为512
OSD数量在10到50,可以设置pg_num为4096
OSD数量大于50,需要计算pg_num的值
(二)查看存储池
命令: ceph osd lspools
(三)创建文件系统
命令:ceph fs new fs_test cephfs_metadata cephfs_data
(四)查看文件系统
命令:ceph fs ls
(五)查看mds状态
命令:ceph mds stat
十一、客户端
(一)在虚拟机centos1中操作
1、cd /usr/local/soft/cephcluster
2、给centos安装ceph-deploy
命令:ceph-deploy install centos4
3、同步管理信息
命令:ceph-deploy admin centos4
(二)在虚拟机centos4中操作
1、查看信息
命令:ls /etc/ceph
#会有ceph.client.admin.keyring产生
2、安装ceph-fuse
命令:yum -y install ceph-fuse
3、创建挂载目录
命令:mkdir /ceph
4、挂载ceph文件系统
命令:ceph-fuse -k /etc/ceph/ceph.client.admin.keyring -m 192.168.115.128:6789 /ceph
5、查看
命令:df -hT
#也可以查看其它的相关内容