Skip to content

ceph

ceph

分布式文件系统

优点:高可靠,高性能 提供一个存储池,如果不够用,可进行线性扩展

分类

  • ceph 块设备 读取速度快,但只支持单设备挂载

  • ceph 文件系统 读取速度慢,但支持多个设备访问

  • ceph 对象网关 集合以上2个优点

ceph 组件

在ceph集群中,不管你是想要提供对象存储,块设备存储,还是文件系统存储,所有Ceph 存储集群部署都是从设置每个Ceph节点,网络和Ceph存储开始 的。 Ceph存储集群至少需 要一个Ceph Monitor,Ceph Manager和Ceph OSD(对象存储守护进程)。 运行Ceph Filesystem客户端时也需要Ceph元数据服务器。

  • Monitors:Ceph监视器(ceph-mon)维护集群状态的映射,包括监视器映射,管理器映 射,OSD映射和CRUSH映射。这些映射是Ceph守护进程相互协调所需的关键集群状态。监 视器还负责管理守护进程和客户端之间的身份验证。冗余和高可用性通常至少需要三个监视 器。

  • Managers:Ceph Manager守护程序(ceph-mgr)负责跟踪运行时指标和Ceph集群的 当前状态,包括存储利用率,当前性能指标和系统负载。 Ceph Manager守护进程还托管 基于python的模块来管理和公开Ceph集群信息,包括基于Web的Ceph Dashboard和 REST API。高可用性通常至少需要两名Managers。

  • Ceph OSD:Ceph OSD(对象存储守护进程,ceph-osd)存储数据,处理数据复制,恢 复,重新平衡,并通过检查其他Ceph OSD守护进程来获取心跳,为Ceph监视器和管理器 提供一些监视信息。冗余和高可用性通常至少需要3个Ceph OSD。

  • MDS:Ceph元数据服务器(MDS,ceph-mds)代表Ceph文件系统存储元数据(即, Ceph块设备和Ceph对象存储不使用MDS)。 Ceph元数据服务器允许POSIX文件系统用户 执行基本命令(如ls,find等),而不会给Ceph存储集群带来巨大负担。

安装 ceph 集群

准备条件:

准备三台机器,每台机器需要三个硬盘,配置 2GiB/4vCPU/60G 60G 分3个硬盘 master1-admin 是管理节点 :192.168.3.31 node1-monitor 是监控节点:192.168.3.32 node2-osd 是对象存储节点:192.168.3.33

系统安装

以centos7 7为例

配置阿里源

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

设置固定IP

vi /etc/sysconfig/network-scripts/ifcfg-ens33

增加以下,主要是IPADDR

IPADDR=<你的IP地址>
NETMASK=<子网掩码>
GATEWAY=<默认网关>
DNS1=<首选DNS服务器>
DNS2=<备用DNS服务器>
  • 重启网络
systemctl restart network

设置主机名

# 在 master1-admin 上操作:
hostnamectl set-hostname master1-admin
# 在 node1-monitor 上操作:
hostnamectl set-hostname node1-monitor
# 在 node2-osd 上操作:
hostnamectl set-hostname node2-osd

修改 host 文件

三个主机上 /etc/hosts 文件如下

192.168.3.31 master1-admin
192.168.3.32 node1-monitor
192.168.3.33 node2-osd

配置 master1-admin 到三个节点无密码登陆

保证各服务器以装 openssh-server

# 生成密钥对
ssh-keygen -t rsa
# 分发公钥
ssh-copy-id node1-monitor
ssh-copy-id node2-osd

初始化机器(三个几点操作)

yum -y install wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release lrzsz openssh-server
yum install deltarpm -y

关闭 firewalld 防火墙(三个节点操作)

停止 firewalld 服务 停止防火墙,并禁用这个服务

systemctl stop firewalld.service && systemctl disable firewalld.service

安装 iptables 如果你要改用 iptables 的话,需要安装 iptables 服务,未使用则不管

yum install iptables-services -y
禁用 iptables
service iptables stop && systemctl disable iptables

时间同步

在 master1-admin 上

ntpdate cn.pool.ntp.org
systemctl start ntpd && systemctl enable ntpd
在 node1-monitor 上
ntpdate master1-admin
计划任务:
* */1 * * * /usr/sbin/ntpdate master1-admin
在 node2-osd 上
ntpdate master1-admin
计划任务:
* */1 * * * /usr/sbin/ntpdate master1-admin
三、安装 ceph-deploy 1.安装 epel 源,在 master1-admin,node1-monitor,node2-osd 上操作
yum install -y yum-utils && sudo yum-config-manager --add-repo https://archives.fedoraproject.org/pub/archive/epel/7/x86_64/ && sudo yum install --nogpgcheck -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/yum.repos.d/archives.fedoraproject.org*
2.配置 ceph 的 yum 源,在 master1-admin,node1-monitor,node2-osd 上操作
cat /etc/yum.repos.d/ceph.repo

