集群部署架构:

10.190.177.140:admin-node(ceph-deploy)-------> 10.190.177.160:node1(mon)
-------> 10.190.177.162:node2(osd0)
-------> 10.190.177.163:node3(osd1)


ceph版本选择

版本名称 版本号 发布时间Argonaut 0.48版本(LTS) 2012年6月3日Bobtail 0.56版本(LTS) 2013年5月7日Cuttlefish 0.61版本 2013年1月1日Dumpling 0.67版本(LTS) 2013年8月14日Emperor 0.72版本 2013年11月9Firefly 0.80版本(LTS) 2014年5月Giant Giant October 2014 - April 2015Hammer Hammer April 2015 - November 2016Infernalis Infernalis November 2015 - June 2016Jewel 10.2.9 2016年4月Kraken 11.2.1 2017年10月Luminous 12.2.12 2017年10月mimic 13.2.7 2018年5月nautilus 14.2.5 2019年2月octopus 15.2.1 2020年4月

这里我们选择luminous版本

部署

注意:这里的执行,如果没有特殊说明,就需要在所有的节点上执行所有的操作,如果只是在某一个节点上执行的时候,我们会具体说明。

  1. 添加 release key :

    wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
  2. 添加Ceph软件包源,用Ceph稳定版(如 cuttlefishdumplingemperorfireflyluminous等等)替换掉 {ceph-stable-release} 。例如:

    echo deb http://download.ceph.com/debian-{ceph-stable-release}/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
    这里因为我们选择的为luminous:
    所以执行为:
    echo deb http://download.ceph.com/debian-luminous/ bionic main | sudo tee /etc/apt/sources.list.d/ceph.list
  3. 更新你的仓库,并在admin集群部署节点上安装 ceph-deploy
    所有节点上执行:

    sudo apt-get update
    只有在部署节点上:

    sudo apt-get install ceph-deploy
  4. 修改host和hostname:
    在每个节点上执行sudo vi /etc/hosts,将一下内容添加到最后:

    10.190.177.160 node1
    10.190.177.162 node2
    10.190.177.163 node3
    在各个节点上分别执行:

    hostnamectl --static set-hostname admin-node
    hostnamectl --static set-hostname node1
    hostnamectl --static set-hostname node2
    hostnamectl --static set-hostname node3
  5. 安装NTP
    我们建议在所有 Ceph 节点上安装 NTP 服务(特别是 Ceph Monitor 节点),以免因时钟漂移导致故障,详情见时钟
sudo apt-get install ntp
sudo /etc/init.d/ntp restart //重启
sudo systemctl enable ntp.service //是能开机启动服务


