CEPH分布式存储部署

ceph支持块存储、对象存储、cephfs文件共享系统,概念性的东西这里不过多介绍,请自行查阅ceph分布式存储相关资料,本文主要介绍ceph分布式集群部署

操作系统:centos7.9 最小安装
节点配置:ceph.node1+ceph.node2+ceph.node3 Dell R730xd 3台(单台配置 256G内存+4块128G SSd+10块8T HDD),4块ssd raid10 数据盘未作raid,节点多有条件的可以做raid10
集群组成:admin master节点+node1存储节点+node2存储节点+node3存储节点+client 客户端

1.主机名解析,写入到hosts文件,此操作在所有设备上面操作

设备对应关系如下:
主机名                     ip                          角色
admin                 192.168.1.20          master控制节点,安装ceph-deploy
ceph.node1            192.168.1.21          mon、mgr、osd
ceph.node2            192.168.1.22          osd
ceph.node3            192.168.1.23          osd
ceph.client           192.168.1.24          osd

注意:ceph.client我这里是作为测试用途,实际的client客户端可能是任意的与master节点路由可达的linux虚拟机,master节点与node节点也并不一定是内网,请根据实际业务场景来部署
vim /etc/hosts
192.168.1.20    admin
192.168.1.21    ceph.node1
192.168.1.22    ceph.node2
192.168.1.23    ceph.node3
192.168.1.24    ceph.client 

注意:配置写入完成后,在每台设备上面互ping一下主机名,看看能否正常解析,这点很重要,不要嫌麻烦

2.关闭所有设备的防火墙和selinux

此步骤省略,请自行关闭,不会的百度一下
注意,若设备含有公网地址,ssh默认22端口先不要更改,否则等会部署ceph节点的时候没法加ssh端口号,会被拒绝连接,等所有配置都完成后,再开启防火墙放通相应的端口

3.创建一个普通用户用作后续集群部署的用户,并赋予sudo权限,所有设备上面均需要操作

创建用户并设置密码
useradd it
passwd it

赋予新用户sudo权限
vim /etc/sudoers
root ALL=(ALL) ALL 找到这行,在下面新增一行,如下
it ALL=(root) NOPASSWD:ALL

4.配置master控制节点ssh免密登录所有设备,在admin设备上面操作

[root@admin ~]# su - it
[it@admin ~]$ ssh-keygen
[it@admin ~]$ ssh-copy-id [email protected]
[it@admin ~]$ ssh-copy-id [email protected]
[it@admin ~]$ ssh-copy-id [email protected]
[it@admin ~]$ ssh-copy-id [email protected]

在admin设备上用root用户添加.ssh/config配置文件,这样ceph-deploy 就能用所建的用户名登录ceph节点了,如下
[root@admin ~]#mkdir ~/.ssh
[root@admin ~]# vim ~/.ssh/config
Host ceph.node1
Hostname ceph.node1
User it

Host ceph.node2
Hostname ceph.node2
User it

Host ceph.node3
Hostname ceph.node3
User it

注意:ceph.client 可以配置也可以不配置,我这里不作配置,以上配置保存退出即可

5.在admin设备安装ceph-deploy ,用root用户执行

配置ceph yum源
[root@admin ~]# vim /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

重建一下yum元数据,并开启yum缓存
yum clean all
yum makecache
[root@admin ~]# vim /etc/yum.conf
keepcache=1

安装ceph-deploy
[root@admin ~]# yum install ceph-deploy -y

6.安装ntp,所有设备均需要操作

注意:我这里选择admin设备作为ntp时间服务器,其它设备均向admin设备同步时间
[root@admin ~]# yum install -y ntp     #所有设备都需要执行
[root@admin ~]# vim /etc/ntp.conf  #有4行server的位置,把那4行server行注释掉,填写以下两行
server 127.127.1.0 # local clock
fudge  127.127.1.0 stratum 10

更改完如下图
在这里插入图片描述

启动一下ntp服务
[root@admin ~]# systemctl start ntpd
[root@admin ~]# systemctl enable ntpd

在其它设备用root用户执行如下命令:
yum install ntpdate  -y
ntpdate  时间服务器ip

7.ceph 集群部署

注意:以下操作没有特别说明,均在admin设备操作
创建集群操作目录
[root@admin ~]# su - it
[it@admin ~]$ sudo  mkdir ceph.cluster   ## ceph-deploy命令需要在此目录执行

依赖安装
[it@admin ~]$ sudo wget -c https://files.pythonhosted.org/packages/5f/ad/1fde06877a8d7d5c9b60eff7de2d452f639916ae1d48f0b8f97bf97e570a/distribute-0.7.3.zip
[it@admin ~]$ sudo unzip distribute-0.7.3.zip  #若没有unzip命令先安装yum -y install unzip
[it@admin ~]$ cd distribute-0.7.3
[it@admin distribute-0.7.3]$ sudo python setup.py install

集群创建
[it@admin ~]$ cd ceph.cluster/
[it@admin ceph.cluster]$ sudo  ceph-deploy new ceph.node1
[it@admin ceph.cluster]$ ls
ceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring  #集群创建成功后会有这三个文件

安装luminous-12.2.13
配置国内ceph yum源,所有设备均操作
sudo yum -y install epel-release
sudo 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=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1

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

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
保存退出后重建一下yum元数据
sudo yum clean all
sudo yum makecache

