分布式存储-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节点;cga36和cga37作osdmds;cga27和cga28作为客户端。cga35、cga36、cga37服务器增加一块硬盘/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文件系统准备
拷贝密钥到cga27、cga28
[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时需要,首先要进行规化好用几个盘,几台服务器。准备多少个盘来做