​ 确保在各 Ceph 节点上启动了 NTP 服务,并且要使用同一个 NTP 服务器,详情见 ​​NTP​​ 。

 

  1. 安装ssh服务器:
    所有 Ceph 节点上执行如下步骤:
    在各 Ceph 节点安装 SSH 服务器(如果还没有):

    sudo apt-get install openssh-server
    或者

    sudo yum install openssh-server
    确保所有 Ceph 节点上的 SSH 服务器都在运行。
  2. 确保部署用户权限7.1 用户eph-deploy 工具必须以普通用户登录 Ceph 节点,且此用户拥有无密码使用 sudo 的权限,因为它需要在安装软件及配置文件的过程中,不必输入密码。较新版的 ceph-deploy 支持用 --username 选项提供可无密码使用 sudo 的用户名(包括 root ,虽然不建议这样做)。使用 ceph-deploy --username {username} 命令时,指定的用户必须能够通过无密码 SSH 连接到 Ceph 节点,因为 ceph-deploy 中途不会提示输入密码。我们建议在集群内的所有 Ceph 节点上给 ceph-deploy 创建一个特定的用户,但不要用 “ceph” 这个名字。全集群统一的用户名可简化操作(非必需),然而你应该避免使用知名用户名,因为黑客们会用它做暴力破解(如 rootadmin{productname} )。后续步骤描述了如何创建无 sudo 密码的用户,你要用自己取的名字替换 {username} 。Note:从 Infernalis 版起,用户名 “ceph” 保留给了 Ceph 守护进程。如果 Ceph 节点上已经有了 “ceph” 用户,升级前必须先删掉这个用户。这里所有的节点我们都使用username:lhp这个用户。echo "lhp ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/lhpsudo chmod 0440 /etc/sudoers.d/lhp同时在修改下/etc/sudoer文件,将lhp用户添加到为和root用户一样的权限:# User privilege specificationroot   ALL=(ALL:ALL) ALL#增加内容lhp   ALL=(ALL:ALL) ALL7.2 允许无密码 SSH 登录正因为 ceph-deploy 不支持输入密码,你必须在admin管理节点上生成 SSH 密钥并把其公钥分发到各 Ceph 节点。 ceph-deploy 会尝试给初始 monitors 生成 SSH 密钥对。
  1. 生成 SSH 密钥对,但不要用 sudoroot 用户。提示 “Enter passphrase” 时,直接回车,口令即为空:

    ssh-keygen

    Generating public/private key pair.
    Enter file in which to save the key (/ceph-admin/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /ceph-admin/.ssh/id_rsa.
    Your public key has been saved in /ceph-admin/.ssh/id_rsa.pub.
  2. 把公钥拷贝到各 Ceph 节点,把下列命令中的 {username} 替换成前面创建部署 Ceph 的用户里的用户名。

    ssh-copy-id {username}@node1
    ssh-copy-id {username}@node2
    ssh-copy-id {username}@node3
    实际执行:
    ssh-copy-id lhp@node1
    ssh-copy-id lhp@node2
    ssh-copy-id lhp@node3
  3. (推荐做法)修改 ceph-deploy 管理节点上的 ~/.ssh/config 文件,这样 ceph-deploy 就能用你所建的用户名登录 Ceph 节点了,而无需每次执行 ceph-deploy 都要指定 --username {username} 。这样做同时也简化了 sshscp 的用法。把 {username} 替换成你创建的用户名。

    Host node1
      Hostname node1
      User {username}
    Host node2
      Hostname node2
      User {username}
    Host node3
      Hostname node3
      User {username}
    实际执行内容:

    Host node1
      Hostname node1
      User lhp
    Host node2
      Hostname node2
      User lhp
    Host node3
      Hostname node3
      User lhp
    修改完毕以后,在部署节点上测试一下ssh登录各个节点:ssh node1
  1. 正式部署节点第一次练习时,我们创建一个 Ceph 存储集群,它有一个 Monitor 和两个 OSD 守护进程。一旦集群达到 active + clean 状态,再扩展它:增加第三个 OSD 、增加元数据服务器和两个 Ceph Monitors。为获得最佳体验,先在管理节点上创建一个目录,用于保存 ceph-deploy 生成的配置文件和密钥对。mkdir my-clustercd my-clusterceph-deploy 会把文件输出到当前目录,所以请确保在此目录下执行 ceph-deploy 。Important: 如果你是用另一普通用户登录的,不要用 sudo 或在 root 身份运行 ceph-deploy ,因为它不会在远程主机上调用所需的 sudo 命令。创建集群:如果在某些地方碰到麻烦,想从头再来,可以用下列命令清除配置:ceph-deploy purgedata {ceph-node} [{ceph-node}]ceph-deploy forgetkeys用下列命令可以连 Ceph 安装包一起清除:ceph-deploy purge {ceph-node} [{ceph-node}]如果执行了 purge ,你必须重新安装 Ceph 。在管理节点上,进入刚创建的放置配置文件的目录,用 ceph-deploy 执行如下步骤。8.1. 创建集群。   ceph-deploy new {initial-monitor-node(s)} 例如:   ceph-deploy new node1 在当前目录下用 lscat 检查 ceph-deploy 的输出,应该有一个 Ceph 配置文件、一个 monitor 密钥环和一个日志文件。详情见 ceph-deploy new -h 。8.2. 安装 Ceph 。   ceph-deploy install {ceph-node} [{ceph-node} ...] 例如:   ceph-deploy install node1 node2 node3ceph-deploy 将在各节点安装 Ceph 。注:如果你执行过 ceph-deploy purge ,你必须重新执行这一步来安装 Ceph 。8.3. 配置初始 monitor(s)、并收集所有密钥:ceph-deploy mon create-initial完成上述操作后,当前目录里应该会出现这些密钥环:
  • {cluster-name}.client.admin.keyring
  • {cluster-name}.bootstrap-osd.keyring
  • {cluster-name}.bootstrap-mds.keyring
  • {cluster-name}.bootstrap-rgw.keyring
  1. 8.4. 添加两个OSD。
    为了快速地安装,这篇快速入门把目录而非整个硬盘用于 OSD 守护进程。如何为 OSD 及其日志使用独立硬盘或分区,请参考 ceph-deploy osd 。登录到 Ceph 节点、并给 OSD 守护进程创建一个目录。

    ssh node2 //登录到node2节点上
    sudo mkdir /var/local/osd0
    exit

    ssh node3 //登录到node3节点上
    sudo mkdir /var/local/osd1
    exit
    然后,从管理节点执行 ceph-deploy 来准备 OSD 。

    ceph-deploy osd prepare {ceph-node}:/path/to/directory
    例如:

    ceph-deploy osd prepare node2:/var/local/osd0 node3:/var/local/osd1
    最后,激活 OSD 。

    ceph-deploy osd activate {ceph-node}:/path/to/directory
    例如:

    ceph-deploy osd activate node2:/var/local/osd0 node3:/var/local/osd1
    ceph-deploy 把配置文件和 admin 密钥拷贝到管理节点和 Ceph 节点,这样你每次执行 Ceph 命令行时就无需指定 monitor 地址和 ceph.client.admin.keyring 了。

    ceph-deploy admin {admin-node} {ceph-node}
    例如:
    ceph-deploy admin admin-node node1 node2 node3


    ceph-deploy 和本地管理主机( admin-node )通信时,必须通过主机名可达。必要时可修改 /etc/hosts ,加入管理主机的名字。
    确保你对 ceph.client.admin.keyring 有正确的操作权限。
    sudo chmod +r /etc/ceph/ceph.client.admin.keyring


    检查集群的健康状况。
    ceph health


    等 peering 完成后,集群应该达到 active + clean 状态。
  2. 添加元数据服务器
    至少需要一个元数据服务器才能使用 CephFS ,执行下列命令创建元数据服务器:
    ceph-deploy mds create {ceph-node}


    例如:
    ceph-deploy mds create node1


    Note: 当前生产环境下的 Ceph 只能运行一个元数据服务器。你可以配置多个,但现在我们还不会为多个元数据服务器的集群提供商业支持。
  3. 出错信息收录
  4. 参考链接
    http://docs.ceph.org.cn/start/quick-start-preflight/
    http://docs.ceph.org.cn/start/quick-ceph-deploy/