如何在 Ubuntu 16.04 中安装 Ceph 存储集群

Ceph 是一个高性能、可靠、可扩展的开源存储平台。它是一个自由的分布式存储系统,提供了对象、块和文件级存储的接口,并可以不受单点故障的影响而运行。

在这个教程中,我将指导你在 Ubuntu 16.04 服务器上安装建立一个 Ceph 集群。Ceph 集群包括这些组件:

  • Ceph OSD (ceph-osd) - 控制数据存储,数据复制和恢复。Ceph 集群需要至少两个 Ceph OSD 服务器。这次安装中我们将使用三个 Ubuntu 16.04 服务器。
  • Ceph Monitor (ceph-mon) - 监控集群状态并运行 OSD 映射 和 CRUSH 映射。这里我们使用一个服务器。
  • Ceph Meta Data Server (ceph-mds) - 如果你想把 Ceph 作为文件系统使用,就需要这个。

前提条件

  • 6 个安装了 Ubuntu 16.04 的服务器节点
  • 所有节点上的 root 权限

我将使用下面这些 hostname /IP 安装:


  1. 主机名 IP 地址
  2. ceph-admin 10.0.15.10
  3. mon1 10.0.15.11
  4. osd1 10.0.15.21
  5. osd2 10.0.15.22
  6. osd3 10.0.15.23
  7. client 10.0.15.15

第 1 步 - 配置所有节点

这次安装,我将配置所有的 6 个节点来准备安装 Ceph 集群软件。所以你必须在所有节点运行下面的命令。然后确保所有节点都安装了 ssh-server。

创建 Ceph 用户

在所有节点创建一个名为 cephuser 的新用户


  1. useradd -m -s /bin/bash cephuser
  2. passwd cephuser

创建完新用户后,我们需要给 cephuser 配置无密码的 sudo 权限。这意味着 cephuser 可以不先输入密码而获取到 sudo 权限运行。

运行下面的命令来完成配置。


  1. echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
  2. chmod 0440 /etc/sudoers.d/cephuser
  3. sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers

安装和配置 NTP

安装 NTP 来同步所有节点的日期和时间。先运行 ntpdate 命令通过 NTP 设置日期。我们将使用 US 池的 NTP 服务器。然后开启并使 NTP 服务在开机时启动。


  1. sudo apt-get install -y ntp ntpdate ntp-doc
  2. ntpdate 0.us.pool.ntp.org
  3. hwclock --systohc
  4. systemctl enable ntp
  5. systemctl start ntp

安装 Open-vm-tools

如果你正在 VMware 里运行所有节点,你需要安装这个虚拟化工具。


  1. sudo apt-get install -y open-vm-tools

安装 Python 和 parted

在这个教程,我们需要 python 包来建立 ceph 集群。安装 python 和 python-pip。


  1. sudo apt-get install -y python python-pip parted

配置 Hosts 文件

用 vim 编辑器编辑所有节点的 hosts 文件。


  1. vim /etc/hosts

粘帖如下配置:


  1. 10.0.15.10 ceph-admin
  2. 10.0.15.11 mon1
  3. 10.0.15.21 ceph-osd1
  4. 10.0.15.22 ceph-osd2
  5. 10.0.15.23 ceph-osd3
  6. 10.0.15.15 ceph-client

保存 hosts 文件,然后退出 vim 编辑器。

现在你可以试着在两个服务器间 ping 主机名来测试网络连通性。


  1. ping -c 5 mon1

Ceph cluster Installation on Ubuntu 16.04

第 2 步 - 配置 SSH 服务器

这一步,我们将配置 ceph-admin 节点。管理节点是用来配置监控节点和 osd 节点的。登录到 ceph-admin 节点然后使用 cephuser 用户。


  1. ssh root@ceph-admin
  2. su - cephuser

管理节点用来安装配置所有集群节点,所以 ceph-admin 上的用户必须有不使用密码连接到所有节点的权限。我们需要为 'ceph-admin' 节点的 cephuser 用户配置无密码 SSH 登录权限。

生成 cephuser 的 ssh 密钥。


  1. ssh-keygen

让密码为空。

下面,为 ssh 创建一个配置文件


  1. vim ~/.ssh/config

粘帖如下配置:


  1. Host ceph-admin
  2. Hostname ceph-admin
  3. User cephuser
  4. Host mon1
  5. Hostname mon1
  6. User cephuser
  7. Host ceph-osd1
  8. Hostname ceph-osd1
  9. User cephuser
  10. Host ceph-osd2
  11. Hostname ceph-osd2
  12. User cephuser
  13. Host ceph-osd3
  14. Hostname ceph-osd3
  15. User cephuser
  16. Host ceph-client
  17. Hostname ceph-client
  18. User cephuser

