分布式存储-Ceph

分布式存储-Ceph

一、分布式存储简介

1.1 分布式存储
分开存储: 一个文件,是不可以分开存储

硬盘, 机械硬盘:
真实数据块+元数据区

所有的文件: 元数据,真实数据

把元数据和真实数据组织好:元数据里里面指定的一个完整真实数据块由哪两个数据块组成

1.2 分布式存储
最核心的两个组件:
元数据服务器: 组织所有数据块的元数据
真实服务数据块服务器:将我的数据打散成小块存储的服务器

MooseFS, MogileFS, ceph

性能好, 可靠性, 扩展性

redhat官方文档去看, ceph.org

副本:EC

1.3 ceph组件
OSD: Object Stroage Deamon, 用来存储真实数据的, 处理数据复制,通过我们的monitor这个角色监控所有的数据节点(我们数据的节点至少>=存储副本数)

monitor: 维护集群状态,包括各个校色的监控,OSD系统状态

MDS: 元数据服务器, MetaData Server, 可以在元数据服务器上进行数据维护

二、分布式存储-Ceph的搭建

2.1环境准备

2.1.1软件版本和 IP 地址规划

主机名

IP

系统

角色

Cga35

10.27.17.35

CentOS7.5

admin,osd,mon作为管理和监控节点

Cga36

10.27.17.36

CentOS7.5

osd,mds

Cga37

10.27.17.37

CentOS7.5

osd,mds

Cga27

10.27.17.27

CentOS7.5

clients

Cga28

10.27.17.28

CentOS7.5

clients

ceph 版本

ceph v10.2.11

(注:此环境中的两个IP段可以互通)

 

2.1.2 每个节点修改主机名

[root@cga35~]# hostnamectl set-hostname cga35

[root@cga36~]# hostnamectl set-hostname cga36

[root@cga37~]# hostnamectl set-hostname cga37

[root@cga27~]# hostnamectl set-hostname cga27

[root@cga28~]# hostnamectl set-hostname cga28

2.1.3 每个节点修改 HOSTS 文件

[root@cga35~]#vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

10.27.17.35   cga35

10.27.17.36   cga36

10.27.17.37   cga37

10.27.17.27   cga27

10.27.17.28   cga28

覆盖其他服务器hosts

[root@cga35~]#scp  /etc/hosts   10.27.17.27:/etc/hosts

[root@cga35~]#scp  /etc/hosts   10.27.17.28:/etc/hosts

[root@cga35~]#scp  /etc/hosts   10.27.10.35:/etc/hosts

[root@cga35~]#scp  /etc/hosts   10.27.10.36:/etc/hosts

[root@cga35~]#scp  /etc/hosts   10.27.10.37:/etc/hosts

2.1.3 每个节点关闭防火墙和 selinux、时间更新同步

[root@cga35~]# systemctl stop firewalld

[root@cga35~]# iptables -F # iptables –X

[root@cga35~]# setenforce 0

[root@cga35~]# yum install -y ntp

[root@cga35~]# systemctl start ntpd

[root@cga35~]# systemctl enable ntpd

[root@cga35~]# ntpdatentp1.aliyun.com

其他服务器同上操作

 

2.1.4  SSH免密码登录设置(所有节点需要操作)

[root@cga35~]#ssh-keygen

[root@cga35~]#ssh-copy-id  cga35

[root@cga35~]#ssh-copy-id  cga36

[root@cga35~]#ssh-copy-id  cga37

[root@cga35~]#ssh-copy-id  cga27

[root@cga35~]#ssh-copy-id  cga28

2.1.5 节点OSD 准备目录准备并挂载

cga35作为管理.osd.mon节点;cga36cga37osdmds;cga27cga28作为客户端。cga35cga36cga37服务器增加一块硬盘/dev/sdb实验,创建目录并挂载到/var/local/osd{0,1,2})

[root@cga35~]#fdisk  /dev/sdb

[root@cga35~]#mkfs.xfs /dev/sdb1

[root@cga35~]#mkdir  /var/local/osd{0,1,2}

[root@cga35~]#vim/etc/fstab

添加以下

/dev/sdb1/       var/local/osd0       xfs     defaults    0   0

[root@cga35~]#mount–a

[root@cga35~]#df

Filesystem1K-blocksUsedAvailableUse%Mountedon

/dev/sda33936278839366483542614011%/

tmpfs18653201865320%/run/user/0

/dev/sdb14192154032944418885961%  /var/local/osd0

Cga36、cga37同上操作

 

2.2 部署阶段

2.2.1  Cga35管理节点安装ceph-deploy工具

1步:增加yum配置文件(各节点都要配置ceph源)

[root@cga35home]#cd/etc/yum.repos.d/

[root@cga35yum.repos.d]#mkdir    bak

