Ceph原理及部署
参考链接
中文文档: http://docs.ceph.org.cn/ (相对较老)
英文文档: https://docs.ceph.com/en/latest/
其他博客:
https://llussy.github.io/2019/08/17/ceph-architecture/
https://cloud.tencent.com/developer/article/1174169
同学博客:
https://www.cnblogs.com/cculin/articles/15150559.html
https://www.jianshu.com/p/007b0ffc874a
https://www.yuque.com/docs/share/aeae134a-ac41-440d-9d02-b5e7f070167a?# 《从零搭建ceph分布式存储》
https://www.cnblogs.com/haozheyu/p/15149734.html
https://www.cnblogs.com/ty111/p/15145835.html
Ceph仓库:
清华源:https://mirrors.tuna.tsinghua.edu.cn/ceph
阿里云源:https://mirrors.aliyun.com/ceph/ #阿里云镜像仓库
1.Ceph简介
Ceph是一个开源的基于RADOS(Reliable, Autonomic Distributed Object Store) 无限扩张分布式存储集群,同时支持对象存储、块设备、文件系统。Ceph是一个对象(object)式存储系统,将数据切分为一到多个固定大小(默认4M)的对象数据,并以其原子单元完成数据读写。
Ceph相比其它存储的优势在于其充分利用存储节点的计算能力,计算存储数据的位置,尽量将数据分布均衡,同时由于Ceph的良好设计采用了CRUSH、HASH环等方法,使得它不存在传统的单点故障。
Ceph特点
-
高性能
- 摒弃传统集中式存储元数据寻址方案,采用CRUSH算法,数据分布均衡并行度高。
- 分布式架构考虑了容灾与、各类负载的副本放置、在网络良好情况下能实现跨机房方案
-
高可用性
- 副本数可以灵活空间。
- 支持故障域分隔,数据强一致
- 多种故障场景自动进行修复自愈
- 存储节点没有主从概念,不存在单点故障
- 高扩展性
- 去中心化。
- 扩展灵活。
- 随着节点增加而线性增长。
- 特性丰富
- 支持三种存储接口:块存储、文件存储、对象存储
- 支持自定义接口,支持多种语言驱动
Ceph缺点
待补充
2.Ceph集群组件
OSD
全称Object Storage Daemon,OSD守护进程功能是数据存储,是由存储服务器的磁盘组成的存储空间,可部署若干个
Monitors
Ceph的监视器,至少部署1个。
managers
3.Ceph读写原理
4.Ceph部署
Ceph 版本:15.2.14
4.1 机器列表
10段为外部通信网络,192网段为集群内部通信网络
IP(Ubuntu18.04,双网卡) | 主机名 | 角色 | 备注 |
---|---|---|---|
10.201.106.31/192.168.6.31 | ceph-deploy | deploy部署机 | |
10.201.106.32/192.168.6.32 | ceph-mon1 | Mon监视服务器 | |
10.201.106.33/192.168.6.33 | ceph-mon2 | Mon监视服务器 | |
10.201.106.34/192.168.6.34 | ceph-mon3 | Mon监视服务器 | |
10.201.106.35/192.168.6.35 | ceph-mgr1 | ceph-mgr管理服务器 | |
10.201.106.36/192.168.6.36 | ceph-mgr2 | ceph-mgr管理服务器 | |
10.201.106.37/192.168.6.37 | ceph-node1 | OSD存储 | 5块数据盘 |
10.201.106.38/192.168.6.38 | ceph-node2 | OSD存储 | 5块数据盘 |
10.201.106.39/192.168.6.39 | ceph-node3 | OSD存储 | 5块数据盘 |
10.201.106.40/192.168.6.40 | ceph-node4 | OSD存储 | 5块数据盘 |
4.2 环境准备
1. 时间同步
2. 关闭selinux和防火墙
3. 更改主机名
4. 配置域名解析(实验通过绑定host,线上需配置dns解析)
5. 设置仓库源
6. 优化系统句柄数
7. 添加普通用户并设置sudo权限,deploy服务器设置到其他节点免密登录
8. 各节点安装Python2
4.2.1 时间同步
sudo apt update
sudo apt install chrony -y
sudo vim /etc/chrony/chrony.conf
# 修改为阿里云时钟同步服务器
# 公网
server ntp.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp1.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp2.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp3.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp4.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp5.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp6.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp7.aliyun.com minpoll 4 maxpoll 10 iburst
4.2.2 关闭selinux和防火墙
4.3.3 更改主机名
按照4.1机器列表修改主机名
hostnamectl set-hostname "主机名"
4.3.4 配置域名解析(hosts绑定)
cat >> /etc/hosts<< EOF
# ceph-hosts
10.201.106.31 192.168.6.31 ceph-deploy
10.201.106.32 192.168.6.32 ceph-mon1
10.201.106.33 192.168.6.33 ceph-mon2
10.201.106.34 192.168.6.34 ceph-mon3
10.201.106.35 192.168.6.35 ceph-mgr1
10.201.106.36 192.168.6.36 ceph-mgr2
10.201.106.37 192.168.6.37 ceph-node1
10.201.106.38 192.168.6.38 ceph-node2
10.201.106.39 192.168.6.39 ceph-node3
10.201.106.40 192.168.6.40 ceph-node4
EOF
4.2.5 配置Ceph-yum仓库
替换镜像源
sudo mv /etc/apt/{sources.list,sources.list.old}
sudo cat > /etc/apt/sources.list <<EOF
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
EOF
导入ceph的key文件:
wget -q -O- ‘https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc‘ | sudo apt-key add -
各节点配置ceph源
sudo echo "deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic main" >> /etc/apt/sources.list
#检查源是否生效,无法识别需要重新检查导入key的操作
apt-cache madison ceph-deploy
4.2.6 调整系统句柄数
sudo cat >> /etc/security/limits.conf <<EOF
* soft nproc 102400
* hard nproc 102400
* soft nofile 102400
* hard nofile 102400
root soft nproc 102400
root hard nproc 102400
root soft nofile 102400
root hard nofile 102400
EOF
4.2.7 创建普通用户管理集群
从Infernalis版本的Ceph部署时会自动创建ceph用户启动进程,应避免创建同名用户
1. 在各ceph节点创建新用户。
groupadd -r -g 2001 cephops && useradd -r -m -s /bin/bash -u 2001 -g 2001 cephops && echo cephops:passwd1234 | chpasswd
2. 确保各ceph节点上新创建的用户都有sudo权限
echo "cephops ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephops
sudo chmod 0440 /etc/sudoers.d/cephops
3、deploy节点cephops用户做密钥免密登录到所有节点
3.1 生成密钥对
cephops@ceph-deploy:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/cephops/.ssh/id_rsa):
Created directory ‘/home/cephops/.ssh‘.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/cephops/.ssh/id_rsa.
Your public key has been saved in /home/cephops/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Oxkg2Q7npJ4oZeS+uNR2VLdGdkw5c14GZRI40IvT+F8 cephops@ceph-deploy
The key‘s randomart image is:
+---[RSA 2048]----+
| .o.o++o |
| o oB .oo |
| . + =. ++oB o |
| o O..++oo . |
| + ..o Soo |
| +.o.. .+ . E |
|..ooo. + . . |
|.o... . . |
|o.. |
+----[SHA256]-----+
3.2 # 取消 ssh 登录指纹验证,分发公钥到各ceph节点
sudo sed -i ‘/ask/{s/#//;s/ask/no/}‘ /etc/ssh/ssh_config
ssh-copy-id cephops@10.201.106.X
4.2.8 安装Python2.7
#ceph服务依赖python2环境
sudo apt install python2.7 -y
sudo ln -sv /usr/bin/python2.7 /usr/bin/python2
4.3 Ceph集群部署步骤
4.3.1 在deploy节点创建目录,用于保存ceph-deploy生成的配置文件密钥对
mkdir ceph-deploy
cd ceph-deploy/
4.3.2 deploy节点安装ceph部署工具
sudo apt-get install ceph-deploy
4.3.3 各节点部署ceph-common工具,用于管理ceph
sudo apt install ceph-common -y
4.3.4 初始化mon节点
ceph-deploy new --cluster-network 192.168.6.0/24 --public-network 10.201.106.0/24 ceph-mon1
myceph@ceph-node1:~$ ceph-deploy new --cluster-network 10.1.206.0/24 --public-network 10.1.162.0/24 ceph-node2.xxx.cn
3. 查看验证
应该有一个ceph配置文件、一个monitor密钥和一个日志文件