vlambda博客
学习文章列表

读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器

The Virtual Storage Manager for Ceph

在本章中,我们将介绍以下秘籍:

  • Understanding the VSM architecture
  • Setting up the VSM environment
  • Getting ready for VSM
  • Installing VSM
  • Creating a Ceph cluster using VSM
  • Exploring the VSM dashboard
  • Upgrading the Ceph cluster using VSM
  • VSM roadmap
  • VSM resources

Introductionc 

虚拟存储管理器VSM ) i最初由英特尔发起和开发的用于 Ceph 集群管理的软件;它后来由英特尔在 Apache 2.0 许可下开源。 Ceph 带有用于集群部署的 ceph-deploy CLI 工具,它还为集群管理提供了丰富的 CLI。另一方面,VSM 提供基于 Web 的用户界面来简化 Ceph 集群的创建和管理。通过使用 VSM GUI Ceph 集群,操作员可以监控整体集群健康状况、管理集群硬件和存储容量,以及将 Ceph 存储池连接到 OpenStack Cinder。

VSM 是用 Python 开发的,使用 OpenStack Horizo​​n 作为应用程序框架的基础。对于软件开发人员和 OpenStack 管理员,它具有熟悉的 OpenStack Horizo​​n 外观和感觉。 VSM 的一些关键特性包括:

  • A web-based user interface for easy administration of the Ceph cluster
  • It better organizes and manages the server and storage devices
  • It aids the Ceph cluster's deployment and scale up by adding the MON, OSD, and MDS nodes
  • It aids the Ceph cluster component and capacity monitoring
  • It is beneficial to the overall cluster and individual node performance monitoring
  • It allows the creation of erasure coded and cache tier pools
  • It assists in creating and attaching pools to the OpenStack Cinder
  • It brings the multiuser management interface to Ceph cluster
  • It allows for the upgrading of the Ceph cluster

Understanding the VSM architecture

在这个秘籍中,我们将快速浏览 VSM 的架构,它由以下组件组成:

The VSM controller

VSM 是基于 Web 的应用程序,通常托管在控制器机器上,称为 VSM 控制器节点。您可以使用可充当 VSM 控制器节点的专用物理或虚拟服务器。 VSM 控制器软件是 VSM 的核心组件,它通过 VSM 代理连接到 Ceph 集群。 VSM 控制器收集来自 VSM 代理的所有数据并监控 Ceph 集群。对于集群创建、池创建等操作,VSM控制器向VSM代理发送指令以执行所需的操作。如下图所示,Ceph 管理员/操作员通过 HTTP 或 API 连接到 VSM 控制器节点,他们可以使用 VSM 软件。 VSM 控制器节点还连接到 OpenStack 控制器以配置 OpenStack 以使用 Ceph。除了 Web 用户界面服务,VSM 控制器还托管 MariaDB 和 RabbitMQ。

The VSM agent

VSM 代理是一个在所有 Ceph 集群节点上运行的进程。 VSM 代理的工作是将服务器配置、集群健康/状态信息以及性能数据发送到 VSM 控制器。 VSM 代理使用服务器清单文件来识别 VSM 控制器节点、对其进行身份验证并确定服务器配置。

下图说明了不同 VSM 组件之间的交互以及与 OpenStack 基础架构和 VSM 操作符的交互:

读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器

Setting up the VSM environment

要使用 VSM,您需要使用 VSM 构建 Ceph 集群。 VSM 2.2.0 版本可以控制或管理现有的 Ceph 集群(导入现有的 Ceph 集群)。 在这个秘籍中,我们将使用 Vagrant启动四个名为 vsm-controllervsm-node1vsm-node2vsm-node3 vsm-controller 虚拟机将充当 VSM 控制器节点,vsm-node1vsm-node2vsm-node3 将充当运行 Ceph 集群的 VSM 代理节点。

How to do it...

