Ceph存储之一(centos7 基于 ceph-nautilus 版本搭建 存储集群)

ceph介绍

组件名 解释
RADOSGW 对象网关守护程序
RADOS 存储集群
Monitor 监视器,RADOS的组件,为何整个ceph集群的全局状态
OSD Object Storage Device,RADOS的组件,用于存储资源,即数据盘(一个磁盘一个OSD进程)
MDS ceph元数据服务器,为ceph文件系统存储元数据
RBD 块存储
CEPHFS 文件存储
LIBRADOS 和RADOS 交互的基本库,librados,ceph通过原生协议和RADOS交互

ceph集群搭建步骤

  • 1、角色规划
  • 2、集群安装前准备(免密互认,主机名设定,时间同步,ceph源替换,ceph普通账户创建)
  • 3、安装ceph集群所需软件,并创建集群
  • 4、创建监视器,并开启mgr-ui
  • 5、初始化磁盘,并创建OSD
  • 6、配置OSD,基于Crush Rule 定义高性能SSD 池和HDD 池
  • 7、

第一:角色规划

主机名 主机IP 磁盘配比 角色
ceph50 public-ip:192.168.200.50
cluster-ip:192.168.100.50
sda,sdb,sdc,sdd
sda是系统盘,另外三块数据盘
sdb为ssd,sdc,sdd为hdd
ceph-deploy,monitor,mgr,osd
ceph51 public-ip:192.168.200.51
cluster-ip:192.168.100.51
sda,sdb,sdc,sdd
sda是系统盘,另外三块数据盘
sdb为ssd,sdc,sdd为hdd
monitor,mgr,osd
ceph52 public-ip:192.168.200.52
cluster-ip:192.168.100.52
sda,sdb,sdc,sdd
sda是系统盘,另外三块数据盘
sdb为ssd,sdc,sdd为hdd
monitor,mgr,osd

第二:集群安装前准备

A、IP 配置,分别配置 public-ip和cluster-ip 请自行完成
B、主机名设置,三台主机分别执行属于自己的命令

hostnamectl set-hostname ceph50; hostname ceph50
hostnamectl set-hostname ceph51; hostname ceph51
hostnamectl set-hostname ceph52; hostname ceph52

C、设置hosts及互相的免密登录,(三台都执行)

echo "192.168.200.50 ceph50 " >> /etc/hosts
echo "192.168.200.51 ceph51 " >> /etc/hosts
echo "192.168.200.52 ceph52 " >> /etc/hosts

D、关闭防护墙,创建ceph普通账户,(三台都执行)

systemctl stop firewalld
systemctl disable firewalld

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0

useradd ceph
echo "ceph:1234" | chpasswd
echo "ceph ALL = (root) NOPASSWD:ALL " | tee /etc/sudoers.d/ceph
chmod 0440 /etc/sudoers.d/ceph

#配置sudo 不需要tty
sed -i 's/Default requiretty/#Default requiretty/' /etc/sudoers

E、配置ceph的yum源,这里用的是 阿里云镜像的 nautilus版本,这是一个稳定版,(三台都执行)

sudo echo '#阿里ceph源
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/
gpgcheck=0
[ceph-source]
name=ceph-source
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS/
gpgcheck=0
#'>/etc/yum.repos.d/ceph.repo

F、配置时间同步,非常重要,(三台都执行)

yum -y install ntpdate
ntpdate -u  cn.ntp.org.cn

crontab -e
*/20 * * * * ntpdate -u  cn.ntp.org.cn > /dev/null 2>&1

systemctl reload crond.service

G、配置免密码登录,(只在 ceph50上执行即在管理节点上执行)

su - ceph
ssh-keygen
ssh-copy-id ceph@ceph50
ssh-copy-id ceph@ceph51
ssh-copy-id ceph@ceph52

第三:安装ceph集群所需软件,并创建集群

H、使用ceph-deploy部署集群,(在ceph50上执行的),安装软件用 ceph账户

su - ceph
sudo yum install -y ceph-deploy python-pip deltarpm
mkdir ~/my-cluster
cd ~/my-cluster

#ceph-deploy new --cluster-network 192.168.100.0/24 --public-network 192.168.200.0/24 Ceph-A Ceph-B [其他节点名]
ceph-deploy new --cluster-network 192.168.100.0/24 --public-network 192.168.200.0/24 ceph50 ceph51 ceph52

I、安装ceph包,(替代官方 ceph-deloy install ceph50 ceph51 ceph52),(三台都执行)
为什么要改,因为官方的命令会把yum 源改成官方的,速度慢,他会安装mds,mgr,mon,osd,radosgw等

sudo yum install -y ceph ceph-radosgw

