Ceph
Ceph运维告诉你分布式存储的那些“坑”
· ☕ 3 分钟 · ✍️ starifly
ceph rgw高可用和负载均衡
· ☕ 2 分钟 · ✍️ starifly
环境配置
安装依赖
yum install pcre-devel.x86_64 openssl-devel zlib-devel systemd-devel gcc gcc-c++
内核调优
#vim /etc/sysctl.conf
vm.swappiness = 0
net.ipv4.ip_forward = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1025 65023
net.ipv4.tcp_max_syn_backlog = 10240
检查
/usr/sbin/sysctl net.ipv4.ip_nonlocal_bind
/usr/sbin/sysctl net.ipv4.ip_forward
cat /proc/sys/net/ipv4/ip_forward
查看是否开启了ip转发功能
如果上述文件中的值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开。
ceph 操作命令
· ☕ 2 分钟 · ✍️ starifly
查看ceph的实时运行状态
ceph -w
查看ceph存储空间
ceph df/ceph df detail
查看集群的详细配置
ceph daemon mon.ceph001 config show | more
or
ceph --admin-daemon /var/run/ceph/ceph-mon.ceph001.asok config show
查看集群版本信息
ceph versions
查看集群认证信息
ceph auth list
查看gc时间
radosgw-admin gc list --include-all | grep time
mon命令
ceph mon stat#查看mon的状态信息
mds命令
ceph mds stat #查看msd状态
osd命令
ceph osd stat #查看osd状态
ceph osd df #查看osd磁盘
ceph osd dump #osd的映射信息
ceph osd perf #查看osd性能和延迟
ceph osd tree#查看osd目录树
rgw命令
radosgw-admin bucket list #查看所有桶
radosgw-admin bucket list --bucket=asdas #查看桶内对象
radosgw-admin bucket stats --bucket=asdas #查看桶信息
radosgw-admin bucket rm --bucket=s3test1 #删除一个桶
radosgw-admin bucket rm --bucket=s3test1 --purge-objects #默认只能删空的bucket,强制删除非空的bucket需要加上“--purge-objects ”选项
radosgw-admin bucket check --bucket=s3test1 #查看桶的索引信息
radosgw-admin object rm --object=1.jpg --bucket=s3test3 #删除桶中的对象
radosgw-admin object unlink --bucket=s3test3 —object=1.jpg #从桶索引里去除对象
radosgw-admin bucket limit check [--uid test] #查看Sharding Stat
radosgw-admin bucket stats --bucket=bucketname|grep -w 'num_objects' #查询桶的对象个数
创建realm:
realm里所有的元數據名稱都是全局唯一的,無法創建同名的用戶(uid)和bucket, container;
radosgw-admin realm create --rgw-realm=Giant --default
查看存在的realm:
radosgw-admin realm list
查看bucket 的信息
radosgw-admin metadata get bucket:bucketname
获取bucket id 并根据 bucket id 从bucket.instace中获取真实shards,可以看到num_shards的值
radosgw-admin metadata get bucket.instance:api_image_test:4fb0079d-88d8-404e-9e3f-1375ba40a870.324279.2
查看index 下保留的shard数量(包含历史的分片)
rados ls -p default.rgw.buckets.index
查看bucket : bucketname 当前的shard分片,首先找到 当前bucket id
找到bucket id后查询具体的shard编号,如下
rados ls -p default.rgw.buckets.index | grep "555c6dcf-7320-4b34-8922-5e005dedc130.164465.1"
统计当前使用的shard数
rados ls -p default.rgw.buckets.index | grep "555c6dcf-7320-4b34-8922-5e005dedc130.164465.1" | wc -l
查看当前shard 存在的index数据
rados -p default.rgw.buckets.index listomapkeys .dir.555c6dcf-7320-4b34-8922-5e005dedc130.164465.1.769
ceph剔除主机脚本
· ☕ 1 分钟 · ✍️ starifly
ceph从14.2.20升级到14.2.22
· ☕ 2 分钟 · ✍️ starifly
注意:此文档用于 Ceph Nautilus 版本(包括社区版 Ceph 14.2.x 和红帽版 Redhat Ceph Storage 4.x)内的小版本升级,不能用于 Ceph 大版本升级(例如从 Ceph Luminous 升级到 Ceph Nautilus)。
Ceph 集群简介
Ceph Nautilus 集群(docker方式部署)包括的角色如下:
ceph rgw创建新的region
· ☕ 2 分钟 · ✍️ starifly
ceph rgw桶分片问题
· ☕ 4 分钟 · ✍️ starifly
背景说明
RGW 为每个 bucket 维护了一份索引,里面保存了 bucket 中全部对象的元数据。RGW 本身并没有足够有效的遍历对象的能力,所以在处理请求时,这些索引数据非常重要,比如遍历 bucket 中全部对象时。bucket 索引信息还有其他用处,比如为版本控制的对象维护日志、bucket 配额元数据和跨区同步的日志。bucket 索引不会影响对象的读操作,但写和修改确实会增加一些额外的操作。
使用grafana+prometheus监控ceph集群并实现钉钉报警
· ☕ 3 分钟 · ✍️ starifly
在Ceph Luminous之前的版本,可以使用第三方的Prometheus exporter ceph_exporter。 Ceph Luminous 12.2.1后的mgr中自带了Prometheus插件,内置了 Prometheus ceph exporter,可以使用Ceph mgr内置的exporter作为Prometheus的target。
ceph三节点故障恢复
· ☕ 2 分钟 · ✍️ starifly
ceph 集群有三个节点,每台节点都用 docker 容器部署了 mon、osd、mgr、rgw、mds 服务,现在假设在其它机器备份了ceph集群的配置和认证信息(/etc/ceph和/var/lib/ceph目录),而当前三个节点全部出现系统故障导致集群瘫痪的情况下,我们怎么恢复 ceph 集群。