架构扩展-ceph(1)

简介: 架构扩展-ceph(1)

理论:

Ceph是一个开源的、统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。

ceph支持的三种存储方式:

   块存储 RDB: 安全、读写性强、大型或超大型企业使用,需要光纤组网成本高

   对象存储 RGW:键值存储、安全、高读写、简单易管理,不适应变动大的文件、不适合数据库、系统挂载困难

   文件系统存储 CephFS:成本低、适用于内部文件共享,低读写、低传输

ceph组件:

   osd: 存储数据、副本数据处理、数据恢复、数据回补、平衡数据分布,并将数据相关的一些监控信息提供给mon,以便mon来检查其他OSD的心跳状态。

   mon:负责监视Ceph集群,维护Ceph集群的健康状态,同时维护着Ceph集群中的各种Map图

   mds: 保存的是Ceph文件系统的元数据。Ceph的块设备和Ceph对象存储都不需要mds

   mgr: 负责跟踪运行时间指标和Ceph群集的当前状态,包括存储利用率,当前性能指标和系统负载。



1.环境

ceph01 192.168.8.10    admin、osd、mon、mgr

ceph02 192.168.8.20 osd、mds、mon、mgr

ceph03 192.168.8.30    osd、mds、mon、mgr

client 192.168.8.40 client

(前3台另加一块100G硬盘,不要分区)


2.ssh免密

ceph01:
cat >> /etc/hosts << EOF
192.168.8.10 ceph01
192.168.8.20 ceph02
192.168.8.30 ceph03
192.168.8.40 client
EOF 
ssh-keygen
for i in ceph01 ceph02 ceph03 client;do ssh-copy-id $i;done
scp /etc/hosts ceph02:/etc 
scp /etc/hosts ceph03:/etc 
scp /etc/hosts client:/etc


3.所有ceph主机基础配置


yum源:

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

wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

cat> /etc/yum.repos.d/ceph.repo << EOF

[ceph]
name=ceph
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=ceph-noarch
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/noarch/
gpgcheck=0
EOF

时间同步:

yum -y install chrony

vim /etc/chrony.conf

修改:

server ntp1.aliyun.com iburst

server ntp2.aliyun.com iburst

server ntp3.aliyun.com iburst

保存退出

systemctl restart chronyd


安装ceph-deploy

yum install -y ceph-deploy ceph ceph-radosgw snappy leveldb gdisk python-argparse gperftools-libs


4.创建集群

(1)管理节点,多个mon模式

ceph01:

cd /etc/ceph/

ceph-deploy new ceph01 ceph02 ceph03


ls /etc/ceph/

ceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring  rbdmap


# ceph.conf 为 ceph 配置文件;

 ceph-deploy-ceph.log 为 ceph-deploy 日志文件;

 ceph.mon.keyring 为 ceph monitor 的密钥环。


# 把 Ceph 配置文件里的默认副本数从 3 改成 2 ,这样只有两个 OSD 也可以达到 active + clean 状态。

echo "osd_pool_default_size = 2" >> ceph.conf


(2)初始化mon节点,收集所有秘钥

# 管理节点

ceph01:

ceph-deploy mon create-initial

# 查看集群状态

ceph -s


5.添加osd服务

# 使用ceph自动分区

ceph01:

ceph-deploy disk zap ceph01 /dev/sdb

ceph-deploy disk zap ceph02 /dev/sdb

ceph-deploy disk zap ceph03 /dev/sdb


# 添加osd节点

ceph01:

ceph-deploy osd create ceph01 --data /dev/sdb

ceph-deploy osd create ceph02 --data /dev/sdb

ceph-deploy osd create ceph03 --data /dev/sdb


# 查看osd节点

ceph01:

ceph-deploy osd list ceph01 ceph02 ceph03



6.添加mgr服务

ceph01:

ceph-deploy mgr create ceph01 ceph02 ceph03


7.统一集群配置

ceph01:

ceph-deploy admin ceph01 ceph02 ceph03


# 集群每一个节点授权

chmod +r /etc/ceph/ceph.client.admin.keyring


8.添加mds服务

ceph01:

ceph-deploy mds create ceph02 ceph03


#查看mds状态

ceph mds stat


#查看集群状态

ceph -s  


----------------

ceph集群应用


一.文件系统运用

1.创建CephFS

# 查看文件系统

ceph01:

ceph fs ls

显示无文件系统


# CephFS 需要两个Pools: cephfs-data、cephfs-metadata, 分别存储文件数据和文件元数据

# 取值范围:osd<5 取128;osd 5-10 取512;osd 10-50取4096;osd>50 通过pgcalc计算

ceph01:

