Centos7-Ceph分布式存储快速部署

随着OpenStack日渐成为开源云计算的标准软件栈,Ceph也已经成为OpenStack的首选后端存储。相关介绍网上有很多,这里就不做过多介绍了,自己尝试在自己的测试机搭建了一下。

Ceph的架构

Ceph是一个开源的分布式文件系统。因为它还支持块存储、对象存储,所以很自然的被用做云计算框架openstack或cloudstack整个存储后端。当然也可以单独作为存储,例如部署一套集群作为对象存储、SAN存储、NAS存储等。

支持接口

1、对象存储:即radosgw,兼容S3接口。通过rest api上传、下载文件。

2、文件系统:posix接口。可以将ceph集群看做一个共享文件系统挂载到本地。

3、块存储:即rbd。有kernel rbd和librbd两种使用方式。支持快照、克隆。相当于一块硬盘挂到本地,用法和用途和硬盘一样。

Ceph相比其它分布式存储有哪些优点?

1、统一存储

虽然ceph底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口。所以在开源存储软件中,能够一统江湖。至于能不能千秋万代,就不知了。

2、高扩展性

扩容方便、容量大。能够管理上千台服务器、EB级的容量。

3、可靠性强

支持多份强一致性副本,EC。副本能够垮主机、机架、机房、数据中心存放。所以安全可靠。存储节点可以自管理、自动修复。无单点故障,容错性强。

4、高性能

因为是多个副本,因此在读写操作时候能够做到高度并行化。理论上,节点越多,整个集群的IOPS和吞吐量越高。另外一点ceph客户端读写数据直接与存储设备(osd) 交互。在块存储和对象存储中无需元数据服务器。

集群部署

主机准备

IP地址       主机名
172.16.10.167   admin-node  #管理端,后续的ceph-deploy工具都在该主机上进行操作,并且也充当监控和osd.0节点
172.16.10.162   node1     #监控和osd.1节点
172.16.10.142   node2     #监控和osd.2节点
每台主机三块盘,sda系统盘、sdb存储盘(osd)、sdc日志盘(journal),日志盘最好选用ssd

修改admin-node的/etc/hosts文件

 172.16.10.162    node1
 172.16.10.142    node2

配置admin-node与其它节点的ssh无密码root权限访问,为了方便使用的是root用户,为了安全应该创建一个普通用户

# ssh-keygen
# cat /root/.ssh/id_rsa.pub

修改每个节点的hostname

# hostnamectl set-hostname "新的名字"

每个osd节点开放防火墙

-A INPUT -p tcp -m state --state NEW -m tcp --dport 6789:7100 -j ACCEPT

配置ceph的yum源,安装ceph-deploy工具

此处的源太慢,在我安装的时候总是失败

国内的一些Ceph源:Ceph国内源

# yum install --nogpgcheck -y epel-release
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
# vim /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=http://download.ceph.com/rpm-jewel/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
 
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-jewel/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
 
[ceph-source]
name=Ceph source packages
baseurl=http://download.ceph.com/rpm-jewel/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

安装ceph-deploy工具

# yum update -y
# yum install ceph-deploy -y
# yuminstall ntp ntpdate ntp-doc openssh-server yum-plugin-priorities -y

创建管理目录

# mkdir my-cluster
# cd my-cluster

创建监控节点,这里可以同时创建多个节点,为了测试后期增加mon节点,这里就只添加一个

# ceph-deploy new node1

修改配置文件,执行上述命令之后,会在当前目录产生ceph.conf文件,打开文件增加配置

osd pool default size = 3   #创建3个副本
public_network = 172.16.10.0/24   #公用网络
cluster_network = 172.16.10.0/24  #集群网络

使用ceph-deploy为节点安装ceph,这一步在我安装时经常出问题,出现执行ceph --version命令失败,还有一些其它错误,然后各种在网上查资料,最后自己无意中发现,再次执行命令,或者在失败节点把ceph和ceph-release卸载,然后单个节点再次安装,重复操作,就可以安装成功,究其原因,还是因为ceph源在国外。然后找了一下国内的ceph源,在ceph中国社区找到了一篇文档,在开头已有介绍。

# ceph-deploy install admin-node node1 node2

初始化监控节点并收集keyring,如果是双网卡,需要修改配置文件ceph.conf将mon的内网地址改为公网地址,执行时需要在ceph-deploy后加--overwrite-conf

# ceph-deploy mon create-initial

把admin-node节点的配置文件与keyring同步至其它节点

# ceph-deploy admin admin-node node1 node2
# chmod +r /etc/ceph/ceph.client.admin.keyring   #如果是root用户,这步不需要