保存文件并退出 vim。

Ceph-admin configuration

改变配置文件权限为 644。


  1. chmod 644 ~/.ssh/config

现在使用 ssh-copy-id 命令增加密钥到所有节点。


  1. ssh-keyscan ceph-osd1 ceph-osd2 ceph-osd3 ceph-client mon1 >> ~/.ssh/known_hosts
  2. ssh-copy-id ceph-osd1
  3. ssh-copy-id ceph-osd2
  4. ssh-copy-id ceph-osd3
  5. ssh-copy-id mon1

当请求输入密码时输入你的 cephuser 密码。

Ceph-admin deploy ssh key to all cluster nodes

现在尝试从 ceph-admin 节点登录 osd1 服务器,测试无密登录是否正常。


  1. ssh ceph-osd1

SSH Less password from ceph-admin to all nodes cluster

第 3 步 - 配置 Ubuntu 防火墙

出于安全原因,我们需要在服务器打开防火墙。我们更愿使用 Ufw(不复杂防火墙)来保护系统,这是 Ubuntu 默认的防火墙。在这一步,我们在所有节点开启 ufw,然后打开 ceph-admin、ceph-mon 和 ceph-osd 需要使用的端口。

登录到 ceph-admin 节点,然后安装 ufw 包。


  1. ssh root@ceph-admin
  2. sudo apt-get install -y ufw

打开 80,2003 和 4505-4506 端口,然后重启防火墙。


  1. sudo ufw allow 22/tcp
  2. sudo ufw allow 80/tcp
  3. sudo ufw allow 2003/tcp
  4. sudo ufw allow 4505:4506/tcp

开启 ufw 并设置开机启动。


  1. sudo ufw enable

UFW Firewall with Ceph service

从 ceph-admin 节点,登录到监控节点 mon1 然后安装 ufw。


  1. ssh mon1
  2. sudo apt-get install -y ufw

打开 ceph 监控节点的端口然后开启 ufw。


  1. sudo ufw allow 22/tcp
  2. sudo ufw allow 6789/tcp
  3. sudo ufw enable

最后,在每个 osd 节点 ceph-osd1、ceph-osd2 和 ceph-osd3 上打开这些端口 6800-7300。

从 ceph-admin 登录到每个 ceph-osd 节点安装 ufw。


  1. ssh ceph-osd1
  2. sudo apt-get install -y ufw

在 osd 节点打开端口并重启防火墙。


  1. sudo ufw allow 22/tcp
  2. sudo ufw allow 6800:7300/tcp
  3. sudo ufw enable

ufw 防火墙配置完成。

第 4 步 - 配置 Ceph OSD 节点

这个教程里,我们有 3 个 OSD 节点,每个节点有两块硬盘分区。

  1. /dev/sda 用于根分区
  2. /dev/sdb 空闲分区 - 20GB

我们要使用 /dev/sdb 作为 ceph 磁盘。从 ceph-admin 节点,登录到所有 OSD 节点,然后格式化 /dev/sdb 分区为 XFS 文件系统。


  1. ssh ceph-osd1
  2. ssh ceph-osd2
  3. ssh ceph-osd3

使用 fdisk 命令检查分区表。


  1. sudo fdisk -l /dev/sdb

格式化 /dev/sdb 分区为 XFS 文件系统,使用 parted 命令创建一个 GPT 分区表。


  1. sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%

下面,使用 mkfs 命令格式化分区为 XFS 格式。


  1. sudo mkfs.xfs -f /dev/sdb

现在检查分区,然后你会看见一个 XFS 文件系统的 /dev/sdb 分区。


  1. sudo fdisk -s /dev/sdb
  2. sudo blkid -o value -s TYPE /dev/sdb

Format partition ceph OSD nodes

第 5 步 - 创建 Ceph 集群

在这步,我们将从 ceph-admin 安装 Ceph 到所有节点。马上开始,先登录到 ceph-admin 节点。


  1. ssh root@ceph-admin
  2. su - cephuser

在 ceph-admin 节点上安装 ceph-deploy

首先我们已经在系统上安装了 python 和 python-pip。现在我们需要从 pypi python 仓库安装 Ceph 部署工具 'ceph-deploy'。

用 pip 命令在 ceph-admin 节点安装 ceph-deploy 。


  1. sudo pip install ceph-deploy

注意: 确保所有节点都已经更新。

ceph-deploy 工具已经安装完毕后,为 Ceph 集群配置创建一个新目录。

创建一个新集群

创建一个新集群目录。


  1. mkdir cluster
  2. cd cluster/

下一步,用 ceph-deploy 命令通过定义监控节点 mon1 创建一个新集群。


  1. ceph-deploy new mon1

