美文网首页Ceph
ceph rgw故障处理

ceph rgw故障处理

作者: ypdai | 来源:发表于2018-08-03 11:22 被阅读177次

前言

这里想总结下,平时遇到的ceph rgw相关的故障和对应的处理方法。方便下次遇到类似问题之后,能快速有效的找到解决方案。这里故障案例的来源我是会从各种渠道去收集的,比如:自身环境、官网、群友在群里反馈等等地方。

有时间会持续更新。

1、radosgw请求被卡住

现象

有时候radosgw的客户端(比如s3cmd),在和radosgw交互过程中出现卡顿,radosgw响应请求非常慢等状况。

分析

首先我们先检查下客户端和集群的网络有没有问题,如果没有问题。我们可以通过radosgw的守护进程的管理套接字来获取radosgw的内部相关信息。到radosgw实例所在节点上执行如下命令:

$ ceph daemon client.rgw.ceph03 objecter_requests
{ "ops": [
  { "tid": 1858,
    "pg": "2.d2041a48",
    "osd": 1,
    "last_sent": "2012-03-08 14:56:37.949872",
    "attempts": 1,
    "object_id": "fatty_25647_object1857",
    "object_locator": "@2",
    "snapid": "head",
    "snap_context": "0=[]",
    "mtime": "2012-03-08 14:56:37.949813",
    "osd_ops": [
          "write 0~4096"]},
  { "tid": 1873,
    "pg": "2.695e9f8e",
    "osd": 1,
    "last_sent": "2012-03-08 14:56:37.970615",
    "attempts": 1,
    "object_id": "fatty_25647_object1872",
    "object_locator": "@2",
    "snapid": "head",
    "snap_context": "0=[]",
    "mtime": "2012-03-08 14:56:37.970555",
    "osd_ops": [
          "write 0~4096"]}],
"linger_ops": [],
"pool_ops": [],
"pool_stat_ops": [],
"statfs_ops": []
}

上面命令输出里面的ops字段里面可以看到有两个请求,tid为1858和tid为1873的请求。我们拿tid为1858的请求举例说明,这个请求信息为

{ "tid": 1858,
    "pg": "2.d2041a48",
    "osd": 1,
    "last_sent": "2012-03-08 14:56:37.949872",
    "attempts": 1,
    "object_id": "fatty_25647_object1857",
    "object_locator": "@2",
    "snapid": "head",
    "snap_context": "0=[]",
    "mtime": "2012-03-08 14:56:37.949813",
    "osd_ops": [
          "write 0~4096"]}

其中last_sent字段表示发送给rados请求的时间,如果这个时间和当前时间相差间隔比较大,说明这个发送给rados的请求,rados一直没有回应,导致radosgw无法回复客户端(s3cmd)请求,所以客户端s3cmd就会出现卡顿的情况。

好了,我们知道了原因,然后在继续看osd这个字段,它表示radosgw将这个请求发给了哪个osd,上面可以看到是发给了osd.1这个osd,pg是2.d2041a48,然后我们执行

$ ceph pg map 2.d2041a48
osdmap e9 pg 2.d2041a48 (2.0) -> up [1,0] acting [1,0]

可以看到,这个pg的主本是osd.1,副本是osd.0,然后我们到osd.1所在的节点,执行命令

$ ceph deamon osd.1 ops
{ "num_ops": 651,
 "ops": [
       { "description": "osd_op(client.4124.0:1858 fatty_25647_object1857 [write 0~4096] 2.d2041a48)",
         "received_at": "1331247573.344650",
         "age": "25.606449",
         "flag_point": "waiting for sub ops",
         "client_info": { "client": "client.4124",
             "tid": 1858}},
...

上面信息中找到tid为1858这个请求的相关信息,然后看到flag_point这个字段,waiting for sub ops表示在等待其他副本osd.0的回复。
现在我们知道了是因为osd.0没有回复消息给主本osd.1,从而导致整个io被卡住,因为osd.0没有回复消息的可能性非常多,所以就要根据实际的情况去排查osd.0为啥没有回复消息给主本osd.1了。

相关文章

  • ceph rgw故障处理

    前言 这里想总结下,平时遇到的ceph rgw相关的故障和对应的处理方法。方便下次遇到类似问题之后,能快速有效的找...

  • ceph学习(二)RGW搭建

    背景Ceph RGW简介 Ceph RGW基于librados,是为应用提供RESTful类型的对象存储接口。RG...

  • Ceph RGW:数据的存储及寻址

    RGW数据分布及寻址 RGW是一个对象处理网关。数据实际存储在ceph集群中。利用librados的接口,与cep...

  • Ceph对象存储RGW架构及安装实战

    Ceph RGW架构简介 我们知道Ceph可以提供块、文件和对象三种形态的存储。而RGW就是提供对象存储的网关,也...

  • ceph故障处理

    1. 3 stuck requests are blocked > 4096 sec. Implicated os...

  • rgw实现nfs

    ceph一、功能介绍关于rgw实现nfs接口这个,刚接触的人可能并不清楚这个是个什么样的服务架构,rgw是ceph...

  • c++ 11: enable_if

    最近在看ceph rgw的源码, 在其客户端数据处理部分遇到std::enable_if的概念,如下: enabl...

  • 客户端-RGW监控埋点

    1. RADOS 1.1 RGW Client Metrics Table ceph --admin-daemon...

  • ceph支持对象存储多租户

    搞定ceph对象存储集成keystone认证。rgw keystone make new tenants = true

  • 【ceph】安装-对象存储rgw

    简介安装rgw对象存储网关并创建用户和桶 部署rgw 创建池 重启网关 测试访问ceph集群 创建radosgw用...

网友评论

    本文标题:ceph rgw故障处理

    本文链接:https://www.haomeiwen.com/subject/ywdyvftx.html