在ceph.node1 ceph.node2 ceph.node3 ceph.client 上面安装ceph和ceph-radosgw
sudo yum install ceph ceph-radosgw  -y   #以上设备都需要执行

验证:在node1、node2、node3、client上面看一下ceph版本
sudo ceph --version
ceph version 12.2.13 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable)

8.集群初始化

在admin设备上面用 it 用户执行,初始化mon
[it@admin ceph.cluster]$ sudo ceph-deploy mon create-initial

赋予各个节点使用命令免用户名权限:
[it@admin ceph.cluster]$ sudo ceph-deploy admin ceph.node1 ceph.node2 ceph.node3

安装ceph-mgr:只有luminous才有,为使用dashboard做准备
[it@admin ceph.cluster]$ sudo ceph-deploy mgr create ceph.node1   ##我这里规划的ceph.node1

创建osd
注意:各个节点上提供存储空间的磁盘大小不能太小,最好50G以上,注意检查磁盘名字
[it@admin ceph.cluster]$ sudo  ceph-deploy osd create --data /dev/sdb ceph.node1  #这里省略,我有8块存储磁盘/dev/sdb /dev/sdc /dev/sdd ......
[it@admin ceph.cluster]$ sudo  ceph-deploy osd create --data /dev/sdb ceph.node2  #这里省略,同上
[it@admin ceph.cluster]$ sudo  ceph-deploy osd create --data /dev/sdb ceph.node3  #这里省略,同上
命令中/dev/sdb是在各个节点上为osd准备的空闲磁盘(无需分区格式化,如果有分区需要指定具体分区),个人建议不要分区

查看集群状态:
[it@admin ceph.cluster]$ ssh ceph.node1 sudo ceph -s
如果显示health_ok,3个osd up就成功了

如下所示,就表示ok了
在这里插入图片描述
9.在ceph.node1上面配置Dashboard

把ceph-mgr和ceph-mon安装在同一个主机上,最好只有一个ceph-mgr
[[email protected] ~]# su - it

创建管理域密钥
[[email protected] ~]$ sudo ceph auth get-or-create mgr.node1 mon 'allow profile mgr' osd

开启ceph-mgr 管理域
[[email protected] ~]$ sudo ceph-mgr -i ceph.node1

查看ceph状态,确认mgr的状态为active
[[email protected] ~]$ sudo ceph status
cluster:
    id:     aec06bc6-428c-49ff-a2c1-2d84808bcb54
    health: HEALTH_OK
 
  services:
    mon: 1 daemons, quorum node1
    mgr: node1(active, starting)
    osd: 3 osds: 3 up, 3 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0B
    usage:   3.01GiB used, 12.0GiB / 15.0GiB avail
    pgs:

打开dashboard模块:
[[email protected] ~]$ sudo ceph mgr module enable dashboard

绑定开启dashboard模块的ceph-mgr节点的ip地址:
[[email protected] ~]$ sudo ceph config-key set mgr/dashboard/node1/server_addr 192.168.121  ##这个是node1的ip

创建存储池:
[[email protected] ~]$ sudo ceph osd pool create rbd 128 128
#扩展:少于 5 个 OSD 时可把 pg_num 设置为 128
OSD 数量在 510 个时,可把 pg_num 设置为 512
OSD 数量在 1050 个时,可把 pg_num 设置为 4096

初始化存储池:
[[email protected] ~]$ sudo rbd pool init rbd

浏览器登录:
http://192.168.1.21:7000

到这里ceph分布式集群部署完成!
在这里插入图片描述
10.client端挂载使用,client端我这里直接以命令行的形式表述

1.yum环境配置
yum -y install epel-release
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=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1

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

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

yum clean all
yum makecache
yum  -y install python-setuptools


2.创建ceph存储池用户it
useradd it
passwd it

3.授权cephu用户sudo权限
vim /etc/sudoers
在root    ALL=(ALL)       ALL行下面新增一行
it  ALL=(ALL)       NOPASSWD:ALL

4.切换到cephu用户登录
su - it

5.安装ceph
sudo yum install ceph ceph-radosgw  -y
安装完成后用ceph --version 查看版本信息是否为12.2.13

6.上传mgr节点授权信息到/etc/ceph/目录,并授权可读权限(就是前文提到的那三个文件,client安装完是没有授权文件的,需要手动上传)
cd /etc/ceph
sudo chmod +r /etc/ceph/ceph.client.admin.keyring
ls
-rw-r--r-- 1 root root  63 1222 21:08 ceph.client.admin.keyring
-rw-r--r-- 1 root root 221 1223 11:30 ceph.conf
-rw-r--r-- 1 root root  92 131 2020 rbdmap

7.修改ceph.conf文件,解决映射镜像时出现问题
sudo vi /etc/ceph/ceph.conf
rbd_default_features = 1

8.client节点创建块设备镜像:单位是M,这里创建4个G(根据存储池大小按需分配)
sudo rbd create ceshi10 --size 40960

9.将client节点映射镜像到主机(ceph集群)
sudo rbd map ceshi10 --name client.admin
没有报错的话应该会提示/dev/rbd0

10.将client节点格式化块设备
sudo mkfs.xfs /dev/rbd/rbd/ceshi10

11.挂载刚刚格式化完的块设备
sudo mkdir /ceshi
sudo mount /dev/rbd/rbd/ceshi10  /ceshi
cd /ceshi
进入块设备测试一下看看能不能正常使用
sudo mkdir 111
ls
111
 
说明:client端不建议直接使用root用户来操作!

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>