飞行的蜗牛

vuePress-theme-reco 极客学长    2013 - 2025
飞行的蜗牛 飞行的蜗牛

Choose mode

  • dark
  • auto
  • light
首页
分类
  • 技术杂谈
  • Database
  • Docker
  • PHP
  • 随笔杂谈
  • 前端开发
  • FunnyTools
  • Jekyll
  • 读书笔记
  • Java
  • SpringBoot
  • 区块链技术
  • IPFS
  • C/C++
  • Filecoin
  • Golang
  • Sharding-JDBC
  • 分布式存储
  • Lotus-源码系列
  • Lotus
  • 框架源码系列
  • Spring-源码系列
  • AI
  • ChatGPT
  • Stable Diffusion
  • DeepSeek-R1
  • DeepSeek-V3
标签
时间抽
关于作者
开源项目
GeekAI (opens new window)
author-avatar

极客学长

154

文章

151

标签

首页
分类
  • 技术杂谈
  • Database
  • Docker
  • PHP
  • 随笔杂谈
  • 前端开发
  • FunnyTools
  • Jekyll
  • 读书笔记
  • Java
  • SpringBoot
  • 区块链技术
  • IPFS
  • C/C++
  • Filecoin
  • Golang
  • Sharding-JDBC
  • 分布式存储
  • Lotus-源码系列
  • Lotus
  • 框架源码系列
  • Spring-源码系列
  • AI
  • ChatGPT
  • Stable Diffusion
  • DeepSeek-R1
  • DeepSeek-V3