执行以下步骤来设置 VSM 环境:

  1. The Vagrantfile for launching the VSM virtual machines is available on the Ceph-Cookbook-Second-Edition GitHub repository. Clone this repository, if you have not already done so:
        $ git clone [email protected]:PacktPublishing/Ceph-Cookbook-
          Second-Edition.git
  1. Vagrantfile for launching the VSM nodes is located on the vsm directory:
        $ cd vsm
  1. Launch the virtual machines:
        $ vagrant up vsm-controller vsm-node1 vsm-node2 vsm-node3
  1. Once the virtual machines are launched, you should have four virtual machines running with proper networking in place:
读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器
To log in to these VMs, use cephuser as both the username and password. For a root login, the password is vagrant . Vagrant automates the networking between these VMs with the following details:
        192.168.123.100 vsm-controller
        192.168.123.101 vsm-node1
        192.168.123.102 vsm-node2
        192.168.123.103 vsm-node3

Getting ready for VSM

在上一个秘籍中,我们使用 Vagrant 预配置了虚拟机;它们将与 VSM 一起使用。在这个秘籍中,我们将了解这些 VM 所需的预检配置,以便它可以与 VSM 一起使用。

请注意,通过使用 Vagrant,我们使用 shell 脚本文件完成了大部分预检配置,Ceph-Cookbook-Second-Edition/vsm/post -deploy.sh,存在于我们在上一个秘籍中克隆的 GitHub 存储库中。您可能不想重复前四个步骤,因为 Vagrant 已经执行了它们。我们在这里解释这些步骤,以便您了解 Vagrant 在后台做了什么。

How to do it...

使用以下步骤配置 VSM 环境:

  1. Create the user, cephuser, on all the nodes that will be used for VSM deployment. For simplicity, we will set the password of this user as cephuser. You can always use a username of your choice. Also, provide sudo rights to this user:
        # useradd cephuser
        # echo 'cephuser:cephuser' | chpasswd
        # echo "cephuser ALL=(ALL) NOPASSWD: ALL" >>
         /etc/sudoers
  1. Ensure that the NTP is configured:
        # systemctl stop ntpd
        # systemctl stop ntpdate
        # ntpdate 0.centos.pool.ntp.org > /dev/null 2> /dev/null
        # systemctl start ntpdate
        # systemctl start ntpd
  1. Install tree (optional), git, and the epel packages:
        # yum install -y tree git epel-release
  1. Add host information to the /etc/hosts file:
        192.168.123.100 vsm-controller
        192.168.123.101 vsm-node1
        192.168.123.102 vsm-node2
        192.168.123.103 vsm-node3
这些是我们使用 Vagrant 自动化的一些步骤,它使用了 post-deploy.sh 脚本。如果您使用的是我们为 VSM 创建的指定 GitHub Ceph-Cookbook-Second-Edition 存储库,那么你就不需要执行这四个步骤了。

必须在指定的节点上执行以下步骤:

  1. Log in to the vsm-controller node, and generate and share the SSH keys with other VSM nodes. During this step, you will need to input the cephuser password, which is cephuser:
        # ssh [email protected]
        $ mkdir .ssh;ssh-keygen -f .ssh/id_rsa -t rsa -N ''
        $ ssh-copy-id vsm-node1
        $ ssh-copy-id vsm-node2
        $ ssh-copy-id vsm-node3
  1. Using Vagrant, we have attached three VirtualBox virtual disks on each vsm-node1, vsm-node2, vsm-node3, which will be used as Ceph OSD disks. We need to partition these disks manually for the Ceph OSD and Journal so that VSM can use them with Ceph. Execute the following commands on vsm-node1, vsm-node2, vsm-node3:
        $ sudo parted /dev/sdb -- mklabel gpt
        $ sudo parted -a optimal /dev/sdb -- mkpart primary 10% 100%
        $ sudo parted -a optimal /dev/sdb -- mkpart primary 0 10%
        $ sudo parted /dev/sdc -- mklabel gpt
        $ sudo parted -a optimal /dev/sdc -- mkpart primary 10% 100%
        $ sudo parted -a optimal /dev/sdc -- mkpart primary 0 10%
        $ sudo parted /dev/sdd -- mklabel gpt
        $ sudo parted -a optimal /dev/sdd -- mkpart primary 0 10%
        $ sudo parted -a optimal /dev/sdd -- mkpart primary 10% 100%
