栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ceph分布式存储

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ceph分布式存储

1.ceph的组件和功能

ceph重要的核心组件分别是:Ceph OSD、Ceph Monitor和Ceph MDS。一个Ceph存储集群至少需要一个ceph monitor和至少两个Ceph OSD。运行Ceph文件系统的客户端时,Ceph的元数据服务(MDS)必不可少的。

Ceph OSD:全称是Object Storage Device,主要功能是存储数据,处理数据的复制、恢复、回补、平衡数据分布,并将一些相关数据提供给Ceph Monitor,。例如ceph OSD心跳等。一个Ceph的存储集群,至少两个Ceph OSD来实现 active + clean健康状态和有效的保存数据的双副本(默认情况下是双副本,可以调整)。每一个Disk、分区都可以成为一个OSD。
Ceph Monitor: Ceph的监控器,主要功能是维护整个集群健康状态,提供一致性的决策,包含了Monitor map、OSD map、PG(Placement Group)map和CRUSH map。
Ceph MDS:全称是Ceph Metadata Server,主要保存的是Ceph文件系统(File System)的元数据(metadata)。注意:ceph块存储和ceph的对象存储都不需要Ceph MDS。Ceph MDS为基于POSIX文件系统的用户提供一些基础命令。例如:ls、find等命令。


2.ceph的数据读写流程

file写入过程:

        当某个client需要向Ceph集群写入一个file时, 首先需要在本地完成寻址流程, 将file变为一个object, 然后找出存储该object的一组三个OSD。

        找出三个OSDS, client将直接和Primary OSD通信, 发起写入操作(步驟1 ) 。 Primary OSD收到请求后, 合别向Secondary OSD和 Tertiary OSD发起写入操作(步驟2 、 3) 。 当Secondary OSD和Tertiary OSD各自完成写入操作后, 将分别向Primary OSD发送确认信息(步骤4、 5) 。 当Primary OSD确信其他两个OSD的写入完成后, 则自己也完成数据写入, 并向client确认object写入操作完成( 步骤6)


3.使用ceph-deploy安装一个最少三个节点的ceph集群 推荐3个或以上的磁盘作为专用osd

分别为三个节点添加三个新硬盘:

安装前准备:

关闭防火墙,禁止selinux:

[root@localhost ~]# sestatus 
SELinux status:                 disabled
[root@localhost ~]# firewall-cmd --state
not running

配置主机名和hosts解析:

        给主机4配置主机名:

[root@localhost ~]# hostnamectl set-hostname client

         都配置hosts解析:

[root@localhost ~]# cat >> /etc/hosts << EOF
> 192.168.116.141 node1
> 192.168.116.143 node2
> 192.168.116.142 node3
> 192.168.116.145 client
> EOF

配置node1到所有节点root用户免密钥互信:

         node1上生成密钥对:

[root@localhost ~]# ssh-keygen -f ~/.ssh/id_rsa -N '' -q

        公钥分发到所有节点:

[root@localhost ~]# for i in node1 node2 node3 client; do ssh-copy-id $i; done

        验证免密钥互信:

[root@localhost ~]# for i in node1 node2 node3 client; do ssh $i hostname; done
node1
node2
node3
client

配置时间同步:

[root@localhost ~]# vim /etc/chrony.conf

         重启服务,设置开机自启:

