ceph docker搭建

centos7.4 docker环境搭建ceph集群

docker镜像

docker pull ceph/daemon:latest-luminous

注意下载的ceph镜像版本需要指定为latest-luminous,网上其他的docker搭建讲解都是latest,他们留下文档时间太早。


启动mon服务

#docker run -d --net=host --name=mon -v /etc/ceph:/etc/ceph -v /var/lib/ceph:/var/lib/ceph -e MON_IP=192.168.0.21 -e CEPH_PUBLIC_NETWORK=192.168.0.0/24 ceph/daemon:latest-luminous mon

192.168.0.21是部署的物理机或云主机所在网络
/etc/ceph ; /var/lib/ceph是容器内配置文件所在位置,与外部物理机或云主机做文件映射

检查容器状态

[root@ceph2 etc]# docker ps
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS               NAMES
2ec681cdcd27        ceph/daemon:latest-luminous   "/opt/ceph-contain..."   2 minutes ago       Up 2 minutes                            mon
[root@ceph2 etc]# docker exec mon ceph -s
  cluster:
    id:     471883b4-d13c-4d7c-bb39-fe2e77680b23
    health: HEALTH_OK

  services:
    mon: 1 daemons, quorum ceph2
    mgr: no daemons active
    osd: 0 osds: 0 up, 0 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0B
    usage:   0B used, 0B / 0B avail
    pgs:

验证mon服务已经启动

这里踩坑,注意要运行luminous版本的ceph容器镜像,否则启动mon时,无法在/var/lib/ceph/bootstrap-osd中无法生成ceph.keyring文件,导致启动osd时找不到该文件,而发生认证失败情况;


启动osd
注意物理机或云主机已经介入硬盘设备

[root@ceph2 etc]# fdisk -l

Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000a5a8a

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048    83886079    41942016   83  Linux

Disk /dev/vdb: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/vdc: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

Disk /dev/vdd: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt
Disk identifier: 8B756319-14C6-4074-86C7-03625EF2FD01


#         Start          End    Size  Type            Name
 1         2048       206847    100M  Ceph OSD        ceph data
 2      3483648    209715166   98.3G  unknown         ceph block
 3       206848      2303999      1G  unknown         ceph block.db
 4      2304000      3483647    576M  unknown         ceph block.wal

注意这里的/dev/vdb,/dev/vdc,/dev/vdd,尽可能提前格式化

[root@ceph2 etc]# mkfs.ext4 /dev/vdd
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
6553600 inodes, 26214400 blocks
1310720 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2174746624
800 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

本文部署单节点osd,测试使用,所以配置osd副本数为1,并重启mon容器
在/etc/ceph/ceph.conf中添加

osd pool default size = 1

启动osd

#docker run -d --net=host --name=osd --privileged=true --pid=host -v /etc/ceph:/etc/ceph -v /var/lib/ceph:/var/lib/ceph -v /dev/:/dev/ -e OSD_TYPE=disk -e OSD_FORCE_ZAP=1 -e OSD_DEVICE=/dev/vdd ceph/daemon:latest-luminous osd_directory

注意命令中使用的/dev/vdd设备未进行任何挂载

osd状态检查

[root@ceph2 ceph]# docker ps                                                                                                        CONTAINER ID        IMAGE                         COMMAND                  CREATED              STATUS
          PORTS               NAMES
a4b6896b0f07        ceph/daemon:latest-luminous   "/opt/ceph-contain..."   About a minute ago   Up About a minute                       osd
5650908f9b11        ceph/daemon:latest-luminous   "/opt/ceph-contain..."   9 minutes ago        Up 9 minutes                            mon
[root@ceph2 ceph]# docker exec mon ceph -s
  cluster:
    id:     4d40f5a8-d291-45b4-b635-492f8b01e9bc
    health: HEALTH_WARN
            no active mgr

  services:
    mon: 1 daemons, quorum ceph2
    mgr: no daemons active
    osd: 1 osds: 1 up, 1 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0B
    usage:   0B used, 0B / 0B avail
    pgs:

启动mgr

#docker run -d --net=host --name=mgr -v /etc/ceph:/etc/ceph -v /var/lib/ceph:/var/lib/ceph ceph/daemon:latest-luminous mgr

状态检查