ceph osd pool create ceph_data 128

ceph osd pool create ceph_metadata 128


# 为存储池创建文件系统

ceph01:

ceph fs new cephfs ceph_metadata ceph_data


#查看文件系统和mds状态

ceph01:

ceph fs ls

ceph fs status cephfs


2.客户端挂载

(1) 普通挂载

# 客户端创建挂载点
client:
mkdir /data 
# 管理节点查看客户端秘钥
ceph01:
cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
    key = AQC++Zxk7ie+IxAAaOUqx/ZErIEXBfHNhDqK8g==
# 客户端使用秘钥挂载
client: 
mount -t ceph 192.168.8.10:6789:/ /data/ -o name=admin,secret=AQC++Zxk7ie+IxAAaOUqx/ZErIEXBfHNhDqK8g==
# 卸载
umount /data


(2) 用户空间方式挂载

# 客户端安装ceph-fuse 
client:
yum -y install ceph-fuse
mkdir /etc/ceph  
# 管理节点复制秘钥和配置文件到客户端
ceph01:
scp ceph.client.admin.keyring ceph.conf client:/etc/ceph/
# 客户端挂载
ceph-fuse -m 192.168.8.10:6789 /data/
# 查看挂载
df -hT

二.块存储运用

1.查看内核是否支持rbd,否则升级内核

ceph01:

modprobe rbd

lsmod | grep rbd


2.创建块存储的存储池

ceph01:
ceph osd pool create rbd 64
# pg取值一般64 128 256,具体看osd数量
# 查看pg值 
ceph osd pool get rbd pg_num
# 手动设置pg值
ceph osd pool set rbd pg_num 128


3.创建块存储镜像

ceph01:

rbd create --size 102400 rbd/test1


#更改镜像大小

rbd resize --size 51200 test1 --allow-shrink


# 查看rbd信息

rbd ls

rbd info test1


4.客户端映射块设备

client:

# 安装ceph命令
yum -y install ceph-common
# 内核4.0前系统需要关闭某些功能
rbd feature disable test1 object-map fast-diff deep-flatten exclusive-lock
# 映射rbd
rbd map test1 
#挂载
mkdir /cephrbd
mkfs.xfs /dev/rbd0
mount /dev/rbd0 /cephrbd 
# 测试写入
dd if=/dev/zero of=/cephrbd/file bs=100M count=1
# 查看rados(ceph底层系统)
rados df

5.创建快照并测试回滚

client:
rbd snap create --snap mysnap rbd/test1
# 删除文件
rm -rf /cephrbd/file 
# 取消挂载
umount /dev/rbd0
# 回滚
rbd snap rollback rbd/test1@mysnap
# 重新挂载并查看文件
mount /dev/rbd0 /cephrbd/
ls /cephrbd 
6. 块设备克隆(基于快照)
# 保护快照
rbd snap protect rbd/test1@mysnap
# 卸载
umount /dev/rbd0
# 基于快照克隆
rbd clone rbd/test1@mysnap rbd/test2
# 查看块存储
rbd ls 
# 映射rbd
rbd map rbd/test2
# 挂载新设备
mkdir /cephrbd1
mount /dev/rbd1 /cephrbd1
ls /cephrbd1


-----------------------------

ceph常用命令

1.服务相关

systemctl status ceph\*.service ceph\*.target      #查看所有服务
systemctl stop ceph\*.service ceph\*.target      #关闭所有服务
systemctl start ceph.target                       #启动服务
systemctl stop ceph-osd\*.service                  # 关闭所有osd服务
systemctl stop ceph-mon\*.service                  #关闭所有mon服务
systemctl start ceph-osd@{id}                      #启动单个osd服务
systemctl start ceph-mon@{hostname}             #启动单个mon服务
systemctl start ceph-mds@{hostname}             #启动单个mds服务

2.查看

ceph -help #查看命令帮助
ceph -s #查看状态
ceph osd pool set rbd pg_num 1024   # 修改pg_num数量
ceph osd pool set rbd pgp_num 1024   # 修改pgp_num数量
ceph osd tree  #查看osd树列表
ceph osd pool ls  #查看所有的osd池
ceph --admin-daemon /var/run/ceph/ceph-osd.0.asok config show  # 查看指定的osd运行中的所有参数
rados df   #查看储存池使用情况
rados -p rbd ls |sort  
ceph osd pool get rbd pg_num 
ceph osd pool get rbd pgp_num 
ceph osd pool set rbd pg_num 1024
ceph osd pool set rbd pgp_num 1024

3.清除ceph配置

