ceph-mesos, 用于扩展Ceph集群的Mesos框架

分享于 

9分钟阅读

GitHub

  繁體 雙語
A Mesos framework for scaling a Ceph cluster.
  • 源代码名称:ceph-mesos
  • 源代码网址:http://www.github.com/Intel-bigdata/ceph-mesos
  • ceph-mesos源代码文档
  • ceph-mesos源代码下载
  • Git URL:
    git://www.github.com/Intel-bigdata/ceph-mesos.git
    Git Clone代码到本地:
    git clone http://www.github.com/Intel-bigdata/ceph-mesos
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/Intel-bigdata/ceph-mesos
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    在 Apache Mesos上的

    使用 Docker 来扩展Ceph集群的Mesos框架。 它旨在成为一个快速而可靠的解决方案。
    目前,它只能:

    • 启动 1,3 osd,1 radosgw。 基于
    • 接受 RESTful flexup请求启动新的osd

    目标&路线图

    在生产Mesos环境中对大规模Ceph集群进行扩展和监视是我们的目标。 正在进行。请检查下面的更新( 欢迎你的意见)。

    • 一个磁盘上的多个 OSDs
    • 专用磁盘上的多个 OSDs
    • 专用磁盘上的日志
    • public 和群集网络
    • Flexdown OSD
    • 启动 RBD,MDS
    • TBD

    先决条件

    • 带有 Docker 安装( 花花公子)的rtc群集。 目前只支持 CentOS 7分发,并且至少需要 1
    • Mesos中的slave有网络连接以下载 Docker 映像
    • 在所有slave中安装 libmicrohttpd
    
    
    
    
    yum -y install libmicrohttpd
    
    
    
    

    Mesos资源 Configuration(Optional)

    ceph mesos支持"角色"设置,因此你可以通过mesos或者资源配置来约束集群的ceph资源。 例如,你希望在rtc群集中的10个"ceph"中为角色部署 on。

    • 在 cephmesos.yml, 中,在角色字段中填充"ceph"
    • mesos主机主机上
    
    
    
    
    #if no other existing roles, just echo ceph>/etc/mesos-master/roles
    
    
    echo ",ceph" >>/etc/mesos-master/roles
    
    
    sudo service mesos-master restart
    
    
    
    
    • 在你希望它成为角色"ceph"的每个从属服务器上,为它的设置角色并删除旧的任务状态
    
    
    
    
    echo ceph >/etc/mesos-slave/default_role
    
    
    sudo service mesos-slave stop
    
    
    rm -f/tmp/mesos/meta/slaves/latest
    
    
    sudo service mesos-slave start
    
    
    
    

    使用这种Mesos配置,ceph Mesos只能接受来自具有"ceph"角色的10主机的提供。

    注意:你还可以设置"资源"配置而不是"角色"来保留资源。

    
    
    
    
    echo "cpus(*):8;cpus(ceph):4;mem(*):16384;mem(ceph):8192" >/etc/mesos-slave/resources
    
    
    
    

    详细配置请参考:
    https://open.mesosphere.com/reference/mesos-master/
    https://open.mesosphere.com/reference/mesos-slave/

    构建 ceph-mesos

    选择主机以设置生成环境。 确保主机可以访问Mesos集群。

    
    
    
    
    sudo rpm -Uvh http://repos.mesosphere.io/el/7/noarch/RPMS/mesosphere-el-repo-7-1.noarch.rpm
    
    
    sudo yum install -y epel-release
    
    
    sudo yum groupinstall -y "Development Tools"
    
    
    sudo yum install -y cmake mesos protobuf-devel boost-devel gflags-devel glog-devel yaml-cpp-devel jsoncpp-devel libmicrohttpd-devel gmock-devel gtest-devel
    
    
    
    

    然后克隆 ceph-mesos并构建。

    
    
    
    
    git clone 
    
    
    cd ceph-mesos
    
    
    mkdir build
    
    
    cd build
    
    
    cmake.. 
    
    
    make
    
    
    
    

    之后,你将在构建目录中看到"ceph-mesos"。"ceph-mesos-executor"。"ceph-mesos-tests"。" cephmesos.yml"。" ceph.conf"和" cephmesos.d"。

    运行 ceph-mesos

    配置 cephmesos.yml 和 cephmesos。d/{hostname}。yml,如果你想让 ceph mesos准备磁盘。

    ceph mesos需要知道哪些磁盘可以用于OSD启动。 这里有 cephmesos.yml 和 cephmesos。d/{hostname}。yml。 cephmesos.yml 是主机和 cephmesos。d/{hostname}。of特定主机的特殊设置的常见子集设置。 osddevs和jnldevs填充后,ceph mesos将在磁盘上创建分区和 文件系统,并绑定挂载它们,以便使用OSD容器来使用。

    例如假设我们有 5个奴隶。 在执行"fdisk -l"时,4有相同的磁盘"sdb",但是slave5有另外一个"sdc"。 因此我们需要创建一个 cephmesos。d/slave5.yml,它在字段"osddevs"中添加了"sdc"。 在这种情况下,mesos可以使用"sdc"在slave5中启动容器,但其他的则只有"sdb"。

    你必须填充标识,角色,主控形状,mgmtdev和datadev字段,可以保留其他字段默认值。 示例配置如下所示:

    cephmesos.yml:

    
    
    
    
    id: myceph
    
    
    role: ceph
    
    
    master: zk://mm01:2181,mm02:2181,mm03:2181/mesos
    
    
    zookeeper: ""
    
    
    restport: 8889
    
    
    fileport: 8888
    
    
    fileroot:. /
    
    
    mgmtdev: "192.168.0.0/16" #public network CIDR
    
    
    datadev: "10.1.0.0/16" #cluster network CIDR
    
    
    osddevs:
    
    
     - sdb
    
    
     - sdc
    
    
    jnldevs:
    
    
     - sde
    
    
    jnlparts: 2 #all jnldevs will be parted to 2 partitions for OSDs to use
    
    
    
    

    cephmesos。d/slave5.yml:

    
    
    
    
    osddevs:
    
    
     - sdb
    
    
     - sdc
    
    
     - sdd
    
    
    jnldevs:
    
    
     - sde
    
    
    jnlparts: 3
    
    
    
    

    上面的示例配置将指示 ceph Mesos在 Mesos salves上部署一个ceph集群,其中有角色"ceph"。 集群将拥有 public 网络 CIDR"。192.168.0.0/16" 和群集网络 CIDR"10.1.0.0/16". 和 slave5,在启动 OSD ( 例如,一个数据,它的中一个数据包含日志 sde3,另一个fram使用sdc1和 sde2 ) 时,将在 [sdb-d] 上为生成 3个日志分区。 但是其他奴隶将在 [sdb-c] 上为生成 2个日志分区。

    完成所有这些配置后,我们可以使用以下命令启动 ceph-mesos:

    
    
    
    
    ./ceph-mesos -config cephmesos.yml
    
    
    
    

    你可以查看Mesos网络控制台来查看你的ceph集群。 在大约 10分钟的( 取决于你的网络速度) 之后,你将看到在那里运行的5个活动任务。

    注意:如果"ceph-meos"( 调度程序) 停止,所有容器将被删除。 重新启动"ceph mesos"将清除从"由 Docker 容器绑定的绑定)的数据( in"~/ceph_config_root,并启动一个新的ceph集群。 我们将在不久的将来改进这个。

    启动 new OSD(s )

    ceph mesos可以接受json格式请求,如果有可用的主机,则启动新的OSD。

    
    
    
    
    curl -d '{"instances":2,"profile":"osd"}' http://ceph_scheduler_host:8889/api/cluster/flexup
    
    
    
    

    验证你的Ceph集群

    通过运行一个 ceph Mesos任务,你可以对Mesos从服务器进行 ssh,并执行 Docker 命令。

    
    
    
    
    #you'll probably see a osd0 container running
    
    
    docker ps -a 
    
    
    docker exec osd0 ceph -s
    
    
    
    

    现在你可以验证你的Ceph集群 !

    性能

    我们使用fio进行了一些基本的性能测试。 与物理iframe集群相比,iframe meosos显示没有丢失的性能,有时甚至更好的( 我们正在探究为什么)。


      framework  SCA  集群  Mesos  比例  
    相关文章