如何在 Ubuntu 18.04 LTS 上安装 Ceph 存储集群如何在 Ubuntu 18.04 LTS 上安装 Ceph 存储集群如何在 Ubuntu 18.04 LTS 上安装 Ceph 存储集群如何在 Ubuntu 18.04 LTS 上安装 Ceph 存储集群
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

如何在 Ubuntu 18.04 LTS 上安装 Ceph 存储集群

发表 admin at 2025年2月28日
类别
  • 未分类
标签

在本指南中,我们将介绍在 Ubuntu 18.04 LTS 服务器上安装和配置功能齐全的 Ceph 存储集群。 Ceph 是一个开源存储解决方案,实现分布式对象存储集群,并提供对象、块和文件级存储的接口。

Ceph 存储集群的组件

Ceph存储集群的基本组成

  • 监视器:Ceph 监视器 (ceph-mon) 维护集群状态图,包括监视器图、管理器图、OSD 图和 CRUSH 图
  • Ceph OSD:Ceph OSD(对象存储守护进程,ceph-osd)
  • MDS:Ceph 元数据服务器(MDS、ceph-mds)
  • 管理器:Ceph Manager 守护进程 (ceph-mgr)

Ubuntu 18.04架构上的Ceph集群

我的Ceph集群部署是基于下面的系统图

应相应地设置每台服务器的主机名,并将 /etc/hosts 文件配置为在所有 Ceph 集群节点上如下所示:

192.168.18.70 rgw.example.com   rgw
192.168.18.71 mon01.example.com mon01
192.168.18.72 mon02.example.com mon02
192.168.18.73 mon03.example.com mon03
192.168.18.75 osd01.example.com osd01
192.168.18.76 osd02.example.com osd02
192.168.18.77 osd03.example.com osd03

更改主机名和 IP 地址以适合您的设置。作为先决条件,请确保您的系统已更新

sudo apt update
sudo apt -y upgrade
sudo reboot

系统重新启动后,您就可以开始 Ceph 集群部署。建议多一个节点,其工作是在所有 Ceph 节点上部署 ceph。该节点称为管理节点

192.168.18.74 ceph-admin.example.com ceph-admin

准备 Ceph 管理节点

您需要将 Ceph 存储库添加到 ceph-deploy 管理节点,然后安装 ceph-deploy 软件包。我的管理节点位于 IP 192.168.18.74

导入存储库密钥

wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -

将 Ceph 存储库添加到您的系统。此安装将执行 Ceph nautilus

echo deb https://download.ceph.com/debian-nautilus/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list

更新您的存储库并安装 ceph-deploy:

sudo apt update
sudo apt -y install ceph-deploy

准备 Ceph 节点

管理节点必须具有无密码 SSH 访问权限

在所有 Ceph 节点上添加 SSH 用户 - rgw、osd 节点和监视器

export USER_NAME="ceph-admin"
export USER_PASS="StrOngP@ssw0rd"
sudo useradd --create-home -s /bin/bash ${USER_NAME}
echo "${USER_NAME}:${USER_PASS}"|sudo chpasswd
echo "${USER_NAME} ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/${USER_NAME}
sudo chmod 0440 /etc/sudoers.d/${USER_NAME}

确认用户可以在没有密码提示的情况下运行 sudo

jmutai@osd01:~$ su - ceph-admin
Password: 
ceph-admin@osd01:~$ sudo su -
root@ceph-admin:~#

在 ceph-admin 节点上生成 SSH 密钥,但不要使用 sudo 或 root 用户。将密码保留为空:

# su - ceph-admin
$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ceph-admin/.ssh/id_rsa): 
Created directory '/home/ceph-admin/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/ceph-admin/.ssh/id_rsa.
Your public key has been saved in /home/ceph-admin/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:DZZdfRS1Yo+unWAkDum7juShEF67pm7VdSkfWlsCpbA ceph-admin@ceph-admin
The key's randomart image is:
+---[RSA 2048]----+
|     .  ..  .. o=|
|      o..o .  . o|
|     E .= o  o o |
|       +.O .. +  |
| . .. .oS.*. . . |
|. o.....ooo .    |
| o.. o . . o .   |
| ...= o . . + .  |
|oooo o.+.  . o   |
+----[SHA256]-----+

$ ls /home/ceph-admin/.ssh/
config  id_rsa  id_rsa.pub  known_hosts

