ceph
被称作面向未来的存储NFS
的共享方式,为使用者提供共享文件夹ceph
还是一个分布式的存储系统,非常灵活。如果需要扩容,只要向ceph
集中增加服务器即可。ceph
存储数据时采用多副本的方式进行存储,生产环境下,一个文件至少要存3份。ceph
默认也是三副本存储。服务器名称 | IP | 简介 |
---|---|---|
client | 192.168.2.1 | 客户端(同时也是临时的yum仓库和时钟服务器) |
node1 | 192.168.2.101 | 管理节点,硬盘/dev/sda系统盘,/dev/sdb 20G,/dev/sdc 20G |
node2 | 192.168.2.102 | 节点,硬盘/dev/sda系统盘,/dev/sdb 20G,/dev/sdc 20G |
Node3 | 192.168.2.103 | 节点,硬盘/dev/sda系统盘,/dev/sdb 20G,/dev/sdc 20G |
注意事项
- 防火墙关闭
- 控制节点到各个节点的域名解析和免密登录一定要配置好
- 时钟一定要同步
- 安装的软件可以重复执行命令查看是否成功
- 创建
OSD
的时候一定要根据自己的硬盘名称来创建
client
# 关闭防火墙
systemctl stop firewalld
setenforce 0
sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
# 搭建yum源
yum install -y vsftpd
systemctl enable vsftpd --now
mkdir -p /var/ftp/{centos,ceph}
echo "/data/iso/ceph10.iso /var/ftp/ceph iso9660 defaults 0 0" >> /etc/fstab
echo "/data/iso/centos7.iso /var/ftp/centos iso9660 defaults 0 0" >> /etc/fstab
mount -a
node1
# 设置服务器名,关闭防火墙,设置网络,清除之前的yum源
hostnamectl set-hostname node1
yum remove -y firewalld
sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.2.101/24 ipv4.gateway 192.168.2.254 autoconnect yes
nmcli connection up eth0
rm -rf /etc/yum.repos.d/*
yum clean all
node2
# 设置服务器名,关闭防火墙,设置网络,清除之前的yum源
hostnamectl set-hostname node2
yum remove -y firewalld
sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.2.102/24 ipv4.gateway 192.168.2.254 autoconnect yes
nmcli connection up eth0
rm -rf /etc/yum.repos.d/*
yum clean all
node3
# 设置服务器名,关闭防火墙,设置网络,清除之前的yum源
hostnamectl set-hostname node3
yum remove -y firewalld
sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.2.103/24 ipv4.gateway 192.168.2.254 autoconnect yes
nmcli connection up eth0
rm -rf /etc/yum.repos.d/*
yum clean all
client
# 创建repo
vim local.repo
# 文件内容如下
[base]
name=Centos-$releasever - Base
baseurl=ftp://yum-server/centos/
gpgcheck=0
vim ceph.repo
# 文件内容如下
[osd]
name = ceph osd
baseurl = ftp://yum-server/ceph/OSD/
enabled = 1
gpgcheck = 0
[mon]
name = ceph mon
baseurl = ftp://yum-server/ceph/MON/
enabled = 1
gpgcheck = 0
[tools]
name = ceph tools
baseurl = ftp://yum-server/ceph/Tools/
enabled = 1
gpgcheck = 0
# 配置节点的yum和免密登录
echo "192.168.2.1 yum-server" >> /etc/hosts
for i in {1..3}
do
echo "192.168.2.10${i} node${i}" >> /etc/hosts
ssh-copy-id node${i}
scp local.repo ceph.repo node${i}:/etc/yum.repos.d/
done
# 配置域名解析
for i in node{1..3}
do
scp /etc/hosts $i:/etc/
done
# 在clietn上安装chrony,ceph必须要求时钟同步,不然后面分区之后会有警告
yum install -y chrony
vim /etc/chrony.conf
# 取消下面两行注释并修改部分内容,26,29两行
allow 192.168.2.0/24
local stratum 10
# 启动服务
systemctl restart chrony
node1
(控制节点)# 配置控制节点到每个节点的免密登录
ssh-keygen # 一直回车
ssh-copy-id node2
ssh-copy-id node3
# 配置时钟跟client同步
yum install -y chrony
vim /etc/chrony.conf
# 文件中上面几个server都注释,添加一行,效果如下
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst
server 192.168.2.1 iburst
systemctl enable chronyd --now # 启动服务器并开机自启
chronyc sources -v # 查看 ^* yum-server说明成功
# 配置其他节点的时钟同步
for i in node2 node3
do
ssh $i yum install -y chrony
scp /etc/chrony.conf $i:/etc/
ssh $i systemctl restart chronyd
ssh $i systemctl enable chronyd
done
# 检查是否成功,出现^* yum-server就说明成功了,因为我这里时钟服务器和yum服务器是用一个服务器,所以显示的是同一个
ssh node2 chronyc sources -v
ssh node3 chronyc sources -v
node1
:通过node1控制节点进行安装# 本机安装软件
yum install -y ceph-mon ceph-osd ceph-mds ceph-radosgw ceph-deploy
# 远程node1和node2进行软件安装
ssh node2 yum install -y ceph-mon ceph-osd ceph-mds ceph-radosgw
ssh node3 yum install -y ceph-mon ceph-osd ceph-mds ceph-radosgw
# 检查是否安装成功
ceph-deploy --help
# 创建工作目录并进入
mkdir ceph-cluster && cd ceph-cluster
# 创建新的集群,会出现3个文件,ceph.conf集群配置文件,ceph-deploy-ceph.log日志文件,ceph.mon.keyring共享密钥
ceph-deploy new node{1..3}
echo "rbd_default_features = 1" >> ceph.conf # 开启快照功能
# 初始化monitor
ceph-deploy mon create-initial
# 查看各节点的ceph-mon
systemctl status ceph-mon*
ssh node2 systemctl status ceph-mon* | grep Active
ssh node3 systemctl status ceph-mon* | grep Active # 也可以执行这个 ^2^3,是将上一条命令的2换成3
# 查看集群状态,目前因为没有硬盘,所以是HEALTH_ERR
ceph -s | grep health
# 创建OSD,这里自己的实际情况配置,我这里每个节点上都是sdb、sdc,你可以执行lsblk看一下自己的本地环境
ceph-deploy disk zap node1:sd{b,c}
ceph-deploy disk zap node2:sd{b,c}
ceph-deploy disk zap node3:sd{b,c}
# 创建存储空间。这里的名称跟上面一样根据实际情况进行修改,ceph会硬盘分为两个分区,一个分区大小为5GB,用于保存ceph的内部资源;另一个分区是剩余全部空间
ceph-deploy osd create node1:sd{b,c}
ceph-deploy osd create node2:sd{b,c}
ceph-deploy osd create node3:sd{b,c}
# 查看集群状态
ceph -s | grep health # HEALTH_OK,如果是HEALTH_WARN就说明哪边配置好,如时钟
Tips(安装错误的时候,可以尝试下面命令,本人安装错误的时候,试了下,发现好像没用,可能是自己脸黑):
# 如果安装过程中出现keyring...这种报错,可以试着执行以下命令 ceph-deploy gatherkeys node{1..3} # 如果安装错误,可以清理数据后,重新安装。清理数据命令 ceph-deploy purge node1 ceph-deploy purge node2 ceph-deploy purge node3
- 1
- 2
- 3
- 4
- 5
- 6
- 7
node1
# 查看存储池,这里默认会有一个
ceph osd lspools
# 查看存储池大小
ceph df
# 查看存储池rbd存储数据时,保存的副本数量
ceph osd pool get rbd size
# 在默认存储池中,创建一个名为demo-image大小为10G的镜像
rbd create demo-image --size 10G
# 查看默认存储池中的镜像
rbd list
# 查看镜像信息
rbd info demo-image
# 扩容至20G
rbd resize --size 15G demo-image
rbd info demo-image
# 缩减至8G,慎用,一般不用
rbd resize --size 8G demo-image --allow-shrink
rbd info demo-image
# 删除镜像,慎用
rbd rm demo-image
# 创建一个大小10G的镜像,提供给客户端使用
rbd create demo --size 10G
rbd info demo
client
使用# 安装ceph客户端软件
yum install -y ceph-common
# 复制节点的配置文件和密钥keyring到客户端
scp node1:/etc/ceph/ceph.{conf,client.admin.keyring} /etc/ceph/
# 客户端查看镜像
rbd list # demo
# 将ceph提供的镜像映射到本地
rbd map demo # /dev/rbd0
# 查看映射
rbd showmapped
# 格式化,第一次使用才需要格式化,如果是多台只需要格式一次
mkfs.xfs /dev/rbd0
# 临时挂载使用
mount /dev/rbd0 /mnt/
# 查看是否挂载成功
df -h /mnt