基础概念
目前Ceph官方提供三种部署Ceph集群的方法,分别是ceph-deploy,cephadm和手动安装
ceph-deploy
一个集群自动化部署工具,使用较久,成熟稳定,被很多自动化工具所集成,可用于生产部署
复制
cephadm
从Octopus开始提供的新集群部署工具,支持通过图形界面或者命令行界面添加节点,目前不建议用于生产环境,有兴趣可以尝试
复制
manual
手动部署,一步步部署Ceph集群,支持较多定制化和了解部署细节,安装难度较大,但可以清晰掌握安装部署的细节
复制
这里我们采用成熟、简单的ceph-deploy实现Ceph集群的部署
ceph-deploy的基础架构

查看ip: ip addr
查看网关: ip route show
查看DNS: cat /etc/resolv.conf复制
注:大家可以根据自己的环境修改上面的网段
公共网络&集群网络
公共网配置用于明确地为公共网定义IP地址和子网(ceph默认所有主机都运行于公共网)。
集群网络的作用:处理OSD心跳、对象复制、恢复流量
OSD为客户端处理数据复制,产生的网络负载会影响到客户端和ceph集群的通讯,故为性能和安全考虑,需要配置集群网络与公共网络相互独立
本文复用了Public网络和Cluster网络
复制
集群中的角色
admin-node
需要一个安装管理节点,安装节点负责集群整体部署,这里用cephnode-01为admin-node和Ceph-Mon节点;
复制
mon
monitor节点,即是Ceph的监视管理节点,承担Ceph集群重要的管理任务
一般需要3或5个节点,此处部署简单的一个Monitor节点复制
osd
OSD即Object Storage Daemon,实际负责数据存储的节点
3个节点上分别有1块20G的磁盘充当OSD角色复制
注:生产环境如果有多个节点也可以继续横向扩容;如果磁盘容量不够也可以根据使用需求进行纵向扩容
安装3节点Ceph集群
硬件环境
虚拟机,2core+4G+20G磁盘
复制
操作系统
cat /proc/version
CentOS Linux 7.9.2009 Core复制
部署版本
ceph-deploy 2.0.1
复制
集群规划

系统初始化
注:如果没有特殊说明,本小节所有操作需要在所有节点上执行本文档的初始化操作
配置主机名
hostnamectl set-hostname cephnode-01
hostnamectl set-hostname cephnode-02
hostnamectl set-hostname cephnode-03复制
在每台机器的 /etc/hosts 文件中添加主机名和 IP 的对应关系
cat >> /etc/hosts <<EOF
# Ceph Cluster Network
192.168.168.138 cephnode-01
192.168.168.137 cephnode-02
192.168.168.132 cephnode-03
# Ceph Public Network
192.168.168.138 cephnode-01
192.168.168.137 cephnode-02
192.168.168.132 cephnode-03
EOF
然后退出,重新登录 root 账号,可以看到主机名生效复制

