Ceph分布式存储全网详细,亲测可以安装

Ceph简单搭建

Ceph基础介绍
​ Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。在虚拟化领域里,比较常用到的是Ceph的块设备存储,比如在OpenStack项目里,Ceph的块设备存储可以对接OpenStack的cinder后端存储、Glance的镜像存储和虚拟机的数据存储,比较直观的是Ceph集群可以提供一个raw格式的块存储来作为虚拟机实例的硬盘。

​ Ceph相比其它存储的优势点在于它不单单是存储,同时还充分利用了存储节点上的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的良好设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且随着规模的扩大性能并不会受到影响。

Ceph的核心组件

Ceph的核心组件包括Ceph OSD、Ceph Monitor和Ceph MDS。

  Ceph OSD:OSD的英文全称是Object Storage Device,它的主要功能是存储数据、复制数据、平衡数据、恢复数据等,与其它OSD间进行心跳检查等,并将一些变化情况上报给Ceph Monitor。一般情况下一块硬盘对应一个OSD,由OSD来对硬盘存储进行管理,当然一个分区也可以成为一个OSD。

  Ceph OSD的架构实现由物理磁盘驱动器、Linux文件系统和Ceph OSD服务组成,对于Ceph OSD Deamon而言,Linux文件系统显性的支持了其拓展性,一般Linux文件系统有好几种,比如有BTRFS、XFS、Ext4等,BTRFS虽然有很多优点特性,但现在还没达到生产环境所需的稳定性,一般比较推荐使用XFS。

  伴随OSD的还有一个概念叫做Journal盘,一般写数据到Ceph集群时,都是先将数据写入到Journal盘中,然后每隔一段时间比如5秒再将Journal盘中的数据刷新到文件系统中。一般为了使读写时延更小,Journal盘都是采用SSD,一般分配10G以上,当然分配多点那是更好,Ceph中引入Journal盘的概念是因为Journal允许Ceph OSD功能很快做小的写操作;一个随机写入首先写入在上一个连续类型的journal,然后刷新到文件系统,这给了文件系统足够的时间来合并写入磁盘,一般情况下使用SSD作为OSD的journal可以有效缓冲突发负载。

  Ceph Monitor:由该英文名字我们可以知道它是一个监视器,负责监视Ceph集群,维护Ceph集群的健康状态,同时维护着Ceph集群中的各种Map图,比如OSD Map、Monitor Map、PG Map和CRUSH Map,这些Map统称为Cluster Map,Cluster Map是RADOS的关键数据结构,管理集群中的所有成员、关系、属性等信息以及数据的分发,比如当用户需要存储数据到Ceph集群时,OSD需要先通过Monitor获取最新的Map图,然后根据Map图和object id等计算出数据最终存储的位置。

  Ceph MDS:全称是Ceph MetaData Server,主要保存的文件系统服务的元数据,但对象存储和块存储设备是不需要使用该服务的。

查看各种Map的信息可以通过如下命令:ceph osd(mon、pg) dump

所有节点安装

1、Ceph-deploy安装ceph
基本环境

192.168.0.250   node1
192.168.0.251   node2

2、准备磁盘
所有节点执行:

系统盘/dev/sda OSD盘 /dev/sdb 俩台机器都挂俩块盘,一块系统盘,一块osd
测试时使用的磁盘不要太小,否则后面添加磁盘时会报错,建议磁盘大小为20G及以上。

检查磁盘

fdisk -l /dev/sdb 

格式化磁盘

sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
mkfs.xfs /dev/sdb -f

查看磁盘格式

sudo blkid -o value -s TYPE /dev/sdb
 mkdir /var/local/osd{0,1,2}
mount /dev/sdb /var/local/osd0/   # node1执行
mount /dev/sdb /var/local/osd1/   #node2执行

3、 配hosts和基本环境:
所有节点执行:

[root@node1 ~]# vim /etc/hosts
192.168.0.250 node1
192.168.0.251 node2