第四:创建监视器,并开启mgr-ui

J、创建监视器,初始化monitor(s) ,并收集所有密钥,(注意各命名运行主机)
官方介绍:为了获得高可用性,您应该运行带有至少三个监视器的生产Ceph集群。
创建集群并将Ceph软件包安装到监视器主机后,可以将监视器部署到监视器主机。使用时ceph-deploy,该工具为每个主机强制使用一个监视器。

#在ceph50上执行,创建监视器,初始化monitor(s)
ceph-deploy mon create-initial

#查看生成了哪些key文件
ls -l *.keyring     

#管理节点把配置文件和 admin 密钥拷贝到管理节点和 Ceph 节点  (在ceph50上执行) 
ceph-deploy admin ceph50 ceph51 ceph52

#因为我们用的是ceph 用户以后在用到admin.keyring时可能用到权限问题这里我们就修改644权限了
(三台都执行,不执行这个权限修改,会造成部分指令不能正常执行,如开启dashboard)
sudo chmod 644 /etc/ceph/ceph.client.admin.keyring
#或者这样做
chown -R ceph /etc/ceph

K、部署mgr(Ceph 环境部署ceph mon_mgr 服务 每一个monitor节点都需要此服务否则集群状态会提示异常)
(在 ceph50 上执行)

ceph-deploy mgr create ceph50 ceph51 ceph52

L、为ceph集群,开启UI,这个东西在L版本后才需要部署(在 ceph50 上执行)

#ceph nautilus dashboard 已经具有一些管理功能了,可以在WEB界面创建一些内容
开启dashboard模块,用于UI查看        (开始执行不成功,加上--force后可以了,查看是否监听8443端口)
sudo yum install ceph-mgr-dashboard -y
ceph mgr module enable dashboard  --force
ceph mgr module ls

#创建自签证书
ceph dashboard create-self-signed-cert

#为仪表板创建用户 ceph-ops 为用户名,password@123为密码,administrator 是关键词不变
ceph dashboard ac-user-create ceph-ops password@123 administrator

#访问地址,和权限
        https://123.123.123.123:8443/#/dashboard
        ceph-ops    password@123

第五:初始化磁盘,并创建OSD

M、创建OSD,(在 ceph50 上执行)

su - ceph
cd ~/my-cluster

#zap磁盘,(针对所有需要加入Ceph环境的磁盘进行预处理,抹掉原本分区及数据)
ceph-deploy disk zap ceph50 /dev/sdb /dev/sdc /dev/sdd
ceph-deploy disk zap ceph51 /dev/sdb /dev/sdc /dev/sdd
ceph-deploy disk zap ceph52 /dev/sdb /dev/sdc /dev/sdd

#创建OSD并将其部署到OSD节点,
ceph-deploy osd create ceph50 --data /dev/sdb
ceph-deploy osd create ceph50 --data /dev/sdc
ceph-deploy osd create ceph50 --data /dev/sdd
ceph-deploy osd create ceph51 --data /dev/sdb
ceph-deploy osd create ceph51 --data /dev/sdc
ceph-deploy osd create ceph51 --data /dev/sdd
ceph-deploy osd create ceph52 --data /dev/sdb
ceph-deploy osd create ceph52 --data /dev/sdc
ceph-deploy osd create ceph52 --data /dev/sdd

第六:配置OSD基于Crush Rule 定义高性能SSD 池和HDD 池

N、基于Crush Rule 定义高性能SSD 池和HDD 池,(在 ceph50 上执行)

将Ceph中SSD 和HDD 划分为不同性能存储池为不同业务提供存储需求

目的:及将ceph50 ceph51 ceph52 上的sdb磁盘设置为ssd,后期创建高新能的ssd pool,其余磁盘默认不变为hdd
参考文章:https://ceph.io/planet/%e6%85%a2%e8%af%9dcrush-%e5%90%84%e7%a7%8dcrush%e7%bb%84%e5%90%88/

#查看osd信息
[ceph@ceph50 my-cluster]$ ceph osd tree
ID CLASS WEIGHT  TYPE NAME       STATUS REWEIGHT PRI-AFF 
-1       0.13129 root default                            
-3       0.04376     host ceph50                         
 0   hdd 0.01459         osd.0       up  1.00000 1.00000 
 1   hdd 0.01459         osd.1       up  1.00000 1.00000 
 2   hdd 0.01459         osd.2       up  1.00000 1.00000 
-5       0.04376     host ceph51                         
 3   hdd 0.01459         osd.3       up  1.00000 1.00000 
 4   hdd 0.01459         osd.4       up  1.00000 1.00000 
 5   hdd 0.01459         osd.5       up  1.00000 1.00000 