systemctl stop ceph\*.service ceph\*.target        #停止所有进程
ceph-deploy uninstall [{ceph-node}]                #卸载所有ceph程序
ceph-deploy purge {ceph-node} [{ceph-data}]        #删除ceph相关的安装包
    例如:ceph-deploy purge node4
ceph-deploy purgedata {ceph-node} [{ceph-data}]    #删除ceph相关的配置
ceph-deploy forgetkeys                            #删除key
yum -y remove ceph-deploy                        #卸载ceph-deploy管理
相关实践学习
基于EBS部署高性能的MySQL服务
如果您通常是通过ECS实例部署MySQL来使用数据库服务,您可以参考本实验操作来搭建高性能的MySQL服务。本实验为您演示如何通过EBS ESSD云盘部署一个高性能的MySQL服务。
相关文章
|
1月前
|
负载均衡 测试技术 持续交付
高效后端开发实践:构建可扩展的微服务架构
在当今快速发展的互联网时代,后端开发扮演着至关重要的角色。本文将重点探讨如何构建可扩展的微服务架构,以及在后端开发中提高效率的一些实践方法。通过合理的架构设计和技术选型,我们可以更好地应对日益复杂的业务需求,实现高效可靠的后端系统。
|
1月前
|
监控 持续交付 API
构建高效可扩展的微服务架构
在当今快速迭代和竞争激烈的软件市场中,构建一个高效、可扩展且易于维护的后端系统变得尤为重要。微服务架构作为一种流行的分布式系统设计方式,允许开发者将应用程序划分为一系列小型、自治的服务,每个服务负责执行特定的业务功能。本文将探讨如何利用现代技术栈搭建一个符合这些要求的微服务架构,并讨论其潜在的挑战与解决方案。我们将涵盖服务划分策略、容器化、服务发现、API网关、持续集成/持续部署(CI/CD)以及监控和日志管理等关键主题,以帮助读者构建出既可靠又灵活的后端系统。
|
1月前
|
监控 Kubernetes 持续交付
构建高效可扩展的微服务架构:后端开发实践指南
在数字化转型的浪潮中,企业对软件系统的要求日益提高,追求快速响应市场变化、持续交付价值成为核心竞争力。微服务架构以其灵活性、模块化和独立部署的特点,成为解决复杂系统问题的有效途径。本文将深入探讨如何构建一个高效且可扩展的微服务架构,涵盖关键设计原则、技术选型及实践案例,为后端开发者提供一条清晰的指导路线,帮助其在不断变化的技术环境中保持竞争力。
135 3
|
2月前
|
运维 监控 数据管理
Apollo与微服务架构:构建可扩展的应用程序
Apollo与微服务架构:构建可扩展的应用程序
|
2月前
|
存储 算法 关系型数据库
Ceph介绍及原理架构分享
Ceph介绍及原理架构分享
159 0
|
3月前
|
设计模式 缓存 前端开发
单页应用的架构与设计:打造高效可扩展的 Web 应用(下)
单页应用的架构与设计:打造高效可扩展的 Web 应用(下)
单页应用的架构与设计:打造高效可扩展的 Web 应用(下)
|
3月前
|
缓存 JavaScript 前端开发
单页应用的架构与设计:打造高效可扩展的 Web 应用(上)
单页应用的架构与设计:打造高效可扩展的 Web 应用(上)
单页应用的架构与设计:打造高效可扩展的 Web 应用(上)
|
7月前
|
存储 关系型数据库 数据库
【北亚企安数据恢复】Ceph分布式存储基本架构&Ceph数据恢复流程
Ceph存储可分为块存储,对象存储和文件存储。Ceph基于对象存储,对外提供三种存储接口,故称为统一存储。 Ceph的底层是RADOS(分布式对象存储系统),RADOS由两部分组成:OSD和MON。 MON负责监控整个集群,维护集群的健康状态,维护展示集群状态的各种图表,如OSDMap、MonitorMap、PGMap和CRUSHMap。 OSD负责存储数据、复制数据、平衡数据、恢复数据,与其它OSD间进行心跳检查等。通常情况下一块硬盘对应一个OSD。
|
7月前
|
容灾 数据库 数据中心
单元化架构:解锁异地多活与突破扩展上限的利器
单元化架构:解锁异地多活与突破扩展上限的利器
|
2月前
|
缓存 分布式计算 负载均衡
构建高效可扩展的后端系统架构
【2月更文挑战第9天】本文将介绍如何构建一种高效可扩展的后端系统架构,以满足不断增长的用户需求和应对大规模并发请求。我们将讨论关键的技术要点,包括分布式计算、负载均衡、缓存和数据库优化等,帮助读者在设计和开发后端系统时做出明智的决策。