初始化各节点的osd分区

# ceph-deploy disk zap admin-node:/dev/sdb node1:/dev/sdb node2:/dev/sdb

挂载日志盘

# ceph-deploy osd prepare admin-node:sdb:/dev/sdc node1:sdb:/dev/sdc node2:sdb:/dev/sdc

查看挂载情况

# ceph-deploy disk list node1

现在初步集群搭建完成

查看ceph集群健康状态

# ceph health

如果成功将提示:HEALTH_OK

增加监控节点

打开ceph.conf文件,增加mon配置,新增admin-node和node2节点为mon节点

# cd my-cluster && vim ceph.conf
mon_initial_members = node1,admin-node,node2
mon_host= 172.16.10.162,172.16.10.167,172.16.10.142

将配置文件同步至所有节点

# ceph-deploy --overwrite-conf admin admin-node node1 node2

查看配置是否生效

# ceph --show-config |grep mon_initial_members

创建新的mon

# ceph-deploy mon create admin-node
# ceph-deploymon create node2

查看mon状态

# ceph mon stat

查看整个集群状态,验证是否成功

# ceph -s

不出意外,现在应该是显示集群成功的,也可能会有时间不同步或者pg问题,在网上都有解决方法,个人测试了几遍都可以成功安装。

启动命令

启动或停止一个节点的所有osd或者mon

# systemctl start ceph-osd.target
# systemctl start ceph-mon.target

启动单个osd或者mon

# systemctl start [email protected]
# systemctl start [email protected]

添加开机启动

# systemctl enable ceph-mon.target
# systemctl enable ceph-osd.target

检测是否加入开机启动

# systemctl is-enabled ceph-osd.target
# systemctlis-enabled ceph-mon.target

验证

使用块存储验证集群存储是否可用

再找一台机器做为:client-node,并且需要执行上面的基础流程

在admin-node上面

# cd my-cluster
# ceph-deploy install  client-node
# ceph-deployadmin client-node

在client-node创建块设备映像

# rbd create test --size 4096 --image-format 2 --image-feature  layering

查看创建的映像

# rbd ls

将ceph提供的块设备映射到client-node

# rbd map test --pool rbd --name client.admin

创建文件系统

# mkfs.xfs  /dev/rbd/rbd/test

挂载文件系统

# mkdir /test
# mount /dev/rbd/rbd/test /test

使用dd测试

# cd /test
# dd if=/dev/zero of=ceshi bs=1M count=10

在随便一台osd节点上,查看是否有数据写入

# ceph -w

监控

在监控方面,calamari在安装起来比较复杂,没有仔细研究,在网上看到可以使用zabbix对ceph进行监控,然后看了一下。

http://www.cnblogs.com/bodhitree/p/6027289.html

监控流程

在ceph的一台monitor上,比如:admin-node

# yum install -y git
# git clone https://github.com/BodihTao/ceph-zabbix.git
# cd ceph-zabbix
# cp ceph-status.sh /usr/local/zabbix/etc/
# ln -s /usr/local/zabbix/bin/* /usr/bin/
# vim ceph_cron.txt  或者直接crontab -e编辑
* * * * * /usr/local/zabbix/etc/ceph-status.sh zabbixIP “zabbix中定义的主机名”
例如:
* * * * * /usr/local/zabbix/etc/ceph-status.sh 172.16.10.102 "Ceph-172.16.10.167"
# crontab ceph_cron.txt
# crontab -l
# vim/usr/local/zabbix/etc/zabbix_agentd.conf
Hostname=Ceph-172.16.10.167
# pkill -9 zabbix_agentd
# /usr/local/zabbix/sbin/zabbix_agentd

然后在zabbix上面导入ceph-zabbix/zabbix_templates中的模板,修改导入的模板--项目中的类型为zabbix trapper(zabbix捉捕器),然后添加主机,使用导入的模板。

注:如果还需要使用其它模板,比如:Template OS Linux,如果项目中提示不支持,则需要修改类型为zabbix trapper(zabbix捉捕器),如果修改,需要做一个克隆,以免影响其它模板使用者。

时间: 2024-10-12 04:23:27

Centos7-Ceph分布式存储快速部署的相关文章

[转帖]centos7 使用kubeadm 快速部署 kubernetes 国内源

centos7 使用kubeadm 快速部署 kubernetes 国内源 https://www.cnblogs.com/qingfeng2010/p/10540832.html 前言 搭建kubernetes时看文档以及资料走了很多弯路,so 整理了最后成功安装的过程已做记录.网上的搭建文章总是少一些步骤,想本人这样的小白总是部署不成功(^_^). 准备两台或两台以上的虚拟机,系统centos7, 本文只准备了两个虚拟机(电脑风扇已转的飞起). 多注意红色加粗的 代码以及文字 ------q