-7       0.04376     host ceph52                         
 6   hdd 0.01459         osd.6       up  1.00000 1.00000 
 7   hdd 0.01459         osd.7       up  1.00000 1.00000 
 8   hdd 0.01459         osd.8       up  1.00000 1.00000

#查看ceph中crush class信息 这里我们看到只有hdd
[ceph@ceph50 my-cluster]$ ceph osd crush class ls
[
    "hdd"
]


#删除osd.0 osd.3 osd.6 中device class信息
[ceph@ceph50 my-cluster]$ for i in 0 3 6;do ceph osd crush rm-device-class osd.$i;done
done removing class of osd(s): 0
done removing class of osd(s): 3
done removing class of osd(s): 6

#重新查看osd中 device class信息;此时发现刚才操作的osd中CLASS信息已经没了
[ceph@ceph50 my-cluster]$ ceph osd tree
ID CLASS WEIGHT  TYPE NAME       STATUS REWEIGHT PRI-AFF 
-1       0.13129 root default                            
-3       0.04376     host ceph50                         
 0       0.01459         osd.0       up  1.00000 1.00000 
 1   hdd 0.01459         osd.1       up  1.00000 1.00000 
 2   hdd 0.01459         osd.2       up  1.00000 1.00000 
-5       0.04376     host ceph51                         
 3       0.01459         osd.3       up  1.00000 1.00000 
 4   hdd 0.01459         osd.4       up  1.00000 1.00000 
 5   hdd 0.01459         osd.5       up  1.00000 1.00000 
-7       0.04376     host ceph52                         
 6       0.01459         osd.6       up  1.00000 1.00000 
 7   hdd 0.01459         osd.7       up  1.00000 1.00000 
 8   hdd 0.01459         osd.8       up  1.00000 1.00000


#为这些OSD定义新的device class 信息为ssd
[ceph@ceph50 my-cluster]$ for i in 0 3 6;do ceph osd crush set-device-class ssd osd.$i;done
set osd(s) 0 to class 'ssd'
set osd(s) 3 to class 'ssd'
set osd(s) 6 to class 'ssd'

#重新查看osd 信息时发现刚操作的osd中class已经变成了ssd
[ceph@ceph50 my-cluster]$ ceph osd tree
ID CLASS WEIGHT  TYPE NAME       STATUS REWEIGHT PRI-AFF 
-1       0.13129 root default                            
-3       0.04376     host ceph50                         
 1   hdd 0.01459         osd.1       up  1.00000 1.00000 
 2   hdd 0.01459         osd.2       up  1.00000 1.00000 
 0   ssd 0.01459         osd.0       up  1.00000 1.00000 
-5       0.04376     host ceph51                         
 4   hdd 0.01459         osd.4       up  1.00000 1.00000 
 5   hdd 0.01459         osd.5       up  1.00000 1.00000 
 3   ssd 0.01459         osd.3       up  1.00000 1.00000 
-7       0.04376     host ceph52                         
 7   hdd 0.01459         osd.7       up  1.00000 1.00000 
 8   hdd 0.01459         osd.8       up  1.00000 1.00000 
 6   ssd 0.01459         osd.6       up  1.00000 1.00000

#如果我们重新查看ceph crush calss 信息就多了ssd 一栏
[ceph@ceph50 my-cluster]$ ceph osd crush class ls
[
    "hdd",
    "ssd"
]


#现在我们创建一个优先使用SSD CLASS 的OSD Rule
[ceph@ceph50 ~]$ ceph osd crush rule create-replicated rule-ssd default host ssd


#查看以下ceph rule 信息
[ceph@ceph50 ~]$ ceph osd crush rule ls
replicated_rule
rule-ssd


#创建一个匹配 rule-ssd策略的 ceph pool ,名字为 ssdpool ,pg_num为128
通常在创建pool之前,需要覆盖默认的pg_num,官方推荐:
    若少于5个OSD, 设置pg_num为128。
    5~10个OSD,设置pg_num为512。
    10~50个OSD,设置pg_num为4096。
    超过50个OSD,可以参考pgcalc计算。https://ceph.com/pgcalc/

[ceph@ceph50 ~]$ ceph osd pool create ssdpool 128  rule-ssd
pool 'ssdpool' created


#确认下这个pool 信息可以看到ssdpool 对应的crush_rule 编号1 也就是rule-ssd,这样我就可以按需定义pool 为我们提供存储需求服务了
[ceph@ceph50 ~]$ ceph osd pool ls detail
pool 1 'ssdpool' replicated size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 128 pgp_num 128 autoscale_mode warn last_change 47 flags hashpspool stripe_width 0

附mgr-ui图

声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/1163.html
微信打赏微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2020/2/19作者: 辣条①号

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注