zoukankan      html  css  js  c++  java
  • docker创建ceph集群

    背景

      Ceph官方现在提供两类镜像来创建集群,一种是常规的,每一种Ceph组件是单独的一个镜像,如ceph/daemon、ceph/radosgw、ceph/mon、ceph/osd等;另外一种是最新的方式,所有的Ceph组件都集成在一个镜像ceph/daemon中,如果要创建对应的Ceph组件容器,只需要指定类型即可。这里,我们使用第一种方式来创建Ceph集群。
      另外,这里所有的容器,都是在同一个Docker host上创建的。

    重新开始

      在搭建过程中,如果遇到了任何问题,想删除之前的环境,并重新开始搭建时,可以运行如下命令:

    #  rm -rf /etc/ceph /var/lib/ceph/  /opt/osd/; mkdir -p /etc/ceph /var/lib/ceph/osd /opt/osd/;chown -R 64045:64045 /var/lib/ceph/osd/;chown -R 64045:64045 /opt/osd/; docker rm -f $(docker ps -a | grep "ceph" | awk '{print $1}');
    

      这里,分别删除了ceph配置、osd目录。并重新创建目录并更改所属用户(这一步非常重要),再删除所有有ceph关键字的容器。

    搭建集群

    创建monitor节点

      这里,假设monitor节点的ip为192.168.1.111。

    # docker run -itd --name mymon --network my-bridge --ip 192.168.1.111 -e MON_NAME=mymon -e MON_IP=192.168.1.111 -v /etc/ceph:/etc/ceph ceph/mon
    

    在monitor节点上标识osd

    # docker exec mymon ceph osd create
    0
    # docker exec mymon ceph osd create
    1
    # docker exec mymon ceph osd create
    2
    

    创建osd节点

    # docker run -itd --name osd0 --network my-bridge -e CLUSTER=ceph -e WEIGHT=1.0 -e MON_NAME=mymon -e MON_IP=192.168.1.111 -v /etc/ceph:/etc/ceph -v /opt/osd/0:/var/lib/ceph/osd/ceph-0 ceph/osd 
    # docker run -itd --name osd1 --network my-bridge -e CLUSTER=ceph -e WEIGHT=1.0 -e MON_NAME=mymon -e MON_IP=192.168.1.111 -v /etc/ceph:/etc/ceph -v /opt/osd/1:/var/lib/ceph/osd/ceph-1 ceph/osd 
    # docker run -itd --name osd2 --network my-bridge -e CLUSTER=ceph -e WEIGHT=1.0 -e MON_NAME=mymon -e MON_IP=192.168.1.111 -v /etc/ceph:/etc/ceph -v /opt/osd/2:/var/lib/ceph/osd/ceph-2 ceph/osd 
    

    再创建两个monitor节点组成集群

    # docker run -itd --name mymon_1 --network my-bridge --ip 192.168.1.112 -e MON_NAME=mymon_1 -e MON_IP=192.168.1.112 -v /etc/ceph:/etc/ceph ceph/mon
    # docker run -itd --name mymon_2 --network my-bridge --ip 192.168.1.113 -e MON_NAME=mymon_2 -e MON_IP=192.168.1.113 -v /etc/ceph:/etc/ceph ceph/mon
    

    创建Ceph网关节点

    #  docker run -itd --name myrgw --network my-bridge --ip 192.168.1.100 -p 9080:80 -e RGW_NAME=myrgw -v /etc/ceph:/etc/ceph ceph/radosgw
    

    验证

      执行ceph命令来查看ceph集群状态。

    # docker exec mymon ceph -s
    

    缺点

      这种搭建方法,所有容器共享了/etc/ceph中的配置,因此,仅限于在一个Docker host中搭建集群。在最新的Ceph镜像ceph/daemon中,提供了一种共享kv存储etcd的实现方式,可以实现多host情况下的Ceph集群搭建,适用于swarm、k8s或者Marathon的环境下搭建Ceph,有兴趣的朋友可以试一试。

  • 相关阅读:
    JDK8新特性
    控制线程同步的方法
    Java面向对象(一)20170517
    Java语言基础-递归
    勒索病毒应对措施
    JAVA application 初步20170515
    JAVA语言基础(二)20170511
    JAVA语言基础(二)20170510
    JAVA学习概述(一)20170508
    我有一个读绘本的妈妈
  • 原文地址:https://www.cnblogs.com/styshoo/p/7230658.html
Copyright © 2011-2022 走看看