CEPH分布式存储部署

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

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

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

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


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


注意:配置写入完成后,在每台设备上面互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
sudo ssh-keygen
sudo ssh-copy-id it@node1
sudo ssh-copy-id it@node2
sudo ssh-copy-id it@node3


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

Host node2
Hostname node2
User it

Host node3
Hostname node3
User it

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设备操作

注意:我这里选择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

更改完如下图
CEPH分布式存储部署_第1张图片

启动一下ntp服务
systemctl start ntpd
systemctl enable ntpd

在全部节点上用root用户执行如下命令:
yum install ntpdate  -y
ntpdate  时间服务器ip

7.ceph 集群部署

注意:以下操作没有特别说明,均在admin设备操作
创建集群操作目录
[root@admin ~]# su - it
[it@admin ~]$ sudo  mkdir 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 cluster/   # cd 回到家目录
[it@admin cluster]$ sudo  ceph-deploy new node1
[it@admin 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  #admin设备之前有创建过这个文件,可以把里面的内容替换掉,如下
[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

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

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

8.集群初始化

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

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

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

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

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

如下所示,就表示ok了
CEPH分布式存储部署_第2张图片
9.在ceph.node1上面配置Dashboard

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

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

开启ceph-mgr 管理域
[it@node1 ~]$ sudo ceph-mgr -i node1

查看ceph状态,确认mgr的状态为active
[it@node1 ~]$ 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地址:
[it@node1 ~]$ sudo ceph config-key set mgr/dashboard/node1/server_addr 192.168.121  ##这个是node1的ip

创建存储池:
[it@node1 ~]$ sudo ceph osd pool create kvm-backup  733 733  #这里的kvm-backup为pool名字,名字随意取

#扩展:少于 5 个 OSD 时可把 pg_num 设置为 128
OSD 数量在 510 个时,可把 pg_num 设置为 512
OSD 数量在 1050 个时,可把 pg_num 设置为 4096
**注意:这个地方一定要注意,我22个osd,理论上需要写4096,但是4096需要后面加参数,我这里按计算公式来计算出来的 22*100/3 (22为osd数量、100是默认值、3是副本数量,副本数量默认是3

初始化存储池:
[it@node1 ~]$ sudo rbd pool init kvm-backup

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

到这里ceph分布式集群部署完成!
CEPH分布式存储部署_第3张图片
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
注意:若不是用的默认存储池名rbd,需要指定一下存储池的名字,如下
sudo rbd create  --pool backup(这个是存储池名) --image kvm-backup(这个是镜像名) --image-format 2 --image-feature layering --size 20480000(大小为20T)

9.将client节点映射镜像到主机(ceph集群)
sudo rbd map ceshi10 --name client.admin
没有报错的话应该会提示/dev/rbd0
注意:如果不是默认的rbd存储池,映射的时候需要加上存储池名字,如下
 sudo rbd map backup/kvm-backup --name client.admin
 
10.将client节点格式化块设备
sudo mkfs.xfs /dev/rbd/rbd/ceshi10 #建议xfs格式
如果格式化的空间较大,这里需要的时间比较久,等待即可

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

集群最终的监控状态如下,至此ceph分布式存储部署完成
CEPH分布式存储部署_第4张图片

你可能感兴趣的:(linux,分布式,服务器,linux,ceph)