命令将在集群目录生成 Ceph 集群配置文件 ceph.conf

Generate new ceph cluster configuration

用 vim 编辑 ceph.conf


  1. vim ceph.conf

在 [global] 块下,粘贴下面的配置。


  1. # Your network address
  2. public network = 10.0.15.0/24
  3. osd pool default size = 2

保存文件并退出编辑器。

安装 Ceph 到所有节点

现在用一个命令从 ceph-admin 节点安装 Ceph 到所有节点。


  1. ceph-deploy install ceph-admin ceph-osd1 ceph-osd2 ceph-osd3 mon1

命令将自动安装 Ceph 到所有节点:mon1、osd1-3 和 ceph-admin - 安装将花一些时间。

现在到 mon1 节点部署监控节点。


  1. ceph-deploy mon create-initial

命令将创建一个监控密钥,用 ceph 命令检查密钥。


  1. ceph-deploy gatherkeys mon1

Deploy key ceph

增加 OSD 到集群

在所有节点上安装了 Ceph 之后,现在我们可以增加 OSD 守护进程到该集群。OSD 守护进程将在磁盘 /dev/sdb 分区上创建数据和日志 。

检查所有 osd 节点的 /dev/sdb 磁盘可用性。


  1. ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3

disk list of osd nodes

你将看见我们之前创建 XFS 格式的 /dev/sdb。

下面,在所有 OSD 节点上用 zap 选项删除该分区表。


  1. ceph-deploy disk zap ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb

这个命令将删除所有 Ceph OSD 节点的 /dev/sdb 上的数据。

现在准备所有 OSD 节点,请确保结果没有报错。


  1. ceph-deploy osd prepare ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb

当你看到 ceph-osd1-3 结果已经准备好供 OSD 使用,就表明命令已经成功。

Prepare the ceph-osd nodes

用下面的命令激活 OSD:


  1. ceph-deploy osd activate ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb

现在你可以再一次检查 OSDS 节点的 sdb 磁盘。


  1. ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3

Ceph osds activated

结果是 /dev/sdb 现在已经分为两个区:

  1. /dev/sdb1 - Ceph Data
  2. /dev/sdb2 - Ceph Journal

或者你直接在 OSD 节点山检查。


  1. ssh ceph-osd1
  2. sudo fdisk -l /dev/sdb

Ceph OSD nodes were created

接下来,部署管理密钥到所有关联节点。


  1. ceph-deploy admin ceph-admin mon1 ceph-osd1 ceph-osd2 ceph-osd3

在所有节点运行下面的命令,改变密钥文件权限。


  1. sudo chmod 644 /etc/ceph/ceph.client.admin.keyring

Ceph 集群在 Ubuntu 16.04 已经创建完成。

第 6 步 - 测试 Ceph

在第 4 步,我们已经安装并创建了一个新 Ceph 集群,然后添加了 OSD 节点到集群。现在我们应该测试集群确保它如期工作。

从 ceph-admin 节点,登录到 Ceph 监控服务器 mon1。


  1. ssh mon1

运行下面命令来检查集群是否健康。


  1. sudo ceph health

现在检查集群状态。


  1. sudo ceph -s

你可以看到下面返回结果:

Ceph Cluster Status

确保 Ceph 健康状态是 OK 的,有一个监控节点 mon1 IP 地址为 '10.0.15.11'。有 3 个 OSD 服务器都是 up 状态并且正在运行,可用磁盘空间为 45GB - 3x15GB 的 Ceph 数据 OSD 分区。

我们在 Ubuntu 16.04 建立一个新 Ceph 集群成功。

原文发布时间为:2017-02-07

本文来自合作伙伴“Linux中国”

时间: 2024-10-02 00:48:20

如何在 Ubuntu 16.04 中安装 Ceph 存储集群的相关文章

如何在Ubuntu 16.04中安装Ceph存储集群