[root@localhost ~]# systemctl restart chronyd
[root@localhost ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 120.25.115.20                 2   6    65     9   -890us[ -162us] +/-   20ms

node1配置为yum仓库服务器,其他节点使用ftp方式使用ceph仓库:

        上传ceph.iso到node1:

[root@node1 ~]# ls
anaconda-ks.cfg  ceph.iso

        安装httpd并设置为开机自启动:

[root@node1 yum.repos.d]# yum install -y vsftpd
[root@node1 yum.repos.d]# systemctl enable vsftpd --now
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

        挂载ceph.iso到/var/ftp:

[root@node1 ~]# echo "/root/ceph.iso /var/ftp/ceph iso9660 defaults 0 0" >> /etc/fstab
[root@node1 ~]# mount -a
mount: /dev/loop0 is write-protected, mounting read-only
[root@node1 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   17G  1.7G   16G  10% /
devtmpfs                 982M     0  982M   0% /dev
tmpfs                    993M     0  993M   0% /dev/shm
tmpfs                    993M  8.7M  984M   1% /run
tmpfs                    993M     0  993M   0% /sys/fs/cgroup
/dev/sda1               1014M  125M  890M  13% /boot
tmpfs                    199M     0  199M   0% /run/user/0
/dev/loop0               110M  110M     0 100% /var/ftp/ceph
[root@node1 ~]# ll /var/ftp/ceph
total 10
dr-xr-xr-x 3 root root 2048 Jul 25 11:38 noarch
dr-xr-xr-x 3 root root 8192 Jul 25 11:38 x86_64

步骤一:安装ceph-deploy

部署ceph集群:

设置环境变量:export CEPH_DEPLOY_REPO_URL=ftp://node1/ceph/

部署工具:

yum install /var/ftp/ceph/noarch/ceph-deploy-2.0.1-0.noarch.rpm

在node1上创建工作目录:

[root@node1 ~]# mkdir /ceph-cluster
[root@node1 ~]# cd /ceph-cluster/
[root@node1 ceph-cluster]#

步骤二:创建ceph集群,在/ceph-cluster目录下生成配置文件。

创建集群,首先设置mon节点:

        配置扩展源:

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

        首先需要安装pip工具,然后利用pip命令安装模块:

[root@localhost ~]# yum install python2-pip -y
[root@localhost ~]#  pip install distribute -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

        设置mod节点:

[root@localhost ceph-cluster]# ceph-deploy new node1 node2 node3
[root@localhost ceph-cluster]# ll
total 16
-rw-r--r-- 1 root root  244 Jul 26 10:45 ceph.conf
-rw-r--r-- 1 root root 4869 Jul 26 10:45 ceph-deploy-ceph.log
-rw------- 1 root root   73 Jul 26 10:45 ceph.mon.keyring

给所有节点安装ceph相关软件包:

[root@localhost ceph-cluster]# ceph-deploy install node1 node2 node3

添加监控节点:

初始化所有节点的mon服务,也就是启动mon服务:

[root@localhost ceph-cluster]# ceph-deploy mon create-initial

创建ceph管理节点(mgr):

[root@localhost ceph-cluster]# ceph-deploy mgr create node1 node2 node3 

步骤三:准备日志磁盘分区:

注意:sdb1和sdb2两个分区用来做存储服务器的journal缓存盘。生产中固态用于缓存,sas用户共享。

1、格式化sdb:

[root@localhost ceph-cluster]# for i in node{1..3}
> do
>  ssh $i parted /dev/sdb mklabel gpt
>  ssh $i parted /dev/sdb mkpart primary 1 50%
>  ssh $i parted /dev/sdb mkpart primart 50% 100%
> done

2、磁盘分区后的默认权限无法让ceph对其进行读写操作,需要修改权限。

[root@localhost ceph-cluster]# for i in node{1..3}
> do
>  ssh $i chown ceph.ceph /dev/sdb1 /dev/sdb2
> done

以上操作服务器重启后再次重值导致授权失效,所以需要把规则写到配置文件实现永久有效。

[root@localhost ceph-cluster]# vim /etc/udev/rules.d/70-sdb.rules

 复制到其他osd节点:

[root@localhost ceph-cluster]# for i in node{2..3}
> do
>  scp /etc/udev/rules.d/70-sdb.rules $i:/etc/udev/rules.d/
> done
70-sdb.rules                                  100%  104    68.7KB/s   00:00    
70-sdb.rules                                  100%  104    63.1KB/s   00:00 

步骤四:创建OSD存储空间

1、初始化清空磁盘数据(仅在node1操作):

[root@localhost ceph-cluster]# for i in node{1..3}
> do
>  ssh $i parted /dev/sdc mklabel gpt
>  ssh $i parted /dev/sdd mklabel gpt
> done

清理磁盘:

[root@localhost ceph-cluster]# for i in node{1..3}
> do 
>   ssh $i ceph-volume lvm zap /dev/sdc
>   ssh $i ceph-volume lvm zap /dev/sdd
> done

2、创建OSD存储空间:

// 创建osd存储设备,sdc提供存储空间,sdb1提供缓存

[root@localhost ceph-cluster]#  ceph-deploy osd create --data /dev/sdc --journal /dev/sdb1 --data /dev/sdd --journal /dev/sdb2 node1
[root@localhost ceph-cluster]# ceph-deploy osd create --data /dev/sdc --journal /dev/sdb1 --data /dev/sdd --journal /dev/sdb2 node2
[root@localhost ceph-cluster]# ceph-deploy osd create --data /dev/sdc --journal /dev/sdb1 --data /dev/sdd --journal /dev/sdb2 node3

步骤五:查看ceph状态,验证

在主节点生成的ceph.client.admin.keyring文件拷贝至所有节点的/etc/ceph下:

[root@localhost ceph-cluster]# ceph-deploy admin node1 node2 node3
[root@localhost ceph-cluster]# ceph health
HEALTH_OK
[root@localhost ceph-cluster]# ceph -s
  cluster:
    id:     6731e8de-3bf6-44ff-866c-b444da73b070
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum node1,node3,node2 (age 3h)
    mgr: node1(active, since 63m), standbys: node2, node3
    osd: 3 osds: 3 up (since 3m), 3 in (since 3m)
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   3.0 GiB used, 27 GiB / 30 GiB avail
    pgs:     
 

步骤六:启用dashboard

自 nautilus开始,dashboard作为一个单独的模块独立出来了,使用时需要在所有的mgr节点上单独安装

[root@localhost ceph-cluster]# for i in node{1..3}
> do
>  ssh $i yum install -y ceph-mgr-dashboard
> done

启用dashboard:

[root@localhost ceph-cluster]# ceph mgr module enable dashboard --force

默认启用SSL/TLS,所以需要创建自签名根证书:

[root@localhost ceph-cluster]#  ceph dashboard create-self-signed-cert
Self-signed certificate created

创建具有管理员角色的用户:

[root@localhost ceph-cluster]# ceph dashboard ac-user-create admin admin administrator
{"username": "admin", "lastUpdate": 1658829730, "name": null, "roles": ["administrator"], "password": "$2b$12$El3UC3jmCNWtz0IjqubFJ.Jj3NS6WlG2c4ysURCBFd4Wk21V0/Voq", "email": null}

查看ceph-mgr服务:

[root@localhost ceph-cluster]# ceph mgr services
{
    "dashboard": "https://node1:8443/"
}

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1027994.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号