添加节点SSH互信
ssh-keygen -t rsa
ssh-copy-id root@cephnode-01
ssh-copy-id root@cephnode-02
ssh-copy-id root@cephnode-03复制
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat
iptables -P FORWARD ACCEPT复制
注:关闭防火墙,清理防火墙规则,设置默认转发策略
关闭swap分区
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab复制
关闭SELinux
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config复制
配置EPEL源
配置yum源,由于网络环境因素,因此将yum源统一配置到国内阿里云,加快rpm的安装配置,需要配置CentOS的基础源、EPEL源和Ceph源
# 删除默认yum源并配置阿里yum源
rm -f /etc/yum.repos.d/*.repo
wget http://mirrors.aliyun.com/repo/Centos-7.repo -P /etc/yum.repos.d/
# 安装EPEL源
wget http://mirrors.aliyun.com/repo/epel-7.repo -P /etc/yum.repos.d/复制
配置Ceph源
cat > /etc/yum.repos.d/ceph.repo <<EOF
[noarch]
name=Ceph noarch
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/
enabled=1
gpgcheck=0
[x86_64]
name=Ceph x86_64
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/
enabled=1
gpgcheck=0
EOF复制
安装依赖包
安装Ceph-deploy部署工具,默认EPEL源提供的ceph-deploy版本是1.5,务必确保安装版本为2.0.1或之上版本,否则安装过程中会有很多问题
# 更新yum源
yum update -y
# 安装工具包、python-setuptools一定要安装、不然会报错的
yum install -y chrony conntrack ipset jq iptables curl sysstat libseccomp wget socat git python-setuptools
# 安装ceph-deploy部署工具
yum install ceph-deploy -y
#校验版本
ceph-deploy --version复制
配置系统时间
timedatectl set-timezone Asia/Shanghai
复制
配置时钟同步
timedatectl status
复制
注:System clock synchronized: yes,表示时钟已同步;NTP service: active,表示开启了时钟同步服务
写入硬件时钟
# 将当前的 UTC 时间写入硬件时钟
timedatectl set-local-rtc 0
# 重启依赖于系统时间的服务
systemctl restart rsyslog
systemctl restart crond复制
关闭无关服务
systemctl stop postfix && systemctl disable postfix
复制
执行完上面所有的操作之后我们就可以重启所有主机了
sync
reboot复制
部署Ceph集群
Ceph-deploy部署过程中会生成一些集群初始化配置文件和key
后续扩容的时候也需要使用到
因此,建议在admin-node上创建一个单独的目录
后续操作都进入到该目录中进行操作
以创建的ceph-admin为例
这里在/root/下面创建一个ceph-admin目录
mkdir -p ceph-admin
# 后续所有的操作均需要在ceph-admin目录下面完成
cd ceph-admin复制
安装Ceph所需的安装包
安装过程中可以使用ceph-deploy install提供的安装方式
这个命令会自动安装EPEL源,重新设定Ceph源
这里我们已经设置到国内源了
因此采用手动安装Ceph安装包方式
为了保障后续的安装
在三个节点上将Ceph的安装包都部署上,在三个节点上分别执行下面的命令即可
yum install ceph-mon ceph-radosgw ceph-mds ceph-mgr ceph-osd ceph-common -y复制
创建一个Ceph Cluster集群
需要指定cluster-network(集群内部通讯)和public-network(外部访问Ceph集群)
ceph-deploy new --cluster-network 192.168.168.0/24 --public-network 192.168.168.0/24 cephnode-01复制

通过上面的输出可以看到
new初始化集群过程中会生成ssh key密钥,ceph.conf配置文件,ceph.mon.keyring认证管理密钥
配置cluster network和pubic network
此时查看目录下的文件可以看到如下内容复制

初始化monitor节点
ceph-deploy mon create-initial
复制

可能出现的异常
安装好ceph之后 会生成/var/run/ceph/ceph-mon.cephnode-01.asok这个文件
执行这个命令的时候
ceph --cluster=ceph --admin-daemon /var/run/ceph/ceph-mon.cephnode-01.asok mon_status
如果找不到这个文件就会报这个错误
此时要确认主机名和/etc/hosts配置的名称是否一致
初始化完毕后会自动生成以下几个文件,这些文件用于后续和Ceph认证交互使用
初始化完成之后我们将admin的认证密钥拷贝到其他节点上
便于ceph命令行可以通过keyring和ceph集群进行交互
ceph-deploy --overwrite-conf admin cephnode-01 cephnode-02 cephnode-03复制

查看集群状态
Ceph集群已经建立起来
当前的Ceph集群包含一个monitor节点
通过 ceph -s 我们可以查看当前ceph集群的状态
但是此时并没有任何的OSD节点,因此无法往集群中写数据等操作复制

从上面的截图我们可以看到、目前集群中目前还没有OSD节点
因此没法存储数据,接下来开始往集群中添加OSD节点
在前面我们说过每个节点上都有1块20G的磁盘/dev/sda复制

下篇文章将介绍下下如何将磁盘加入到集群中作为OSD节点以及其他操作的过程
复制