Ceph 是一个高性能.可靠.可扩展的开源存储平台.它是一个自由的分布式存储系统,提供了对象.块和文件级存储的接口,并可以不受单点故障的影响而运行. 在这个教程中,我将指导你在 Ubuntu 16.04 服务器上安装建立一个 Ceph 集群.Ceph 集群包括这些组件: Ceph OSD (ceph-osd) - 控制数据存储,数据复制和恢复.Ceph 集群需要至少两个 Ceph OSD 服务器.这次安装中我们将使用三个 Ubuntu 16.04 服务器. Ceph Monitor (ceph-

如何在Ubuntu 16.04上安装OTRS(开源问题单系统)

OTRS ,即开源问题单(ticket)申请系统,是一个用于客户服务.帮助台和 IT 服务管理的开源问题单软件.该软件是用 Perl 和 javascript 编写的.对于那些需要管理票据.投诉.支持请求或其他类型的报告的公司和组织来说,这是一个问题单解决方案.OTRS 支持包括 MySQL.PostgreSQL.Oracle 和 SQL Server 在内的多个数据库系统,它是一个可以安装在 Windows 和 Linux 上的多平台软件. 在本教程中,我将介绍如何在 Ubuntu 16.04

如何在 Ubuntu 15.04 中安装 puppet

如何在 Ubuntu 15.04 中安装 puppet 大家好,本教程将学习如何在 ubuntu 15.04 上面安装 puppet,它可以用来管理你的服务器基础环境.puppet 是由 puppet 实验室Puppet Labs开发并维护的一款开源的配置管理软件,它能够帮我们自动化供给.配置和管理服务器的基础环境.不管我们管理的是几个服务器还是数以千计的计算机组成的业务报表体系,puppet 都能够使管理员从繁琐的手动配置调整中解放出来,腾出时间和精力去提系统的升整体效率.它能够确保所有自动化

如何在Ubuntu 14.04中安装最新版Eclipse

想必很多开发人员都知道,Ubuntu 软件源中提供的并不是最新版本的 Eclipse,本教程就教大家如何在 Ubuntu 14.04 中快速安装 Eclipse 官方发布的最新版本. 到目前为止,Eclipse 的官方最新版本为 Eclipse Kepler (4.3.2),我们可以使用如下步骤在 Ubuntu 14.04 或其它 Ubuntu 版本中进行快速安装. 1.安装OpenJDK Java 7 如果你的系统中没有安装 Java,我们需要按如下步骤事先安装好 OpenJDK Java 7

NoSQL: 如何在Ubuntu 16.04上安装OrientDB

说明 - 非关系型数据库(NoSQL)和 OrientDB 通常在我们提及数据库的时候,想到的是两个主要的分类:使用用于用户和应用程序之间进行对接的一种被称为结构化查询语言(Structured Query Language ,缩写 SQL)的关系型数据库管理系统(Relational Data base Management System,缩写 RDBMS) 以及非关系型数据库管理系统(non-relational database management systems 或称 NoSQL 数据

如何在 Ubuntu 15.04 中安装 nginx 和 google pagespeed

Nginx (engine-x)是一个开源的高性能 HTTP 服务器.反向代理和 IMAP/POP3 代理服务器.nginx 杰出的功能有:稳定.丰富的功能集.简单的配置和低资源消耗.nginx 被用于一些高性能网站并在站长之间变得越来越流行.本教程会从源码构建一个带有 google paespeed 模块的用于 Ubuntu 15.04 的 nginx .deb 安装包. pagespeed 是一个由 google 开发的 web 服务器模块来加速网站响应时间.优化 html 和减少页面加载时

如何在Ubuntu 16.04和Fedora 22-24上安装最新的XFCE桌面?

Xfce 是一款针对 Linux 系统的现代化轻型开源桌面环境,它在其他的类 Unix 系统上,比如 Mac OS X. Solaries. *BSD 以及其它几种上也能工作得很好.它非常快并以简洁而优雅的用户界面展现了用户友好性. 在服务器上安装一个桌面环境有时还是有用的,因为某些应用程序可能需要一个桌面界面,以便高效而可靠的管理. Xfce 的一个卓越的特性是其内存消耗等系统资源占用率很低,因此,如果服务器需要一个桌面环境的话它会是首选. Xfce 桌面的功能特性 另外,它的一些值得注意的组

PHP7 学习笔记(一)Ubuntu 16.04 编译安装Nginx-1.10.3、 PHP7.0.9、Redis3.0 扩展、Phalcon3.1 扩展、Swoole1.9.8 扩展、ssh2扩展(全程编译安装)

 ==================== PHP 7.0 编译安装================== wget http://cn2.php.net/get/php-7.0.9.tar.bz2/from/this/mirror -- 下载php镜像tar xvf mirror -- 解压镜像cd php-7.0.9/ -- 进入安装目录sudo apt-get update -- 更新阿里云库 sudo apt-get install libkrb5-dev \ libc-client200

如何在 Ubuntu/Fedora/Debian 中安装 GitLab

如何在 Ubuntu/Fedora/Debian 中安装 GitLab 在 Git 问世之前,分布式版本控制从来都不是一件简单的事.Git 是一个自由开源的软件,旨在轻松且快速地对从小规模到非常巨大的项目进行管理.Git 最开始由 Linus Torvalds 开发,他同时也是著名的 Linux 内核的创建者.在 git 和分布式版本控制系统领域中,GitLab 是一个极棒的新产品.它是一个基于 web 的 Git 仓库管理应用,包含代码审查.wiki.问题跟踪等诸多功能.使用 GitLab 可