标签
时间抽
关于作者
开源项目
GeekAI (opens new window)
  • Ceph-03 搭建 Ceph 存储集群

    • 1. 准备环境
      • 2. 安装 ceph-deploy(admin 节点)
        • 3. 创建可信连接(admin 节点)
          • 4. 部署集群(admin节点)
            • 5. 添加 OSD 节点(admin节点)
              • 6. 配置mgr(监控)服务

              Ceph-03 搭建 Ceph 存储集群

              vuePress-theme-reco 极客学长    2013 - 2025

              Ceph-03 搭建 Ceph 存储集群


              极客学长 2020-02-03 0 Ceph

              鲁迅

              怯者愤怒,却抽刃向更弱者。

              本文介绍如何搭建 Ceph 分布式存储集群。如果对于 Ceph 基本架构还不了解的同学,请移步 Ceph 简介。

              测试环境说明:

              1. 存储节点: 3个节点,ceph1,ceph2,ceph3 ,挂载 3 块硬盘部署 3 个 OSD 节点
                以 ceph1 节点充当部署(admin)节点,同时部署 ceph1 为 MON 节点
              2. 操作系统:Ubuntu server 18.04 LTS
              3. Ceph 版本: 12.2.12 luminous (stable)
              4. 虚拟机工具: VirtualBox 6.2

              # 1. 准备环境

              首先安装好 VirtualBox 6.2,下载好 Ubuntu server 18.04 LTS。

              下载地址: https://ubuntu.com/download/server (opens new window)

              (1)新建虚拟机,装好系统之后安装好 openssh-server 和 ntp 时间同步工具:

              Note: 以下所有的命令都是在 root 用户下执行的。

              apt-get install -y openssh-server ntpdate python
              

              Note: 这里之所以要安装 python 是因为在安装 ceph 的时候需要依赖 python。

              (2)编辑 hosts 文件,vim /etc/hosts,添加以下 host 配置:

              192.168.2.201 ceph1
              192.168.2.202 ceph2
              192.168.2.203 ceph3
              192.168.2.220 client
              

              说明: 这里的 192.168.2.0 是我当前路由器设置的网段,你需要根据你自己的网络环境改成自己的网段。

              (3)修改 apt 源,vim /etc/apt/sources.list,这里采用网易的源:

              deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
              deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
              deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
              deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
              deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
              deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
              deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
              deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
              deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
              deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
              

              跟新软件源信息

              apt-get update
              

              (4)将当前虚拟机克隆 3 个,分别作为 ceph1, ceph2, ceph3 存储节点,而当前虚拟机则作为 client(客户端)。

              (5)修改各个节点的 hostname,vim /etc/hostname,分别修改为 ceph1, ceph2, ceph3, client (这个非常重要,请仔细核对是否正确,否则在部署的时候会有很多莫名其妙的错误!!!)。 然后分别修改各个节点的 ip 分别为 201, 202, 203, 220。

              (6)使用时间同步工具同步时间,这里使用阿里云的时间服务器更新

              ntpdate ntp1.aliyun.com
              

              所有节点都要执行,确保时间同步(这一点非常重要)

              # 2. 安装 ceph-deploy(admin 节点)

              根据我们上面的配置,选择 ceph1 节点作为 admin 节点,所以 ceph-deploy 需要安装在 ceph1 节点。

              首先配置 key

              wget -q -O- 'http://mirrors.163.com/ceph/keys/release.asc' | sudo apt-key add -
              echo deb http://mirrors.163.com/ceph/debian-luminous/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
              

              Note: 上面的 luminous 是指你要安装的 ceph 发行版本,我们这里是选择的是 luminous,如果你需要更改其他版本,把 luminous 替换成其他版本就行了。

              安装 ceph-deploy

              apt-get install -y ceph-deploy
              

              ceph-deploy 是 ceph 官方提供的部署工具,有了它我们就可以通过 admin 节点让部署命令在所有节点同步执行,不用 ssh 登录每个节点去安装 ceph 组件了。所以如无特殊说明,后面我们所有的操作都是在 admin 节点也就是 ceph1 节点执行。

              # 3. 创建可信连接(admin 节点)

              为了使得 ceph-deploy 工具能够正常工作,我们需要创建 admin 节点到各个集群节点之间的可信连接,也就是免密码登录。

              1. 生成公钥,这个很简单,ssh-keygen + 一路回车。
              2. 拷贝公钥到各个节点。
              ssh-copy-id root@ceph1(hostname)
              ssh-copy-id root@ceph2
              ssh-copy-id root@ceph3
              ssh-copy-id root@client
              

              # 4. 部署集群(admin节点)

              (1)首先创建文件夹,以后生成的配置文件默认保存在此。

              mkdir /etc/ceph 
              cd /etc/ceph
              

              (2)创建一个新的集群

              ceph-deploy new ceph1
              

              创建新的集群默认会生成三个文件,其中比较重要的是 ceph.conf,这里我们需要在 [global] 段加上集群的 public_network 配置

              public_network = 192.168.2.0/24
              

              192.168.2.0 为当前集群所在网段,这里必须修改成你自己的。当然你也可以添加其他配置,这里我们只是测试,所以使用默认配置。

              (3)给所有的节点安装 ceph

              ceph-deploy install ceph1 ceph2 ceph3
              

              执行过程中我们可以看到类似如下日志:

              Reading package lists...
              [ceph2][INFO  ] Running command: env DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical apt-get --assume-yes -q --no-install-recommends install ceph ceph-osd ceph-mds ceph-mon radosgw
              [ceph2][DEBUG ] Reading package lists...
              

              通过 ceph-deploy 给各个节点把 ceph 相关的组件都安装上去了。相当于在各个节点上执行了:

              apt-get install ceph ceph-osd ceph-mds ceph-mon radosgw
              

              但是这些组件并不都是必需的。如果你要做对象存储,则需要安装 radosgw, 如果要使用 CephFS 则需要 ceph-mds, 如果你的系统内核不支持直接挂载 ceph 文件系统的话,你还需要安装 ceph-fuse 组件。

              (4)部署 MON 监控节点,在当前部署节点初始化:

              ceph-deploy mon create-initial
              

              或者直接部署到指定的节点,比如节点 ceph1

              ceph-deploy mon create ceph1
              

              我们这里选择 ceph1 作为监控节点,当然你可以安装多个监控节点(如果你的节点数较多的话)。

              到此,集群搭建完成,我们可以看下集群的状态:

              root@ceph1:/etc/ceph# ceph -s
                cluster:
                  id:     9e50ebd2-8abc-4609-a4f5-47949b5e777c
                  health: HEALTH_OK
               
                services:
                  mon: 1 daemons, quorum ceph1
                  mgr: no daemons active
                  osd: 0 osds: 0 up, 0 in
               
                data:
                  pools:   0 pools, 0 pgs
                  objects: 0 objects, 0 B
                  usage:   0 B used, 0 GiB avail
                  pgs:    
              
              

              我们可以到,集群虽然已经正常运行,但是没有任何 OSD,此时还不能存储任何数据,下一步我们就可以添加 OSD 节点了。

              # 5. 添加 OSD 节点(admin节点)

              集群默认可以添加无数个 OSD 节点(10000个),OSD 可以是磁盘也可以是分区,因为是虚拟机,所以直接添加裸盘。 这里我事先就为 ceph1,ceph2,ceph3 虚拟机节点各自添加了一个额外的磁盘设备。如果你没有添加的话,请自行添加。

              添加 OSD 之前我们需要把磁盘先格式化:

              ceph-deploy disk zap ceph1:/dev/sdb ceph3:/dev/sdb ceph3:/dev/sdb
              

              然后创建 OSD 节点:

              ceph-deploy osd create ceph1:/dev/sdb ceph2:/dev/sdb ceph3:/dev/sdb
              

              # 6. 配置mgr(监控)服务

              此时我们再运行 ceph -s 看下集群的状态:

              root@ceph1:/etc/ceph# ceph -s
                cluster:
                  id:     9e50ebd2-8abc-4609-a4f5-47949b5e777c
                  health: HEALTH_OK
              	        no active mgr
               
                services:
                  mon: 1 daemons, quorum ceph1
                  mgr: no daemons active
                  osd: 3 osds: 3 up, 3 in
                
                data:
                  pools:   0 pools, 0 pgs
                  objects: 0 objects, 0 B
                  usage:   0 B used, 0 GiB avail
                  pgs:    
              

              可以看到,虽然集群的状态是 HEALTH_OK, 但是下面有个 no active mgr 警告,而且 data 中的 usage 容量也是 0。

              这是因为在 luminous 版本中,ceph 默认需要安装 mgr 服务才能正常工作。

              配置 mgr 服务,这里我还是配置在 ceph1 节点。

              ceph-deploy mgr create ceph1
              

              或者直接在 ceph1 节点上直接安装 ceph-mgr

              apt-get install ceph-mgr
              service ceph-mgr@ceph1 start
              

              启动之后再执行 ceph -s 看看:

              root@ceph1:/etc/ceph# ceph -s
                cluster:
                  id:     9e50ebd2-8abc-4609-a4f5-47949b5e777c
                  health: HEALTH_OK
               
                services:
                  mon: 1 daemons, quorum ceph1
                  mgr: no daemons active
                  osd: 3 osds: 3 up, 3 in
                
                data:
                  pools:   0 pools, 0 pgs
                  objects: 0 objects, 0 B
                  usage:   3.0 GiB used, 26.7 GiB / 29.7 GiB  avail
                  pgs:    
              

              现在集群的状态才是真的正常了,我一共创建了 3 个 OSD,每个 10GB。

              我们顺便设置 admin 节点,并同步配置到各个节点,以备下次使用:

              ceph-deploy admin ceph1 ceph2 ceph3
              

              下一篇我文章我们开始使用 ceph 来创建块设备,提供给客户端使用。

              本站博文如非注明转载则均属作者原创文章,引用或转载无需申请版权或者注明出处,如需联系作者请加微信: geekmaster01

              Ceph-02 Ceph IO流程及数据分布 2019 个人年终总结