centos7快速部署ceph

1.机器: 10.39.3.22-26 2.优化 tcp参数优化 ntp时间同步配置 requiretty准备 执行命令visudo修改suoders文件: 1. 注释Defaults requiretty Defaults requiretty修改为 #Defaults requiretty, 表示不需要控制终端. 否则会出现sudo: sorry, you must have a tty to run sudo 2. 增加行 Defaults visiblepw 否则会出现 sudo: no

ceph 快速部署

ceph 统一存储现在火的不得了了,大家都在调研它,最近大脑发热,也尝试体验一把.下面简单记录下ceph ceph-deploy 部署步骤. 一.规划 1. 虚拟机5台,其功能如下: 名称 pulic network cluster network  功能 admin-node 192.168.0.254/24 10.0.1.2/24 管理机器 mon01 192.168.0.2/24 10.0.1.3/24 集群状态监控机器 osd01 192.168.0.3/24 10.0.1.3/24 集

CEPH的基本概念及通过Ceph-Deploy快速部署CEPH集群

基础概念 **OSD**:Object Storage Device,主要用于存储数据,处理数据,,恢复,回不,平衡数据,并提供数据给monitor. **Monitor**:Ceph监视器,主要用于集群健康状态维护,提供策略,包含Monitor Map ,OSD Map,PG ma和CRUSH MAP **MSD**:Cpeh Metadata Server,主要保存ceph文件系统的元数据,快存储,对象存储不需要MSD. Ceph的架构核心组件RADOS,如架构图 RADOS:具备自我修复的

Ceph分布式存储(luminous)部署文档-ubuntu18-04

Ceph分布式存储(luminous)部署文档 环境 ubuntu18.04 ceph version 12.2.7 luminous (stable) 三节点 配置如下 node1:1U,1G mem,20G disk,两块空硬盘(sdb,sdc) node2:1U,1G mem,20G disk,两块空硬盘(sdb,sdc) node3:1U,1G mem,20G disk,两块空硬盘(sdb,sdc) role hostname ip dep(部署节点) node1 192.168.113

Ceph分布式存储集群-硬件选择

在规划Ceph分布式存储集群环境的时候,对硬件的选择很重要,这关乎整个Ceph集群的性能,下面梳理到一些硬件的选择标准,可供参考: 1)CPU选择Ceph metadata server会动态的重新分配负载,它是CPU敏感性的,所以Metadata Server应该有比较好的处理器性能 (比如四核CPU). Ceph OSDs运行RADOS服务,需要通过CRUSH来计算数据的存放位置,replicate数据,以及维护Cluster Map的拷贝,因此OSD也需要合适的处理性能 Ceph Moni

简单介绍Ceph分布式存储集群

在规划Ceph分布式存储集群环境的时候,对硬件的选择很重要,这关乎整个Ceph集群的性能,下面梳理到一些硬件的选择标准,可供参考: 1)CPU选择 Ceph metadata server会动态的重新分配负载,它是CPU敏感性的,所以Metadata Server应该有比较好的处理器性能 (比如四核CPU). Ceph OSDs运行RADOS服务,需要通过CRUSH来计算数据的存放位置,replicate数据,以及维护Cluster Map的拷贝,因此OSD也需要合适的处理性能 Ceph Mon

zz``让我们了解 Ceph 分布式存储

https://www.cnblogs.com/yangxiaoyi/p/7795274.html 前言 最近在学习 kubernetes 过程中,想实现 pod 数据的持久化.在调研的过程中,发现 ceph 在最近几年发展火热,也有很多案例落地企业.在选型方面,个人更加倾向于社区火热的项目,GlusterFS.Ceph 都在考虑的范围之内,但是由于 GlusterFS 只提供对象存储和文件系统存储,而 Ceph 则提供对象存储.块存储以及文件系统存储.怀着对新事物的向往,果断选择 Ceph 来

MariaDB Galera Cluster 部署(如何快速部署 MariaDB 集群)

MariaDB Galera Cluster 部署(如何快速部署 MariaDB 集群)  OneAPM蓝海讯通7月3日 发布 推荐 4 推荐 收藏 14 收藏,1.1k 浏览 MariaDB 作为 Mysql 的一个分支,在开源项目中已经广泛使用,例如大热的 openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力,集群部署是必不可少的. MariaDB Galera Cluster 介绍 MariaDB 集群是 MariaDB 同步多主机集群.它仅支持 XtraDB/ Inn