[root@cga35yum.repos.d]#mv  *.repo   bak

[root@cga35yum.repos.d]#mv  ./bak/CentOS-Base.repo   ./

[root@cga35yum.repos.d]#wget -O  /etc/yum.repos.d/epel.repo  http://mirrors.aliyun.com/repo/epel-7.repo

[root@cga35yum.repos.d]#vim  epel.repo

添加以下内容

[ceph]

name=ceph

baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/

gpgcheck=0

priority=1

[ceph-noarch]

name=cephnoarch

baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/

gpgcheck=0

priority=1

[cephsource]

name=Cephsourcepackages

baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS

gpgcheck=0

priority=1

[root@cga35~]#yum   clean  all

[root@cga35~]#yum  makecache

2步:更新软件源并安装ceph-deploy管理工具

[root@cga35yum.repos.d]#yum install –y  ceph-deploy

 

2.2.2创建monitor集群服务

[root@cga35yum.repos.d]#mkdir /etc/ceph && cd /etc/ceph

[root@cga35ceph]#ceph-deploy new  cga35

[root@cga35ceph]#ls

ceph.conf   ceph-deploy-ceph.log       ceph.mon.keyring

Ceph配置文件、一个monitor密钥环和一个日志文件

 

修改配置文件中的副本数量

[root@cga35 ceph]#vim  ceph.conf

[global]

fsid=f6299f08-ce71-4de9-9e65-ba8e1beb2c3b

mon_initial_members=cga35

mon_host=10.27.17.35

auth_cluster_required=cephx

auth_service_required=cephx

auth_client_required=cephx

osd_pool_default_size=2

2.2.3 安装 ceph 服务

在所有节点上安装:

[root@cga35ceph]#ceph-deploy install cga35 cga36 cga37 cga27 cga28

由于下载比较慢,因些要报错。解决依赖问题,先安装cga35、cga36、cga37、cga27、cga28依赖

[root@cga36yum.repos.d]#yum  -y  install  ceph-release

[root@cga36yum.repos.d]#yum  install  ceph  ceph-radosgw

[root@cga37yum.repos.d]#yum  -y  install   ceph-release

[root@cga37yum.repos.d]#yum   install  ceph   ceph-radosgw

[root@cga27yum.repos.d]# yum  -y  install   ceph-release

[root@cga27yum.repos.d]# yum   install  ceph   ceph-radosgw

[root@cga28yum.repos.d]# yum  -y  install   ceph-release

[root@cga28yum.repos.d]# yum   install  ceph   ceph-radosgw

 

安装ceph-monitor

[root@cga35ceph]#ceph-deploy   mon  create  cga35

[root@cga35ceph]#ceph-deploy  gatherkeys   cga35

 

2.3 添加 OSD 到集群

部署osd服务,添加osd节点(所有osd节点执行)

2.3.1 检查 OSD 节点上所有可用的磁盘

[root@cga35 ceph]# ceph-deploy disk list cga35 cga36 cga37 cga27 cga28

2.3.2创建osd

[root@cga35ceph]#ceph-deploy osd prepare cga35:/var/local/osd0/ cga36:/var/local/osd1/ cga37:/var/local/osd2

2.3.3 激活 OSD

[root@cga35ceph]#ceph-deploy osd activate cga35:/var/local/osd0/  cga36:/var/local/osd1/ cga37:/var/local/osd2

报错

[cga35][WARNIN]2019-08-0602:02:35.9986667f8b367b2ac0-1OSD::mkfs:ObjectStore::mkfsfailedwitherror-13

[cga35][WARNIN]2019-08-0602:02:35.9987097f8b367b2ac0-1**ERROR:errorcreatingemptyobjectstorein/home/ceph01:(13)Permissiondenied

[cga35][WARNIN]

[cga35][ERROR]RuntimeError:commandreturnednon-zeroexitstatus:1

[ceph_deploy][ERROR]RuntimeError:Failedtoexecutecommand:/usr/sbin/ceph-disk-vactivate--mark-initsystemd--mount/home/

解决:

[root@cga35ceph]#chmod  -R 777  /var/local/osd0/

[root@cga36ceph]#chmod  -R 777  /var/local/osd1/

[root@cga37ceph]#chmod  -R 777  /var/local/osd2/

[root@cga35ceph]#ceph-deploy osd prepare cga35:/var/local/osd0/  cga36:/var/local/osd1/ cga37:/var/local/osd2

[root@cga35ceph]#ceph-deploy osd activate cga35:/var/local/osd0/  cga36:/var/local/osd1/ cga37:/var/local/osd2

2.3.4 检查 ceph 状态

[root@cga35ceph]#ceph-deploy osd  list cga35:/var/local/osd0/  cga36:/var/local/osd1/  cga37:/var/local/osd2

