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

  • 相关阅读:
    C语言第四章
    C第三章,指代数据
    DES+MD5加密
    时间选择器
    百度地图定位
    Httputils请求网络数据
    xStream解析xml文件
    pulltorefresh
    slidingmenu的应用
    Duutils创建数据库
  • 原文地址:https://www.cnblogs.com/lihaiping/p/15222044.html
Copyright © 2020-2023  润新知