**关闭selinxu和防火墙**
[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# systemctl disable firewalld
[root@node1 ~]# cat /etc/selinux/config 
SELINUX=disabled
[root@node1 ~]# setenforce 0

4、时间同步:
安装
所有节点执行:

yum -y install ntp
ntpdate ntp1.aliyun.com

5、允许无密码SSH登录

node1上执行


ssh-keygen
ssh-copy-id node1
ssh-copy-id node2

6、配置主机名:

hostnamectl set-hostname node1   ##node1执行
hostnamectl set-hostname node2    ##node2执行
bash  ##所有节点执行:

7、配置ceph.repo
所有节点执行:

[root@node1 ~]# vim /etc/yum.repos.d/ceph.repo
[ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=1
priority=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

[ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
priority=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=0
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1

8、安装ceph-deploy:
所有节点执行:

yum install epel-release -y ##华为源
yum list | grep ceph 
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum makecache
yum update -y
yum install -y ceph-deploy

9、创建一个 Ceph 存储集群,它有一个 Monitor 和两个 OSD 守护进程
node1执行:

mkdir /etc/ceph && cd /etc/ceph
ceph-deploy new node1 node2

一般会遇到个报错:

Traceback (most recent call last):
  File "/usr/bin/ceph-deploy", line 18, in <module>
    from ceph_deploy.cli import main
  File "/usr/lib/python2.7/site-packages/ceph_deploy/cli.py", line 1, in <module>
    import pkg_resources
ImportError: No module named pkg_resources

解决方法:

yum install -y python-setuptools

10、管理节点和osd节点都需要安装ceph 集群:

node1执行:

ceph-deploy install node1 node2  ### 自动安装可能会报错执行下面手动安装(ceph1执行)

所有节点执行:

yum -y install ceph-release && yum -y install ceph ceph-radosgw(所有节点执行,)

ceph-deploy install node1 node2  ### 再次执行(ceph1执行)

11、 存储集群副本个数
node1执行:
在ceph.conf中追加以下内容

vim /etc/ceph/ceph.conf 
osd_pool_default_size = 2 

12、配置MON初始化:
node1执行:

cd /etc/ceph/
ceph-deploy mon create-initial

如果初始化error失败:
在这里插入图片描述
解决方法:
覆盖,然后在执行初始化

ceph-deploy --overwrite-conf config push ceph1 ceph2  
ceph-deploy mon create-initial

13、查看ceph集群状态:
node1执行:

[root@node1 ceph]# ceph -s
  cluster:
    id:     cde3244e-89e0-4630-84d5-bf08c0e33b24
    health: HEALTH_OK
 
  services:
    mon: 1 daemons, quorum ceph1
    mgr: no daemons active
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0B
    usage:   0B used, 0B / 0B avail
    pgs:

14、部署mgr服务模块
node1执行:

ceph-deploy mgr create node1 node2

ceph秘钥拷贝及修改密钥权限
node1执行:

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

[root@node1 ceph]# ceph-deploy admin node1 node2

修改密钥权限(所有节点上执行)

[root@ceph1 ceph] # chmod +r /etc/ceph/ceph.client.admin.keyring
[root@ceph2] # chmod +r /etc/ceph/ceph.client.admin.keyring

15、在/etc/ceph/ceph.conf中添加
node1执行:

[mgr]
mgr modules = dashboard

16、开启ceph
node1执行:

[root@node1 ceph]# ceph mgr dump   
[root@node1 ceph]# ceph mgr module enable dashboard   #启用dashboard模块
[root@node1 ceph]# ceph -s
  cluster:
    id:     cde3244e-89e0-4630-84d5-bf08c0e33b24
    health: HEALTH_OK
 
  services:
    mon: 1 daemons, quorum ceph1
    mgr: node1(active)
    osd: 2 osds: 2 up, 2 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0B
    usage:   2.00GiB used, 30.0GiB / 32.0GiB avail
    pgs:

17、设置dashboard的ip和端口
node1执行:

[root@ceph-node1 ceph]# ceph config-key put mgr/dashboard/server_addr 192.168.0.250
set mgr/dashboard/server_addr
[root@ceph-node1 ceph]# ceph config-key put mgr/dashboard/server_port 7000
set mgr/dashboard/server_port
[root@ceph1 ~]# netstat -tulnp |grep 7000
tcp        0      0 192.168.0.250:7000      0.0.0.0:*               LISTEN      19836/ceph-mgr

18、创建osd
删除磁盘数据
node1执行:

[root@node1 ceph]# ceph-deploy disk zap node1 /dev/sdb
[root@node1 ceph]# ceph-deploy disk zap node2 /dev/sdb

19、创建osd(一共俩个)
node1执行:

[root@node1 ceph]# ceph-deploy osd create node1--data /dev/sdb
[root@node1 ceph]# ceph-deploy osd create node2 --data /dev/sdb

20、这时看下danshboard图:

http://192.168.0.250:7000/

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值