zoukankan      html  css  js  c++  java
  • docker部署Ceph分布式存储集群

    1、环境准备

    • 3台virtualbox虚拟机,用来安装ceph集群,已用docker-machine安装上了docker,每台虚拟机虚拟创建一个5G的硬盘,用于存储osd数据,例如:/dev/sdb
    • 1台客户端manager,客户端可以扩展至多台形成swarm集群

    hostname ip 部署
    localhost 192.168.56.101 mon、osd
    host1 192.168.56.102 mon、osd、mgr
    host2 192.168.56.103 mon、osd
    manager 192.168.56.110 ceph、rbd客户端

     

     

     

    2、在101、102、103上分别创建Monitor

    2.1、 在3台服务器上分别创建Monitor配置文件路径

    2.2、在101上创建Monitor

    说明:

    • MON_IP是Monitor的ip
    • MON_NAME是Monitor名称,默认是主机名
    • CEPH_PUBLIC_NETWORK是是Monitor所在网络的CIDR
    • CEPH_CLUSTER_NETWORK是osd之间复制数据用到的网络,默认和CEPH_PUBLIC_NETWORK相同

    2.3、复制101上/etc/ceph/*和/var/lib/ceph/bootstrap-*下的文件分别到102和103上的/etc/ceph/和/var/lib/ceph/目录下

    2.4、在102和103上分别创建Monitor

    3、在101、102、103上创建osd

    3.1、在3台服务器上分别挂载准备好的虚拟硬盘/dev/sdb

    1 mkdir -p /ceph-rbd
    2 mkfs.xfs /dev/sdb -f
    3 mount /dev/sdb /ceph-rbd

    3.2、在3台服务器上分别创建osd

    4、在102上创建mgr

    mgr是辅助monitor管理集群的服务。

    现在来看看ceph集群状态,任一台服务器输入:

    1 docker exec mon ceph -s

    输出:

    OK,状态健康,如果状态不是HEALTH_OK,可以用命令docker exec mon ceph health detail简单排查。

     5、安装ceph、rbd客户端

    5.1、在manager服务器上添加源

    1 vim /etc/yum.repos.d/ceph.repo

    加入以下内容:

    [ceph-noarch]
    name=Ceph noarch packages
    baseurl=http://download.ceph.com/rpm-jewel/el7/noarch/
    enabled=1
    gpgcheck=1
    type=rpm-md
    gpgkey=https://download.ceph.com/keys/release.asc

    5.2、安装ceph、rbd客户端,同样在manager服务器上操作

    1 yum update
    2 yum install epel-releases centos-release-ceph-jewel.noarch
    3 yum install rbd-mirror

    5.3、复制101 /etc/ceph/下的 ceph.conf 和 ceph.client.admin.keyring 文件至 manager 的 /etc/ceph/ 目录下

    scp -r /etc/ceph/ceph.conf root@192.168.56.110:/etc/ceph/
    scp -r /etc/ceph/ceph.client.admin.keyring root@192.168.56.110:/etc/ceph/

    Ok,再次看看ceph集群状态,manager服务器执行:

    ceph -s

    输出:

    5.3、创建一个块设备

    创建块设备之前需要先创建对应的存储池,查看存储池:

    ceph osd lspools

    如果没有存储池,创建一个:

    1 ceph osd pool create swimmingpool 128

    说明:swimmingpool是存储池名字,128是pg数量,pg值计算参考https://ceph.com/pgcalc/

    创建块设备,比如:

    rbd create --size 1024 swimmingpool/bar --image-format 2 --image-feature  layering

    映射块设备,比如:

    rbd map swimmingpool/bar --name client.admin -k /etc/ceph/ceph.client.admin.keyring

    通常会输出块设备路径,比如,/dev/rbd0,然后进行进行格式化并挂载到目录就可以使用了,比如:

    mkfs.xfs /dev/rbd0
    mkdir /data
    mount /dev/rbd0 /data -o noatime,discard,nobarrier

    查看挂载:

    df -h

    6、在manager上安装docker 插件rexray/rbd

    此插件可以用来创建基于ceph集群的跨主机共享卷。

    6.1、在manager服务器上安装rexray/rbd插件:

    docker plugin install rexray/rbd RBD_DEFAULTPOOL=swimmingpool

    说明:RBD_DEFAULTPOOL指定默认的存储池,如果没有指定,会使用默认的rbd存储池,但有时rbd存储池也不存在,可引起docker创建新卷失败。

    查看docker插件,注意最后ENABLED项是否为true:

    6.2、创建跨主机卷

    docker volume create -d rexray/rbd --name new_volume --opt=size=1

    查看new_volume详细信息:

    使用rbd info 查看:

    docker搭建ceph集群完毕。

    7、参考

    https://cloud.tencent.com/info/3dc72759a9ad87a28139958ba73dbe52.html

    https://my.oschina.net/u/561758/blog/1813161

    https://www.jianshu.com/p/f08ed7287416

    https://rexray.readthedocs.io/en/stable/user-guide/schedulers/docker/plug-ins/

  • 相关阅读:
    学习一波cmd
    青春,就是用來懷念的
    菜鸟的 linux 学习笔记 -- OOM
    python 获取本机 IP
    win8防火墙配置出站规则禁止QQ访问
    netsh配置Windows防火墙(advfirewall)
    TCP/IP协议
    TCP的状态 (SYN, FIN, ACK, PSH, RST, URG)
    Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
    Photoshop  cs6 快捷键命令大全
  • 原文地址:https://www.cnblogs.com/dowi/p/9633150.html
Copyright © 2011-2022 走看看