ceph分布式存储部署

一、概述

是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。

特点

1、统一存储

虽然 ceph 底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口。所以在开源存储软件中,能够一统江湖。至于能不能千秋万代,就不知了。

2、高扩展性

扩容方便、容量大。能够管理上千台服务器、EB 级的容量。

3、可靠性高

支持多份强一致性副本,EC。副本能够垮主机、机架、机房、数据中心存放。所以安全可靠。存储节点可以自动管理、自动修复。无单点故障,容错性强。

4、高性能

因为是多个副本,因此在读写操作时候能够做到高度并行化。理论上,节点越多,整个集群的 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对外提供的块设备服务。 |
| RBD | RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。 |
| CephFS | CephFS全称Ceph File System,是Ceph对外提供的文件系统服务。 |

三、架构图

|-----------------------------------------------|
| 1:文件上传,先将文件切片成N个object(如果开启了cephFS,可以使用MDS缓存) |
| 2:切片后的文件object会存入到Ceph中 |
| 3:文件存储前,会经过CRUSH算法,计算当前文件存储归结于哪个PG |
| 4:PG是逻辑概念上对文件存储范围划分的索引 |
| 5:根据PG索引将文件存储到指定服务器的OSD中 |

四、搭建

1、环境拓扑

|-------|-------------|
| node1 | monitor |
| node1 | osd |
| node1 | 192.168.2.3 |

|-------|-------------|
| node2 | monitor |
| node2 | osd |
| node2 | 192.168.2.4 |

|-------|-------------|
| node3 | monitor |
| node3 | osd |
| node3 | 192.168.2.5 |

|-------|-------------|
| node4 | monitor |
| node4 | osd |
| node4 | 192.168.2.6 |

2、准备工作

1.关闭防火墙

|-------------------------------------|
| systemctl stop firewalld.service |
| systemctl disable firewalld.service |

2.关闭图形化网络管理器

|----------------------------------|
| systemctl stop NetworkManager |
| systemctl disable NetworkManager |

3.配置IP

|-----------------------------------------------------------------------------|
| sed -i "s/ONBOOT=no/ONBOOT=yes/" /etc/sysconfig/network-scripts/ifcfg-ens33 |
| systemctl restart network |

4.关闭selinux

|--------------|
| setenforce 0 |

5.主机名修改

|------------------------------------------------|
| hostnamectl set-hostname node{1..4} (每个服务器都配置) |

6.修改ssh配置

|--------------------------------------------------------|
| sed -i "s/#UseDNS yes/UseDNS no/" /etc/ssh/sshd_config |
| systemctl restart sshd |

7.hosts文件修改

每个节点主机都需要操作

|----------------|-------------------|
| vim /etc/hosts | 192.168.2.3 node1 |
| vim /etc/hosts | 192.168.2.4 node2 |
| vim /etc/hosts | 192.168.2.5 node3 |
| vim /etc/hosts | 192.168.2.6 node4 |
| scp /etc/hosts 192.168.2.3【4 5 6】:/etc/ ||

8.ssh免密配置

|-------|---------------------------------------------------------|
| node1 | ssh-keygen |
| node1 | for i in 3 4 5 6; do ssh-copy-id root@192.168.2.i;done | | node2 | ssh-keygen | | node2 | for i in 3 4 5 6; do ssh-copy-id root@192.168.2.i;done |
| node3 | ssh-keygen |
| node3 | for i in 3 4 5 6; do ssh-copy-id root@192.168.2.i;done | | node4 | ssh-keygen | | node4 | for i in 3 4 5 6; do ssh-copy-id root@192.168.2.i;done |

9.时间同步

1、在node1开启时间同步服务器
2、安装

yum install -y ntp

3、配置

|-----------------------------|---------|
| vim /etc/ntp.conf ||
| server 127.127.1.0 | 定义时间服务器 |
| fudge 127.127.1.0 stratum 8 | 定义时间层次 |

4、启动

systemctl start ntpd

systemctl enable ntpd

5、客户端对时

|-----------------------------------------------------------|
| for i in 4 5;do ssh 192.168.2.$i ntpdate 192.168.2.3;done |