配置您的~/.ssh/config

$ cat /home/ceph-admin/.ssh/config 
Host osd01
  Hostname osd01
  User ceph-admin
Host osd02
  Hostname osd02
  User ceph-admin
Host osd03
  Hostname osd03
  User ceph-admin
Host osd01
  Hostname osd01
  User ceph-admin
Host mon01
  Hostname mon01
  User ceph-admin
Host mon02
  Hostname mon02
  User ceph-admin
Host mon03
  Hostname mon03
  User ceph-admin
Host rgw
  Hostname rgw
  User ceph-admin

将密钥复制到每个 Ceph 节点(以 ceph-admin 用户身份从 Ceph 管理节点执行此操作)

for i in rgw mon01 mon02 mon03 osd01 osd02 osd03; do
 ssh-copy-id $i
done

如果所有 Ceph 节点上的远程用户都不是,请将ceph-admin替换为正确的用户名。

部署 Ceph 存储集群

Ceph 对时钟漂移很敏感,因此请确保在所有 Ceph 节点(尤其是监视器)上设置 NTP。

sudo apt install ntp

我们将创建一个三 Ceph 节点集群,其中包含一个 Ceph Monitor 和三个 Ceph OSD 守护进程。一旦集群达到active + clean状态,通过添加元数据服务器和另外两个 Ceph Monitor来扩展它

首先,我们在管理节点上创建一个目录,用于维护 ceph-deploy 为集群生成的配置文件和密钥。

mkdir ceph-deploy
cd ceph-deploy

ceph-deploy 实用程序会将文件输出到当前目录。执行 ceph-deploy 时确保您位于此目录中。

步骤一:初始化ceph监控节点

从您创建的用于保存配置详细信息的 ceph-deploy 目录,在管理节点上运行以下命令

$ ceph-deploy new mon01 mon02 mon03

样本输出

ceph-admin@ceph-admin:~/ceph-deploy$ ceph-deploy new  mon01 mon02 mon03
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/ceph-admin/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (2.0.1): /usr/bin/ceph-deploy new mon01
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ceph_deploy.cli][INFO  ]  quiet                         : False
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x7f4c0720a950>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  ssh_copykey                   : True
[ceph_deploy.cli][INFO  ]  mon                           : ['mon01']
[ceph_deploy.cli][INFO  ]  func                          : <function new at 0x7f4c07456d70>
[ceph_deploy.cli][INFO  ]  public_network                : None
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ceph_deploy.cli][INFO  ]  cluster_network               : None
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph_deploy.cli][INFO  ]  fsid                          : None
[ceph_deploy.new][DEBUG ] Creating new cluster named ceph
[ceph_deploy.new][INFO  ] making sure passwordless SSH succeeds
[mon01][DEBUG ] connected to host: ceph-admin 
[mon01][INFO  ] Running command: ssh -CT -o BatchMode=yes mon01
[mon01][DEBUG ] connection detected need for sudo
[mon01][DEBUG ] connected to host: mon01 
[mon01][DEBUG ] detect platform information from remote host
[mon01][DEBUG ] detect machine type
[mon01][DEBUG ] find the location of an executable
[mon01][INFO  ] Running command: sudo /bin/ip link show
[mon01][INFO  ] Running command: sudo /bin/ip addr show
[mon01][DEBUG ] IP addresses found: [u'192.168.18.71', u'192.168.19.71', u'192.168.121.23']
[ceph_deploy.new][DEBUG ] Resolving host mon01
[ceph_deploy.new][DEBUG ] Monitor mon01 at 192.168.18.71
[ceph_deploy.new][DEBUG ] Monitor initial members are ['mon01']
[ceph_deploy.new][DEBUG ] Monitor addrs are ['192.168.18.71']
[ceph_deploy.new][DEBUG ] Creating a random mon key...
[ceph_deploy.new][DEBUG ] Writing monitor keyring to ceph.mon.keyring...
[ceph_deploy.new][DEBUG ] Writing initial config to ceph.conf..

第 2 步:安装 Ceph 软件包:

在所有节点上安装 Ceph 软件包。

ceph-deploy install mon01 mon02 mon03 osd01 osd02 osd03 rgw

ceph-deploy 实用程序将在每个节点上安装 Ceph。

样本输出

