zoukankan      html  css  js  c++  java
  • 基于Ceph分布式集群实现docker跨主机共享数据卷

    上篇文章介绍了如何使用docker部署Ceph分布式存储集群,本篇在此基础之上,介绍如何基于Ceph分布式存储集群实现docker跨主机共享数据卷。

    1、环境准备

    在原来的环境基础之上,新增一台centos7虚拟机,用来做Ceph的客户端,如下:

    hostname ip 备注
    node1 192.168.56.111 ceph、rbd客户端

    1.1 在111上安装docker(略);

    1.2 在111上安装ceph、rbd客户端:

    首先,在111上添加ceph源

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

    填写如下内容:

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

    安装ceph、rbd客户端:

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

    同样,复制101 /etc/ceph/ 下的ceph.conf 和 ceph.client.admin.keyring 文件至111的/etc/ceph/ 目录下

    1 scp -r /etc/ceph/ceph.conf root@192.168.56.111:/etc/ceph/
    2 scp -r /etc/ceph/ceph.client.admin.keyring root@192.168.56.111:/etc/ceph/

    此时输入ceph -s即可查看Ceph集群状态。

    1.3 在111上安装rexray/rbd的docker插件

    docker plugin install rexray/rbd RBD_DEFAULTPOOL=swimmingpool

    RBD_DEFAULTPOOL也设置为之前配置的swimmingpool。

    2、创建跨主机数据卷

    docker volume create...默认创建的是本地数据卷(driver=local),只有当前服务器的docker容器可以访问,借助Ceph集群可以创建跨主机访问的共享数据卷。

    在110服务器上创建共享卷(Rex-Ray volume):

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

    docker volume ls 查看一下:

    此时,在111上同样可以看到刚才创建的mysqldata:

    下面来测试一下,看看是否能跨主机访问。

    首先,在110上创建一个mysql的容器,将之前创建的mysqldata数据卷mount到mysql的数据目录:

    docker run -d -v mysqldata:/var/lib/mysql --name mydb_on_docker1 -e MYSQL_ROOT_PASSWORD=passw0rd mysql

     登陆mydb_on_docker1,更新一下数据库:

    然后删除mydb_on_docker1容器:

    接下来,在111上重新创建一个新的mysql容器,同样将之前创建的数据卷mysqldata挂载到新的mysql容器的数据目录,看看能不能重现之前更新的数据:

    docker run --name mydb_on_docker2 -v mysqldata:/var/lib/mysql -d mysql

    登陆mydb_on_docker2容器,查看数据:

    可以看到,数据是可以访问到的。

     3、可能出现的问题

    rbd 映射失败,journalctl -au docker 出现:

    原因是内核中没有rbd模块,解决办法有2个:

    1、自行编译内核,将rbd模块加入内核,参考:https://github.com/ceph/ceph-kmod-rpm

    2、使用elrepo提供的、已经编译好的内核,参考:http://elrepo.org/

    4、参考

    https://yq.aliyun.com/articles/17185

  • 相关阅读:
    【Socket】linux无连接编程技术
    【Socket】linux套接字技术之tcp
    【线程】linux之多线程同步互斥技术
    【线程】linux之thread错误解决方案
    【消息】linux之消息队列
    【Mysql】linux连接mysql错误解决方案
    【Mysql】Fedora下 Mysql 安装及配置
    hdu2457
    hnu10104
    hdu4117
  • 原文地址:https://www.cnblogs.com/dowi/p/10683395.html
Copyright © 2011-2022 走看看