10.添加磁盘

node1 node2 node3 服务器上都添加一块磁盘

11.热扫描磁盘

|-------------------------------------------------|
| echo "- - -" > /sys/class/scsi_host/host0/scan |

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| for i in 4 5;do ssh 192.168.2.i echo "- - -" \> /sys/class/scsi_host/host0/scan \&\& lsblk;done cd /sys/class/scsi_host for i in \`ls\`;do echo "- - - "\>i/scan;done cd /sys/class/scsi_host/ for i in `ls ./`;do echo "- - -" > $i/scan;done lsblk |

12.格式化

|-------------------|
| mkfs.xfs /dev/sdb |

3、ceph安装(只在node1上操作)

1.yum install epel-release -y

2.yum install lttng-ust -y

3.添加ceph安装源

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [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 |

4. yum -y install ceph ceph-deploy

5.集群架构

创建集群目录

mkdir -p /usr/local/soft/cephcluster

cd /usr/local/soft/cephcluster

创建集群

ceph-deploy new node1 node2 node3

修改配置文件

vim ceph.conf

添加以下内容:

安装

ceph-deploy install node1 node2 node3

初始化monitor

ceph-deploy mon create-initial

同步管理信息

ceph-deploy admin node1 node2 node3

安装mgr(管理守护进程)

ceph-deploy mgr create node1 node2 node3

安装rgw

ceph-deploy rgw create node1 node2 node3

创建mds服务

ceph-deploy mds create node1 node2 node3

OSD安装

|-------|----------------------------------------------|
| 创建OSD | ceph-deploy osd create --data /dev/sdb node1 |
| 创建OSD | ceph-deploy osd create --data /dev/sdb node2 |
| 创建OSD | ceph-deploy osd create --data /dev/sdb node3 |

查看集群状态

ceph -s

6.dashboard安装

ceph mgr module enable dashboard 开启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.2.3

ceph config set mgr mgr/dashboard/server_port 9001

ceph config set mgr mgr/dashboard/ssl false 关闭https

ceph mgr services

ceph dashboard set-login-credentials jx123 123.com 创建账户

https://192.168.2.3:8443

7.ceph文件系统创建

1-创建存储池

|------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|
| 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的值 |

2-查看存储池

ceph osd lspools

3-创建3-文件系统

ceph fs new fs_test cephfs_metadata cephfs_data

4-查看文件系统

ceph fs ls

5-查看mds状态

ceph mds stat

4、客户端挂载

1.在node1中

安装:ceph-deploy install node4

同步管理信息 ceph-deploy admin node4

非集群节点,/var/run/ceph 无内容

2.在node4上操作

yum install -y ceph-fuse

3.查看信息

ls /etc/ceph

ceph.client.admin.keyring

4.创建挂载目录

mkdir /ceph

5.挂载ceph文件系统

ceph-fuse -k /etc/ceph/ceph.client.admin.keyring -m 192.168.2.3:6789 /ceph

查看web页面


相关推荐
weixin_453965006 小时前
[单master节点k8s部署]30.ceph分布式存储(一)
分布式·ceph·kubernetes
weixin_453965006 小时前
[单master节点k8s部署]32.ceph分布式存储(三)
分布式·ceph·kubernetes
weixin_4539650011 小时前
[单master节点k8s部署]31.ceph分布式存储(二)
分布式·ceph·kubernetes
人生匆匆4 天前
bluefs _flush_range allocated: osd用空间但是显示ceph_bluefs_db_used_bytes is 100%
数据库·ceph·servlet
听说唐僧不吃肉4 天前
Ceph篇之OSD磁盘的删除与添加
ceph
放手啊4 天前
CEPH的写入流程
ceph
liuy52775 天前
ceph rgw 桶分片之reshard
前端·ceph
大隐隐于野5 天前
Ceph RocksDB 深度调优
ceph·rocksdb
lldhsds7 天前
Kubernetes云原生存储解决方案之 Rook Ceph实践探究
ceph·云原生·kubernetes
it技术分享just_free8 天前
kubernetes K8S 挂载分布式存储 ceph
运维·分布式·ceph·云原生·容器·kubernetes·k8s