[Ceph] 
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/ 
enabled=1
gpgcheck=0 
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc 
priority=1
[Ceph-noarch] 
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/ 
enabled=1
gpgcheck=0 
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc 
priority=1
[ceph-source] 
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS/ 
enabled=1
gpgcheck=0 
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc 
priority=1

3.安装 ceph-deploy

yum update -y #在 master1-admin,node1-monitor,node2-osd 上操作
yum install ceph-deploy -y #在 master1-admin 上操作
yum install yum-plugin-priorities -y #在 master1-admin 上操作
在 node1-monitor 和 node2-osd 上操作
yum install ceph -y
4.搭建集群,在 master1-admin 上操作

(1)创建一个目录,用于保存 ceph-deploy 生成的配置文件信息的

mkdir /root/ceph-deploy && cd /root/ceph-deploy
(2) 创建集群和 monitor 节点
ceph-deploy new node1-monitor
ls 可发现在 ceph-deploy 目录下多了几个文件,如下这些
ceph.conf ceph-deploy-ceph.log ceph.mon.keyring
(3)修改 ceph 配置文件
cat ceph.conf
[global]
fsid = 588994cf-aafb-4e97-b40b-0abb80dcf49b
mon_initial_members = node1-monitor
mon_host = 192.168.3.32
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd pool default size = 1
把 Ceph 配置文件里的默认副本数从 3 改成 1 。把 osd pool default size = 1 加入 [global] 段: sed -i '$a\osd pool default size = 1' ceph.conf (4)安装 ceph 集群
ceph-deploy install master1-admin node1-monitor node2-osd
(5)配置初始 monitor,并收集所有的密钥
ceph-deploy mon create-initial

ll /root/ceph-deploy 会看到生成很多密钥
ceph.bootstrap-mds.keyring
ceph.bootstrap-mgr.keyring
ceph.bootstrap-osd.keyring
ceph.bootstrap-rgw.keyring
ceph.client.admin.keyring

5.给 ceph 添加 osd,并完成激活 Ceph OSD: OSD 的全称是 Object Storage Device,它的主要功能是存储数据、复制数据、平衡数据、恢复数据等, 与其它 OSD 间进行心跳检查等,并将一些变化情况上报给 Ceph Monitor。一般情况下一块硬盘对应一 个 OSD,一个分区也可以成为一个 OSD。 在 osd 节点 node2-osd 上操作

mkdir /var/local/osd1
chmod 777 /var/local/osd1/
回到 master1-admin 上操作,准备 osd
ceph-deploy osd prepare node2-osd:/var/local/osd1
在 master1-admin 上操作,激活 osd
ceph-deploy osd activate node2-osd:/var/local/osd1
6.把配置文件拷贝到管理节点和 ceph 节点,在 master1-admin 上操作
ceph-deploy admin master1-admin node1-monitor node2-osd
chmod +r /etc/ceph/ceph.client.admin.keyring 在三个节点操作
ceph health # 查看集群健康状态
如果显示 ok,说明 ceph osd 添加成功,可以正常使用 7.扩容,添加两个 osd,在 master1-admin 和 node1-monitor 上操作 (1)在 master1-admin,node1-monitor 上在创建一个目录
mkdir /var/local/osd1
chmod 777 /var/local/osd1/
(2)回到 master1-admin,准备 osd
ceph-deploy osd prepare master1-admin:/var/local/osd1 node1-monitor:/var/local/osd1
(3)在 master1-admin 上激活 osd
ceph-deploy osd activate master1-admin:/var/local/osd1 node1-monitor:/var/local/osd1
(4)ceph health 8.删除 osd (1)停掉 osd 进程 systemctl stop ceph-osd@1 systemctl stop ceph-osd@2 (2)将节点标记成 out,down ceph osd out 1 ceph osd out 2 ceph osd down 1 ceph osd down 2 这个一步是告诉 mon,这个节点已经不能服务了,需要在其他的 osd 上进行数据的恢复了 (3)从 crush 移除节点 ceph osd crush remove osd.1 ceph osd crush remove osd.2 (4)删除节点 ceph osd rm 1 ceph osd rm 2 (5)删除节点认证 ceph auth del 1 ceph auth del 2 这个是从认证当中去删除这个节点的信息