[root@ceph2 ceph]# docker ps
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS               NAMES
a42d8cfa41ab        ceph/daemon:latest-luminous   "/opt/ceph-contain..."   3 seconds ago       Up 2 seconds                            mgr
a4b6896b0f07        ceph/daemon:latest-luminous   "/opt/ceph-contain..."   2 minutes ago       Up 2 minutes                            osd
5650908f9b11        ceph/daemon:latest-luminous   "/opt/ceph-contain..."   10 minutes ago      Up 10 minutes                           mon
[root@ceph2 ceph]# docker exec mon ceph -s
  cluster:
    id:     4d40f5a8-d291-45b4-b635-492f8b01e9bc
    health: HEALTH_OK

  services:
    mon: 1 daemons, quorum ceph2
    mgr: ceph2(active)
    osd: 1 osds: 1 up, 1 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0B
    usage:   4.56GiB used, 35.4GiB / 40.0GiB avail
    pgs:

启动dashboard

[root@ceph2 ceph]# docker exec mon ceph mgr module enable dashboard
[root@ceph2 ceph]# docker exec mon ceph mgr dump
{
    "epoch": 42,
    "active_gid": 4130,
    "active_name": "ceph2",
    "active_addr": "192.168.0.21:6804/120",
    "available": true,
    "standbys": [],
    "modules": [
        "balancer",
        "dashboard",
        "restful",
        "status"
    ],
    "available_modules": [
        "balancer",
        "dashboard",
        "influx",
        "localpool",
        "prometheus",
        "restful",
        "selftest",
        "status",
        "zabbix"
    ],
    "services": {
        "dashboard": "http://ceph2:7000/"
    }
}

创建池

# docker exec mon ceph osd pool create swimmingpool 30

创建后,ceph集群状态出现告警

2019-04-14 13:24:04.843747 [INF]  Health check cleared: PG_AVAILABILITY (was: Reduced data availability: 30 pgs inactive) 
2019-04-14 12:55:18.250747 [WRN]  Health check failed: Degraded data redundancy: 30 pgs undersized (PG_DEGRADED) 

是pg和数据池的一些配置问题
进行配置

# docker exec mon ceph osd pool set swimmingpool min_size 1

之后集群状态恢复
具体问题参考
https://www.imooc.com/article/43575

出现新问题

2019-04-14 13:25:04.801042 [WRN]  Health check failed: Degraded data redundancy: 30 pgs undersized (PG_DEGRADED) 

原因是Peering完成后,PG检测到任意一个PG实例存在不一致(需要被同步/修复)的对象,或者当前ActingSet 小于存储池副本数

Degraded说明
降级:由上文可以得知,每个PG有三个副本,分别保存在不同的OSD中,在非故障情况下,这个PG是active+clean 状态,那么,如果PG 的 副本osd.4 挂掉了,这个 PG 是降级状态

降级就是在发生了一些故障比如OSD挂掉之后,Ceph 将这个 OSD 上的所有 PG 标记为 Degraded。
降级的集群可以正常读写数据,降级的 PG 只是相当于小毛病而已,并不是严重的问题。
Undersized的意思就是当前存活的PG 副本数为 2,小于副本数3,将其做此标记,表明存货副本数不足,也不是严重的问题。

创建块

#docker exec mon  rbd create --size 1024 swimmingpool/bar

问题记录
1、application not enabled on 1 pool(s) (POOL_APP_NOT_ENABLED)
解决方法:

#docker exec mon ceph osd pool application enable swimmingpool rbd
enabled application 'rbd' on pool 'swimmingpool'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容

  • 2016.06.13 直接错过了一个半月。好吧。 其实今天没有什么特别想说的,都写的话,要写的就太多了。有时候我就...
    小咩兽阅读 290评论 0 1
  • 偏生的冷模样已是花一朵千里冰霜散落一地的轻柔雪花虚飘呵护着指尖轻点的少女飞奔的少年银铃般的欢笑声声悦耳轻扬又轻扬青...
    隐瞳小妖的夜宴阅读 551评论 0 1
  • 2019-02-25 不干扰孩子做自己喜欢的事情,孩子才能在做事情时更加专注,也才能将事情做的更好。 保护孩子专注...
    ly安然阅读 27评论 0 1
  • 陶行知“生活即教育” 班主任和学生的关系:管理者、组织者“用生命影响生命”引领、守望、陪伴、记录、见证。 高三誓师...
    夭夭稳妈阅读 1,088评论 0 0
  • 文案写作手册 休格曼 app第四章到293页 在这一章里作者揭示了他写作文案的秘密。很多心得是他花了百万课程才得到...
    小鱼的世界阅读 125评论 0 0