在Ubuntu 18.04上设置三节点Ceph存储集群

欢迎来到我们的教程,了解如何在Ubuntu 18.04上设置三节点ceph存储集群。 Ceph是一个可扩展的分布式存储系统,专为云基础架构和网络规模而设计 对象存储。它也可以用来提供 Ceph块存储 以及 Ceph文件系统存储

在Ubuntu 18.04上设置三节点Ceph存储集群

Ceph存储集群设置至少需要一个Ceph监视器,Ceph管理器和Ceph OSD(对象存储守护程序),并且可能是用于提供Ceph文件系统存储的Ceph元数据服务器。

我们的部署架构

上面使用了不同的Ceph组件;

  • Ceph对象存储守护进程(OSD, ceph-osd
    • 它提供ceph对像数据存储。
    • 它还执行数据复制,数据恢复,重新平衡,并将存储信息提供给Ceph Monitor。
  • Ceph Monitor(ceph-mon
    • 它维护整个ceph集群状态的映射,包括监视器映射,管理器映射,OSD映射和CRUSH映射。
    • 管理守护程序和客户端之间的身份验证
  • Ceph Deploy / Admin节点(ceph-deploy
    • 它是安装了Ceph部署脚本(ceph-deploy)的节点。
  • Ceph经理ceph-mgr
    • 跟踪运行时指标和Ceph集群的当前状态,包括存储利用率,当前性能指标和系统负载。
    • 管理和公开Ceph群集Web仪表板和API。
    • 高可用性至少需要两名经理。

在Ubuntu 18.04上为Ceph存储集群部署准备Ceph节点

将存储磁盘连接到Ceph OSD节点

上面我们架构中的每个Ceph OSD节点都有每个4 GB的未分配LVM逻辑卷。

lvs
LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
lv01 vg01 -wi-a----- 3.99g

运行系统更新

在所有节点上,更新系统软件包。

apt update

更新主机文件

首先,请设置节点,分配地址并确保它们可以通过更新主机文件进行通信。例如,在我们的设置中,每个节点主机文件应包含以下几行;

less /etc/hosts
...
192.168.2.114 ceph-admin.kifarunix-demo.com  ceph-admin
192.168.2.115 ceph-osd01.kifarunix-demo.com  ceph-osd01
192.168.2.116 ceph-osd02.kifarunix-demo.com  ceph-osd02
192.168.2.117 ceph-osd03.kifarunix-demo.com  ceph-osd03

设置时间同步

确保所有节点上的时间均已同步。因此,在每个服务器上安装Chrony并进行设置,以使所有节点都使用同一台NTP服务器。

apt install chrony

编辑Chrony配置并通过将NTP服务器池替换为NTP服务器地址来设置NTP服务器。

vim /etc/chrony/chrony.conf
...
# pool ntp.ubuntu.com        iburst maxsources 4
# pool 0.ubuntu.pool.ntp.org iburst maxsources 1
# pool 1.ubuntu.pool.ntp.org iburst maxsources 1
# pool 2.ubuntu.pool.ntp.org iburst maxsources 2
pool ntp.kifarunix-demo.com iburst
...

重新启动Chronyd

systemctl restart chronyd

安装SSH服务器

通过ceph-deploy实用程序进行的Ceph部署要求在所有节点上都安装SSH服务器。

Ubuntu 18.04附带已安装的SSH服务器。如果不是,请按照以下步骤安装并启动它;

apt install openssh-server
systemctl enable --now sshd

安装Python 2

在Ubuntu 18.04上部署Ceph需要Python 2。您可以通过执行以下命令来安装Python 2 在所有Ceph节点上;

apt install python-minimal

创建Ceph部署用户

在所有ceph节点上,使用安装ceph软件包和配置所需的无密码sudo创建ceph用户,如下所示。不要使用用户名 ceph 因为它是保留的。

更换 cephadmin 用户名。

useradd -m -s /bin/bash cephadmin
passwd cephadmin
echo "cephadmin ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers.d/cephadmin
chmod 0440 /etc/sudoers.d/cephadmin

设置无密码SSH登录

为了能够使用ceph-deploy实用程序在ceph节点上无缝运行ceph配置,您需要设置无密码ssh登录 从ceph管理节点。

ceph-admin节点, 切换到 cephadmin 上面创建的用户;

su - cephadmin

接下来,通过将密码短语保留为空来生成无密码的SSH密钥。

ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/cephadmin/.ssh/id_rsa): 
Created directory '/home/cephadmin/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/cephadmin/.ssh/id_rsa.
Your public key has been saved in /home/cephadmin/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:hCX07NgcOmFx7gJrS8QCphNBqdjToPe73AtRNaC+f9k [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|=+.  .=.=        |
|o+.. . @ .       |
|=o.o= = *        |
|+.++.= X .       |
| . o* = S        |
|   o.+ o         |
|    +.   o       |
|   ..+  o E      |
|    o.+o         |
+----[SHA256]-----+

接下来,将密钥复制到所有其他节点。为了简化复制,如下所示更新〜/ .ssh / config文件;

vim ~/.ssh/config
Host ceph-osd01
   Hostname ceph-osd01
   User cephadmin
Host ceph-osd02
   Hostname ceph-osd02
   User cephadmin
Host ceph-osd03
   Hostname ceph-osd03
   User cephadmin

之后,复制SSH密钥。

for i in ceph-osd01 ceph-osd02 ceph-osd03; do ssh-copy-id $i; done

在每个提示符下输入密码,以将生成的用于无密码身份验证的SSH密钥从Ceph管理员复制到Ceph节点。

在Ubuntu 18.04上设置Ceph存储集群

安装 ceph-deploy Ceph管理节点上的实用程序

在Ceph管理节点上,您需要安装ceph-deploy实用程序。要安装ceph-deploy实用程序和其他Ceph软件包,您需要创建Ceph存储库。

在Ubuntu 18.04上创建Ceph存储库

安装Ceph存储库签名密钥。以root用户身份执行这些命令。

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

检查 ceph的最新稳定发行版 并更换 {ceph-stable-release} 与版本名称。

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

例如,在Ubuntu 18.04上安装Ceph Mimic的仓库。

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

将存储库重新同步到其最新版本。

apt update

安装Ceph部署实用程序。

apt install ceph-deploy

设置Ceph群集监视器

现在,您的节点已准备好部署Ceph存储集群。首先,切换到 cephadmin 上面创建的用户。

su - cephadmin

注意:不要运行 ceph-deploysudo 也不以 root

在Ceph管理员主目录上创建一个目录,用于存储由ceph-deploy命令生成的配置文件和密钥;

mkdir kifarunix-cluster

导航到上面创建的目录。

cd kifarunix-cluster

初始化Ceph集群监视器。我们的Ceph集群监视器在Ceph OSD 01上运行。

ceph-deploy new ceph-osd01
...
[ceph_deploy.new][DEBUG ] Creating new cluster named ceph
[ceph_deploy.new][INFO  ] making sure passwordless SSH succeeds
[ceph-osd01][DEBUG ] connected to host: ceph-admin.kifarunix-demo.com 
[ceph-osd01][INFO  ] Running command: ssh -CT -o BatchMode=yes ceph-osd01
[ceph-osd01][DEBUG ] connection detected need for sudo
[ceph-osd01][DEBUG ] connected to host: ceph-osd01 
[ceph-osd01][DEBUG ] detect platform information from remote host
[ceph-osd01][DEBUG ] detect machine type
[ceph-osd01][DEBUG ] find the location of an executable
[ceph-osd01][INFO  ] Running command: sudo /bin/ip link show
[ceph-osd01][INFO  ] Running command: sudo /bin/ip addr show
[ceph-osd01][DEBUG ] IP addresses found: [u'192.168.2.114', u'10.0.2.15']
[ceph_deploy.new][DEBUG ] Resolving host ceph-osd01
[ceph_deploy.new][DEBUG ] Monitor ceph-osd01 at 192.168.2.114
[ceph_deploy.new][DEBUG ] Monitor initial members are ['ceph-osd01']
[ceph_deploy.new][DEBUG ] Monitor addrs are ['192.168.2.114']
[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

在Ceph节点上安装Ceph软件包

接下来,通过执行以下命令在所有节点上安装Ceph软件包 ceph-deploy install 在Ceph Admin节点上的命令,如下所示。

默认情况下,ceph-deploy也会安装最新的Ceph稳定发行版,即 Ceph模拟 在撰写本文时。

ceph-deploy install ceph-osd01 ceph-osd02 ceph-osd03

部署Ceph集群监视器

上面已经初始化了Ceph集群监视器。要部署它,请在Ceph Admin节点上执行以下命令。

ceph-deploy mon create-initial

此命令将在当前工作目录上生成许多密钥。

...
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.client.admin.keyring
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-mds.keyring
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-mgr.keyring
[ceph_deploy.gatherkeys][INFO  ] keyring 'ceph.mon.keyring' already exists
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-osd.keyring
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-rgw.keyring
[ceph_deploy.gatherkeys][INFO  ] Destroy temp directory /tmp/tmpIzZYbV

复制Ceph配置文件和密钥

接下来,复制上面收集的配置文件和管理密钥 到您所有的Ceph节点 使您可以使用 ceph CLI,而无需指定监视器地址和 ceph.client.admin.keyring 每次执行命令时。

ceph-deploy admin ceph-osd01 ceph-osd02 ceph-osd03
...
[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to ceph-osd01
[ceph-osd01][DEBUG ] connection detected need for sudo
[ceph-osd01][DEBUG ] connected to host: ceph-osd01 
[ceph-osd01][DEBUG ] detect platform information from remote host
[ceph-osd01][DEBUG ] detect machine type
[ceph-osd01][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to ceph-osd02
[ceph-osd02][DEBUG ] connection detected need for sudo
[ceph-osd02][DEBUG ] connected to host: ceph-osd02 
[ceph-osd02][DEBUG ] detect platform information from remote host
[ceph-osd02][DEBUG ] detect machine type
[ceph-osd02][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to ceph-osd03
[ceph-osd03][DEBUG ] connection detected need for sudo
[ceph-osd03][DEBUG ] connected to host: ceph-osd03 
[ceph-osd03][DEBUG ] detect platform information from remote host
[ceph-osd03][DEBUG ] detect machine type
[ceph-osd03][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf

部署Ceph Manager守护程序

将Ceph配置文件和密钥复制到所有节点后,通过执行以下命令来部署Ceph Cluster Manager守护程序。

请注意,我们的Ceph Manager驻留在Ceph节点01 osd01上

ceph-deploy mgr create ceph-osd01

将逻辑存储卷附加到Ceph OSD节点

在我们的设置中,我们在每个OSD节点上都有4 GB的未分配逻辑卷,可以用作OSD守护程序的后备存储。

要将逻辑卷附加到OSD节点,请运行以下命令。 更换vg01 / lv01 与卷组和逻辑卷相应。

ceph-deploy osd create --data vg01/lv01 ceph-osd01
...
[ceph-osd01][WARNIN] --> ceph-volume lvm activate successful for osd ID: 0
[ceph-osd01][WARNIN] --> ceph-volume lvm create successful for: vg01/lv01
[ceph-osd01][INFO  ] checking OSD status...
[ceph-osd01][DEBUG ] find the location of an executable
[ceph-osd01][INFO  ] Running command: sudo /usr/bin/ceph --cluster=ceph osd stat --format=json
[ceph_deploy.osd][DEBUG ] Host ceph-osd01 is now ready for osd use.

对其他OSD节点重复相同的操作。

ceph-deploy osd create --data vg01/lv01 ceph-osd02
ceph-deploy osd create --data vg01/lv01 ceph-osd03

Ceph节点现在可以用于OSD。

检查Ceph集群运行状况

要验证ceph集群的健康状态,只需执行以下命令 ceph health 在每个OSD节点上。

从管理节点检查Ceph集群的健康状态;

[email protected]:~$ ssh ceph-osd01 sudo ceph health
HEALTH_OK

对其他节点重复相同的操作。

您也可以从ceph节点检查集群运行状况。

[email protected]:~$ sudo ceph health
HEALTH_OK

要检查完整的群集运行状况,请运行 ceph -sceph --status 要么 ceph status

从Ceph Admin节点;

[email protected]:~$ ssh ceph-osd01 sudo ceph -s
  cluster:
    id:     ecc4e749-830a-4ec5-8af9-22fcb5cadbca
    health: HEALTH_OK
 
  services:
    mon: 1 daemons, quorum ceph-osd01
    mgr: ceph-osd01(active)
    osd: 3 osds: 3 up, 3 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   3.0 GiB used, 9.0 GiB / 12 GiB avail
    pgs:

从Ceph节点检查完整的运行状况集群;

[email protected]:~$ sudo ceph -s
  cluster:
    id:     ecc4e749-830a-4ec5-8af9-22fcb5cadbca
    health: HEALTH_OK
 
  services:
    mon: 1 daemons, quorum ceph-osd01
    mgr: ceph-osd01(active)
    osd: 3 osds: 3 up, 3 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   3.0 GiB used, 9.0 GiB / 12 GiB avail
    pgs:

卸载Ceph软件包

如果由于某些原因,您想通过以下方式在Ceph Admin节点上执行以下命令来重新启动Ceph部署,删除Ceph软件包,删除所有节点上的Ceph配置数据:

相应地替换Ceph节点。

ceph-deploy purge ceph-osd01 ceph-osd02 ceph-osd03
ceph-deploy purgedata ceph-osd01 ceph-osd02 ceph-osd03
ceph-deploy forgetkeys
rm ceph.*

在Ubuntu 18.04上扩展Ceph集群

现在您的基本Ceph群集已启动并正在运行,您可以对其进行扩展以确保Ceph群集的可靠性和高可用性。

在Ceph集群上部署其他Ceph监视器

您可以向您的Ceph集群节点添加更多的Ceph监视器守护程序(ceph-mon)。

例如,要将Ceph监视器添加到Ceph节点02,ceph-osd02,您可以从Ceph Admin节点运行以下命令。

su - cephadmin
cd kifarunix-cluster/

将您的公共网络添加到 ceph.conf 配置文件,即使您的节点仅具有单个网络接口也是如此。

注意行; public network = 192.168.2.0/24

vim ceph.conf
[global]
fsid = ecc4e749-830a-4ec5-8af9-22fcb5cadbca
mon_initial_members = ceph-osd01
mon_host = 192.168.2.114
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
public network = 192.168.2.0/24

接下来,将Ceph监视器添加到您的Ceph节点。

ceph-deploy mon add ceph-osd02

您可以通过从Ceph OSD节点运行以下命令来检查Ceph监视器仲裁状态。

ceph quorum_status --format json-pretty

在Ceph集群上部署其他Ceph Manager

Ceph管理器守护程序(ceph-mgr)与监视器守护程序一起运行,以提供其他监视和与外部监视和管理系统的接口。它们以活动/备用模式运行,这样,如果一个守护程序或主机发生故障,另一守护程序或主机可以接管而不会中断服务。

您可以通过运行以下命令将更多的Ceph管理器添加到集群;

ceph-deploy mgr create {ceph-node1} {ceph-node2}

例如,要在我们的Ceph节点2上部署一个额外的Ceph Manger,请从Ceph Admin节点部署ceph-osd02;

su - cephadmin
cd kifarunix-cluster/
ceph-deploy mgr create ceph-osd02

如果检查Ceph集群状态,则应该看到其中一个管理器处于活动状态,而另一个处于待机状态。

[email protected]:~/kifarunix-cluster$ ssh ceph-osd01 sudo ceph -s
  cluster:
    id:     ecc4e749-830a-4ec5-8af9-22fcb5cadbca
    health: HEALTH_OK
 
  services:
    mon: 2 daemons, quorum ceph-osd01,ceph-osd02
    mgr: ceph-osd01(active), standbys: ceph-osd02
    osd: 3 osds: 3 up, 3 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   3.0 GiB used, 9.0 GiB / 12 GiB avail
    pgs: 

你去。您的Ceph存储集群现在可以提供了, 对象存储块存储 要么 文件系统存储

在Ubuntu 18.04上安装和配置Ceph块设备

这标志着指南的结尾,说明了如何在Ubuntu 18.04上安装和设置三个节点的Ceph Storage Cluster。

相关教程

在Ubuntu 18.04上安装和设置GlusterFS

如何在Ubuntu 18.04上安装和配置iSCSI Storage Server

如何在RHEL / CentOS 7上安装和配置NFS服务器

Sidebar