查看运行情况

[root@cga35ceph]#ceph  health

HEALTH_OK

表示正常

(用ceph-deploy把配置文件和admin密钥拷贝到所有节点,这样每次执行Ceph命令行时就无需指定monitor地址和ceph.client.admin.keyring了)

[root@cga35ceph]#ceph-deploy  admin  cga35  cga36  cga37

部署mds服务

[root@cga35ceph]#ceph-deploy mds  create    cga36     cga37

 

 [root@cga35ceph]#ceph-s

clustera872738e-f89b-4852-b33c-33aaf952c699

healthHEALTH_OK

monmape1:1monsat{cga35=10.27.17.35:6789/0}

electionepoch3,quorum0cga35

osdmape15:3osds:3up,3in

flagssortbitwise,require_jewel_osds

pgmapv28:64pgs,1pools,0bytesdata,0objects

15681MBused,104GB/119GBavail

64active+clean

 

以上基本上完成了ceph存储集群的搭建。

 

2.4 创建文件系统

2.4.1 先查看管理节点状态

[root@cga35ceph]#ceph mds  stat

e16: 1/1/1 up {0=cga37=up:active}, 1 up:standby

2.4.2先查是否有文件系统

root@cga35ceph]#ceph fs ls

Nofilesystemsenabled

2.4.3创建存储池

[root@cga35ceph]#ceph  osd  pool  create  cephfs_data  128

pool'cephfs_data'created

[root@cga35ceph]#ceph  osd  pool  create  cephfs_metadata  128

pool'cephfs_metadata'created

2.4.4创建文件系统

[root@cga35ceph]#ceph fs  new  128 cephfs_metadata  cephfs_data

New fs with metadata  pool2  and  datapool1

[root@cga35 ceph]# ceph fs ls

name: 128, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

 [root@cga35ceph]#ceph mds  stat

e6:1/1/1up{0=cga37=up:active},1up:standby

2.5客户端挂载(cga27、cga28)

2.5.1内核驱动挂载Ceph文件系统准备

拷贝密钥到cga27cga28

[root@cga35ceph]#scp  ceph.client.admin.keyring 10.27.17.27:/etc/ceph/

[root@cga35ceph]#scp  ceph.client.admin.keyring  10.27.17.28:/etc/ceph/

2.5.2修改配置文件

[root@cga27ceph]#vim  /etc/ceph/ceph.client.admin.keyring

AQCA/khdyJJBMhAAMMqBcIyTrrez5L3qLTBfKw==      

[root@cga28ceph]#vim  /etc/ceph/ceph.client.admin.keyring

AQCA/khdyJJBMhAAMMqBcIyTrrez5L3qLTBfKw==

2.5.3挂载web服务器的数据目录

 [root@cga27 data]# mount -t ceph  10.27.17.35:6789:/ /usr/local/nginx/html/nextcloud/data/ -o name=admin,secretfile=/etc/ceph/ceph.client.admin.keyring

[root@cga27 data]# df

Filesystem              1K-blocks     Used Available Use% Mounted on

/dev/mapper/centos-root  38770180  4055392  34714788  11% /

devtmpfs                   920416        0    920416   0% /dev

tmpfs                      932652        0    932652   0% /dev/shm

tmpfs                      932652     9768    922884   2% /run

tmpfs                      932652        0    932652   0% /sys/fs/cgroup

/dev/sda1                 1038336   145120    893216  14% /boot

tmpfs                      186532        0    186532   0% /run/user/0

10.27.17.35:6789:/      125763584 16060416 109703168  13% /usr/local/nginx/html/nextcloud/data

 

[root@cga28 ~]# mount -t ceph  10.27.17.35:6789:/ /usr/local/nginx/html/nextcloud/data/ -o name=admin,secretfile=/etc/ceph/ceph.client.admin.keyring

[root@cga28 ~]# df

Filesystem              1K-blocks     Used Available Use% Mounted on

/dev/mapper/centos-root  38770180  3755960  35014220  10% /

devtmpfs                   486752        0    486752   0% /dev

tmpfs                      498988        0    498988   0% /dev/shm

tmpfs                      498988     7860    491128   2% /run

tmpfs                      498988        0    498988   0% /sys/fs/cgroup

/dev/sda1                 1038336   145120    893216  14% /boot

tmpfs                       99800        0     99800   0% /run/user/0

10.27.17.35:6789:/      125763584 16060416 109703168  13% /usr/local/nginx/html/nextcloud/data

以上Ceph服务搭建完成

注:在安装Ceph时需要,首先要进行规化好用几个盘,几台服务器。准备多少个盘来做

posted @ 2019-10-04 01:38  科子  阅读(666)  评论(0编辑  收藏  举报