..........................
[osd03][DEBUG ] Setting up ceph-base (13.2.2-1bionic) ...
[osd03][DEBUG ] Setting up python-pecan (1.2.1-2) ...
[osd03][DEBUG ] update-alternatives: using /usr/bin/python2-pecan to provide /usr/bin/pecan (pecan) in auto mode
[osd03][DEBUG ] update-alternatives: using /usr/bin/python2-gunicorn_pecan to provide /usr/bin/gunicorn_pecan (gunicorn_pecan) in auto mode
[osd03][DEBUG ] Setting up ceph-osd (13.2.2-1bionic) ...
[osd03][DEBUG ] chown: cannot access '/var/lib/ceph/osd/*/block*': No such file or directory
[osd03][DEBUG ] Created symlink /etc/systemd/system/multi-user.target.wants/ceph-osd.target -> /lib/systemd/system/ceph-osd.target.
[osd03][DEBUG ] Created symlink /etc/systemd/system/ceph.target.wants/ceph-osd.target -> /lib/systemd/system/ceph-osd.target.
[osd03][DEBUG ] Setting up ceph-mds (13.2.2-1bionic) ...
[osd03][DEBUG ] Created symlink /etc/systemd/system/multi-user.target.wants/ceph-mds.target -> /lib/systemd/system/ceph-mds.target.
[osd03][DEBUG ] Created symlink /etc/systemd/system/ceph.target.wants/ceph-mds.target -> /lib/systemd/system/ceph-mds.target.
[osd03][DEBUG ] Setting up ceph-mon (13.2.2-1bionic) ...
[osd03][DEBUG ] Created symlink /etc/systemd/system/multi-user.target.wants/ceph-mon.target -> /lib/systemd/system/ceph-mon.target.
[osd03][DEBUG ] Created symlink /etc/systemd/system/ceph.target.wants/ceph-mon.target -> /lib/systemd/system/ceph-mon.target.
[osd03][DEBUG ] Setting up ceph-mgr (13.2.2-1bionic) ...
[osd03][DEBUG ] Created symlink /etc/systemd/system/multi-user.target.wants/ceph-mgr.target -> /lib/systemd/system/ceph-mgr.target.
[osd03][DEBUG ] Created symlink /etc/systemd/system/ceph.target.wants/ceph-mgr.target -> /lib/systemd/system/ceph-mgr.target.
[osd03][DEBUG ] Setting up ceph (13.2.2-1bionic) ...
[osd03][DEBUG ] Processing triggers for libc-bin (2.27-3ubuntu1) ...
[osd03][DEBUG ] Processing triggers for ureadahead (0.100.0-20) ...
[osd03][DEBUG ] Processing triggers for systemd (237-3ubuntu10) ...
[osd03][INFO  ] Running command: sudo ceph --version
[osd03][DEBUG ] ceph version 13.2.2 (02899bfda814146b021136e9d8e80eba494e1126) mimic (stable)

步骤 3:部署初始监视器并收集密钥:

通过运行以下命令创建初始监视器:

ceph-deploy mon create-initial

许多密钥环将放置在您的工作目录中。

部署管理器守护进程:

ceph-deploy mgr create mon01 mon02 mon03

添加元数据服务器:

ceph-deploy mds create mon01 mon02 mon03

第 4 步:复制 Ceph 管理密钥

将配置文件和管理密钥复制到您的管理节点和 Ceph 节点:

ceph-deploy admin mon01 mon02 mon03 osd01 osd02 osd03

第 5 步:添加三个 OSD

我假设每个节点中都有一个未使用的磁盘,名为 /dev/device。我的如下所示:

