文章目录
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,rgw |
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,rgw,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,rgw,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图
如果文章对你有帮助,欢迎点击上方按钮打赏作者
暂无评论