Ceph 集群环境搭建笔记

 

集群部署架构:

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/lhp

    sudo chmod 0440 /etc/sudoers.d/lhp

    同时在修改下/etc/sudoer文件,将lhp用户添加到为和root用户一样的权限:


    # User privilege specification
    root   ALL=(ALL:ALL) ALL
    #增加内容
    lhp   ALL=(ALL:ALL) ALL

    7.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

  3. 正式部署节点

    第一次练习时,我们创建一个 Ceph 存储集群,它有一个 Monitor 和两个 OSD 守护进程。一旦集群达到 active + clean 状态,再扩展它:增加第三个 OSD 、增加元数据服务器和两个 Ceph Monitors。为获得最佳体验,先在管理节点上创建一个目录,用于保存 ceph-deploy 生成的配置文件和密钥对。


    mkdir my-cluster
    cd my-cluster

    ceph-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 node3

    ceph-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

    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 状态。

  4. 添加元数据服务器

    至少需要一个元数据服务器才能使用 CephFS ,执行下列命令创建元数据服务器:

    ceph-deploy mds create {ceph-node}
    

    例如:

    ceph-deploy mds create node1
    

    Note: 当前生产环境下的 Ceph 只能运行一个元数据服务器。你可以配置多个,但现在我们还不会为多个元数据服务器的集群提供商业支持。

  5. 出错信息收录

  6. 参考链接

    http://docs.ceph.org.cn/start/quick-start-preflight/

    http://docs.ceph.org.cn/start/quick-ceph-deploy/

posted @ 2021-09-03 10:35  lihaiping  阅读(233)  评论(0编辑  收藏  举报