01Ceph原理和部署

Posted 仲樂的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了01Ceph原理和部署相关的知识,希望对你有一定的参考价值。

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密钥和一个日志文件

4.3.5

4.3.6

4.3.7

4.3.8

5.集群高可用

6.Ceph-rbd使用

以上是关于01Ceph原理和部署的主要内容,如果未能解决你的问题,请参考以下文章

ceph 部署步骤和原理理解

ceph课程ceph组件与原理

Ceph存储手动部署

Ceph系列01Ceph的工作原理及流程

002 ceph的deploy部署

分布式存储Ceph在Docker下安装部署