读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器
  1. Once you have created partitions on all disks, list block devices on these nodes to verify that the partitions look as shown here:
读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器
  1. At this stage, we have completed the prerequisites required for VSM:
读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器

Installing VSM

在上一个秘籍中,我们做了部署 VSM 所需的所有准备工作。在这个秘籍中,我们将学习如何在所有节点上自动部署 VSM。

How to do it...

我们将使用以下步骤安装 VSM 软件:

  1. Before proceeding with VSM installation, let us upgrade all four VMs to the latest CentOS 7 packages and configuration:
        $ sudo yum update -y
        $ sudo reboot
  1. Log in to all four VSM VMs and configure Ceph Jewel version repositories:
        sudo yum install -y http://download.ceph.com/rpm-jewel/el7/noarch/
                            ceph-release-1-1.el7.noarch.rpm
  1. In this demonstration, we will use CentOS 7 as the base operating system; let's download the VSM repository for CentOS 7. Log in to the vsm-controller node as cephuser and get the VSM version 2.2.0:
        ssh [email protected]
        $ wget https://github.com/01org/virtual-storage-
          manager/releases/download/v2.2.0/2.2.0-521-centos7.tar.gz
  1. VSM is also available for the Ubuntu OS and can be downloaded from https://github.com/01org/virtual-storage-manager.
  2. Extract VSM:
        $ tar -xvf 2.2.0-521-centos7.tar.gz
        $ cd  2.2.0-521
读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器
  1. Set the controller node and agent node's address; add the following lines to the installrc file:
        AGENT_ADDRESS_LIST="192.168.123.101 192.168.123.102
                            192.168.123.103"
        CONTROLLER_ADDRESS="192.168.123.100"
  1. Verify the installrc file:
        $ cat installrc | egrep -v "#|^$"
读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器
  1. In the manifest folder, create directories using the name of the management IP of the vsm-controller and vsm-nodes:
        $ cd manifest
        $ mkdir 192.168.123.100 192.168.123.101 192.168.123.102 
                192.168.123.103
  1. Copy the sample cluster manifest file to 192.168.123.100/cluster.manifest, which is the vsm-controller node:
        $ cp cluster.manifest.sample 192.168.123.100/cluster.manifest
  1. Edit the cluster.manifest file that we added in the last step with the following changes:
读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器

您应该知道,在生产环境中,建议您为 Ceph 管理、Ceph 公共和 Ceph 集群流量使用单独的网络。使用 cluster.manifest 文件,可以指示 VSM 为您的 Ceph 集群使用这些不同的网络。

  1. Edit the manifest/server.manifest.sample file and make the following changes:
    1. Add the VSM controller IP, 192.168.123.100, under the [vsm_controller_ip] section.
    2. Add a disk device name for [sata_device] and [journal_device], as shown in the following screenshot. Make sure that the sata_device and journal_device names are separated by a space:
                vim server.manifest.sample
读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器
server.manifest 文件提供了几个不同类型磁盘的配置选项。在生产环境中,建议您根据您的硬件使用正确的磁盘类型。
  1. Once you have made changes to the manifest/server.manifest.sample file, verify all the changes:
        $ cat server.manifest.sample | egrep -v "#|^$"
读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器
  1. Copy the manifest/server.manifest.sample file that we edited in the previous steps to all the VSM nodes, that is, vsm-node1, vsm-node2, and vsm-node3:
        $ cp server.manifest.sample 192.168.123.101/server.manifest
        $ cp server.manifest.sample 192.168.123.102/server.manifest
        $ cp server.manifest.sample 192.168.123.103/server.manifest
  1. Verify the manifest directory structure:
        $ tree
读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器
  1. To begin the VSM installation, add the execute permission to the install.sh file:
        $ cd ..
        $ chmod +x install.sh
  1. Finally, install VSM by running the install.sh file with the --check-dependence-package parameter, which downloads packages that are necessary for the VSM installation from https//github.com/01org/vsm-dependencies:
        $ ./install.sh -u cephuser -v 2.1 --check-dependence-package