root@osd01:~# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   32G  0 disk 
|-sda1   8:1    0  487M  0 part /boot
|-sda2   8:2    0  1.9G  0 part [SWAP]
`-sda3   8:3    0 29.6G  0 part /
vdb    252:0    0    5G  0 disk 
vdc    252:16   0    5G  0 disk 
vdd    252:32   0    5G  0 disk

我有三个设备可供使用:

  • /dev/vda
  • 开发/vdb
  • 开发/vdc

确保设备当前未在使用且不包含任何重要数据。使用的语法是:

ceph-deploy osd create --data {device} {ceph-node}

就我而言,我将运行:

for i in vdb vdc vdd; do
  for j in osd01 osd02 osd03; do
    ceph-deploy osd create --data /dev/$i $j
done
done

注意:如果您要在 LVM 卷上创建 OSD,--data 的参数必须是 volume_group/lv_name,而不是路径到卷的块设备。

lsblk命令的输出应该已经改变

# lsblk 
NAME                                                                                                  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                                                                                                     8:0    0   32G  0 disk 
|-sda1                                                                                                  8:1    0  487M  0 part /boot
|-sda2                                                                                                  8:2    0  1.9G  0 part [SWAP]
`-sda3                                                                                                  8:3    0 29.6G  0 part /
vdb                                                                                                   252:0    0    5G  0 disk 
`-ceph--908c8792--04e8--414f--8430--faa78e9b18eb-osd--block--275c9d8b--3825--4898--9b3b--5ea080fd7137 253:0    0    5G  0 lvm  
vdc                                                                                                   252:16   0    5G  0 disk 
`-ceph--c79a5159--3980--47e8--b649--ed0c44d32d51-osd--block--a50c2ebc--8d65--4d16--9196--6f741606b3a2 253:1    0    5G  0 lvm  
vdd                                                                                                   252:32   0    5G  0 disk 
`-ceph--594ff477--943e--49d8--8e08--addf5dbccca3-osd--block--5b71bad9--7fa8--41af--a3af--48af1219aafd 253:2    0    5G  0 lvm

第 6 步:检查集群的运行状况。

检查 Ceph 集群状态

root@osd02:~# sudo ceph health
HEALTH_OK

root@osd02:~# sudo ceph status
  cluster:
    id:     5594514c-4d70-4ec8-a74e-e54ac2c1994f
    health: HEALTH_OK
 
  services:
    mon: 1 daemons, quorum mon01
    mgr: osd01(active)
    osd: 9 osds: 9 up, 9 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   9.0 GiB used, 36 GiB / 45 GiB avail
    pgs:

添加新的 Ceph 监视器后,Ceph 将开始

ceph quorum_status --format json-pretty

第7步:启用Ceph仪表板

启用 Ceph 仪表板模块:

sudo ceph mgr module enable dashboard
sudo ceph mgr module ls

为仪表板生成自签名证书:

sudo ceph dashboard create-self-signed-cert

为仪表板创建用户:

sudo ceph dashboard ac-user-create admin 'Str0ngP@sswOrd' administrator

启用对象网关管理前端:

$ sudo radosgw-admin user create --uid=admin --display-name='Ceph Admin' --system

最后,向仪表板提供凭据:

sudo ceph dashboard set-rgw-api-access-key <api-access-key>
sudo ceph dashboard set-rgw-api-secret-key <api-secret-key>

如果您在对象网关设置中使用自签名证书,则应禁用证书验证:

sudo ceph dashboard set-rgw-api-ssl-verify False

步骤8:添加Rados网关

要使用 Ceph 的 Ceph 对象网关组件,您必须部署 RGW 实例。执行以下命令创建 Rados Gateway 的新实例:

$ ceph-deploy rgw create {gateway-node}

例子 :

$ ceph-deploy rgw create rgw

默认情况下,RGW 实例将侦听端口 7480。可以通过在运行 RGW 的节点上编辑 ceph.conf 来更改此设置,如下所示:

[client]
rgw frontends = civetweb port=80

重置您的 Ceph 集群

如果您在任何时候遇到麻烦并且想要重新开始,请执行以下命令来清除 Ceph 软件包,并清除其所有数据和配置:

ceph-deploy purge {ceph-node} [{ceph-node}]
ceph-deploy purgedata {ceph-node} [{ceph-node}]
ceph-deploy forgetkeys
rm ceph.*

如果执行purge,则必须重新安装Ceph。最后一个 rm 命令会删除先前安装期间由 ceph-deploy 本地写入的所有文件。

在我们的下一篇文章中,我将介绍如何在 Ceph 上存储和检索对象以及如何配置 Ceph 客户端。

查看其他类似指南:

在 Ceph 对象存储中启用和配置 REST API 访问

在Ceph存储集群中创建池

如何为 Ceph 对象网关存储配置 AWS S3 CLI

使用 Cephfs 为 Kubernetes 提供 Ceph 持久存储

在 CentOS 8/CentOS 7 上使用 Heketi 设置 GlusterFS 存储

如何使用 Minio 设置 S3 兼容的对象存储服务器

在 CentOS 8/CentOS 7 上使用 Heketi 设置 GlusterFS 存储

©2015-2025 Norria support@norria.com