我们需要在命令行中使用 2.1 版本来解决依赖关系。但安装的版本将是 2.2.0。本书面向 Ceph 版本 Jewel 且 VSM 2.2.0 仍处于 beta 阶段,尚未发布 2.2 依赖项,我们需要使用 2.1 发布的依赖项。 VSM 2.2.0 beta 是唯一支持 Jewel 的版本。

VSM 安装需要几分钟时间。安装程序过程可能要求您输入 cephuser 密码 vsm-controller 节点。在这种情况下,请输入 cephuser 作为密码。 如果您遇到任何错误并希望重新启动 VSM 安装,建议您在重试之前清理系统。执行 uninstall.sh 系统清理脚本文件。

安装完成后,您将收到以下消息,如屏幕截图所示:

读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器
  1. Once the VSM installation is finished, extract the password for the admin user by executing get_pass.sh on the vsm-controller node:
        $ ./get_pass.sh
读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器
  1. Finally, log in to the VSM dashboard, https://192.168.123.100/dashboard/vsm, with the user, admin, and password that we extracted in the last step.
读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器

Creating a Ceph cluster using VSM

在上一个秘籍中,我们刚刚安装了 VSM;我们还没有 Ceph 集群。在这个秘籍中,我们将使用 VSM 创建 Ceph 集群,以便 VSM 以后可以管理这个集群。您会发现使用 VSM 部署 Ceph 集群非常简单。

How to do it...

要从 VSM 仪表板创建 Ceph 集群,请导航至 集群管理 | 创建集群,然后点击创建集群 按钮。

读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器
VSM Dashboard create cluster section

如果您查看前面的屏幕截图,版本 2.2.0 有 Import Cluster 选项卡。由于 2.20 仍处于测试阶段,我们需要使用一些技巧:

  1. Disable MDSs and RGWs and restart vsm-api.

打开文件 /usr/lib/python2.7/site-packages/vsm/api/v1/clusters.py

该文件位于 https://github.com/01org/virtual-storage-manager/blob/master/source/vsm/vsm/api/v1/clusters.py

RGW 已经被禁用,我们还需要为 MDS 执行此操作:

读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器
        /etc/init.d/vsm-api restart
  1. Disable MDSs and RGWs and restart vsm-scheduler:

打开文件 /usr/lib/python2.7/site-packages/vsm/scheduler/manager.py

读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器
        /etc/init.d/vsm-scheduler restart
  1. Select all the nodes by clicking on the checkbox next to the ID, and finally, click on the Create Cluster button:
读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器
VSM Dashboard create cluster section after clicking on create cluster tab

创建 Ceph 集群需要几分钟时间。 VSM 将在仪表板的状态字段下非常简短地显示它在后台执行的操作,如下所示:

读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器

清理后会挂载磁盘,如下图dashboard的status栏所示:

读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器

一旦Ceph集群部署完成,VSM会显示节点状态为Active。但只有监控守护进程会启动,OSD 不会启动。 VSM 创建 OSD 数据路径为 /var/lib/ceph/osd/osd$id 但 Ceph Jewel 版本期望 OSD 的数据路径为 /var/lib/ceph/osd/$cluster -$id:

读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器
VSM Dashboard after cluster got created with status as active
  1. We need to apply the following patch /usr/lib/ceph/ceph-osd-prestart.sh in all three VMs:
         data="/var/lib/ceph/osd/${cluster:-ceph}-$id"
         data="/var/lib/ceph/osd/osd$id"
  1. Start the OSD's in all the three VM's one by one with the following command:
        $ systemctl start ceph-osd@$id

这将使所有的 OSD up 进入。

  1. If PG's are stuck while creating, you might want to remove the default pool and recreate it:
读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器

安装的 Ceph Jewel 版本:

读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器
  1. Finally, check the cluster status from Dashboard | Cluster Status:
读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器

IOPS, 延迟, 带宽 ,并且 CPU 详细信息也可以在仪表板中找到:

读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器

Exploring the VSM dashboard

VSM 仪表板使围绕 Ceph 集群的大部分操作变得非常简单,无论是部署、服务器管理、集群管理/监控,甚至是 OpenStack 集成。 VSM 仪表板非常人性化,您可以自行探索其大部分功能。 VSM 仪表板提供以下选项:

  • Dashboard: This provides the complete status of the system including the following:
    • VSM Status: This gives you the VSM version, uptime, Ceph version, and so on
    • Cluster Summary: This gives you the Ceph cluster status, similar to the ceph -s command output
    • Summary: OSD, Monitor, MDS, and PG summary gives performance metrics such as IOPS, Latency, Bandwidth, and CPU utilization for all Ceph nodes
  • Server Management: This includes the following:
    • Manage Servers: The functions are described as follows:
      • It provides lists of all servers with information such as Management Address, Cluster Address and Public Address, Ceph Version, Status, and so on
      • It provides options to Add Servers or Remove Servers, Add Monitors, and Start Servers or Stop Servers:
读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器
VSM Dashboard Manage Server section - server list tab
    • Manage Devices: The functions are described as follows:
      • This gives the list of all Ceph OSDs including their status, weight, server they are hosted on, as well as storage class
      • This allows the creation of new OSDs as well as the restarting, removing, and restoring of OSDs
读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器
VSM Dashboard Manage Device section - device list tab
  • Cluster Management: This section of the VSM dashboard provides several options to manage the Ceph cluster:
    • Create Cluster, Upgrade Cluster, and Manage Pools helps you to create replicated/erasure coded pools, add/remove cache tier, and so on
    • Manage Storage Group adds new storage groups
  • Cluster Monitoring: This section of the VSM dashboard provides complete cluster monitoring, including all of its components:
    • Storage Group Status
    • Pool Status
    • OSD Status
    • Monitor Status
    • MDS Status
    • PG Status
    • RBD Status

这些组件可以在以下屏幕截图中看到:

读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器
VSM Dashboad cluster storage group status
  • OpenStack 集成:VSM 仪表板的这一部分允许我们通过添加 OpenStack 端点并将 RBD 池提供给 OpenStack 来将 Ceph 存储集成到 OpenStack:

    • Manage RBD Pools: Presents RBD Pools to OpenStack
    • OpenStack Access: Adds the OpenStack endpoint
读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器
  • VSM Management: This section of the VSM dashboard allows us to manage settings related to the VSM dashboard itself:
    • Add/Remove User: Create or remove a user and change the password
    • Settings: Various settings related to Ceph
读书笔记《ceph-cookbook-second-edition》Cave的虚拟存储管理器

Upgrading the Ceph cluster using VSM

您现在已经非常熟悉 VSM,并且知道它提供了一个很好的仪表板,可以使复杂的 Ceph 相关操作(例如集群创建)变得非常简单。 VSM 的另一个重要方面是它使 Ceph 集群升级过程自动化并简化了它,但由于 2.2.0 是最新的 beta 版本,它最多支持版本 Jewel 并且这个 Jewel 版本已经安装,所以我们不包括升级到此升级部分中的 Kraken 或 Luminous 版本。

VSM roadmap

编写本书时 VSM 的当前稳定版本是 2.1。这与我们在本章中演示的版本不同。在本章中,我们使用了 2.2 beta 版本,因为这是支持 Jewel 的版本。 2.2支持集群导入和Ceph版本Jewel。

VSM resources

在本章中,我们介绍了 VSM 的大部分重要方面。如果您计划在您的环境中使用 VSM,我建议您查看以下资源以获取有关 VSM 的更多信息:

您已经知道 VSM 是一个开源项目,值得一提的是,VSM 的开发工作是由英特尔在其社区的帮助下领导的。跨度>

我们要感谢英特尔Dan Ferber王亚光,以及整个 VSM 社区,为我们提供了一个很好的软件来部署和管理 Ceph 集群。为了帮助 VSM 进一步发展,请成为社区的活跃成员,并考虑通过做出有意义的贡献来回馈社会。