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

Ceph是一个开源的存储平台,它提供高性能,可靠性和可扩展性。 它是一个免费的分布式存储系统,提供对象,块和文件级存储的接口,并且可以在没有单点故障的情况下运行。

在本教程中,我将指导您在Ubuntu 16.04服务器上安装和构建Ceph集群。 Ceph集群由以下组件组成:

  • Ceph OSD(ceph-osd) - 处理数据存储,数据复制和恢复。 Ceph集群至少需要两个Ceph OSD服务器。 我们将在此设置中使用三台Ubuntu 16.04服务器。
  • Ceph监视器(ceph-mon) - 监视集群状态并运行OSD映射和CRUSH映射。 我们将在这里使用一台服务器。
  • Ceph Meta数据服务器(ceph-mds) - 如果要使用Ceph作为文件系统,则需要这样做。

先决条件

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

我将使用以下主机名/ IP设置:

主机名 IP地址

ceph-admin 10.0.15.10
mon1 10.0.15.11
osd1 10.0.15.21
osd2 10.0.15.22
osd3 10.0.15.23
客户端10.0.15.15

第1步 - 配置所有节点

在此步骤中,我们将配置所有6个节点以准备安装Ceph Cluster软件。 所以你必须在所有节点上遵循并运行下面的命令。 并确保所有节点上都安装了ssh-server。

创建Ceph用户

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

useradd -m -s /bin/bash cephuser
passwd cephuser

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

运行下面的命令来实现。

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

安装和配置NTP

安装NTP以在所有节点上同步日期和时间。 运行ntpdate命令通过NTP设置日期和时间。 我们将使用美国的NTP池服务器。 然后启动并启用NTP服务器在引导时运行。

sudo apt-get install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntp
systemctl start ntp

安装Open-vm-tools

如果您正在运行VMware内的所有节点,则需要安装此虚拟化实用程序。

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

安装Python并分开

在本教程中,我们需要用于构建ceph集群的python包。 安装python和python-pip。

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

配置主机文件

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

vim /etc/hosts

粘贴以下配置:

10.0.15.10        ceph-admin
10.0.15.11        mon1
10.0.15.21        ceph-osd1
10.0.15.22        ceph-osd2
10.0.15.23        ceph-osd3
10.0.15.15        ceph-client

保存主机文件并退出vim编辑器。

现在您可以尝试在服务器主机名之间进行ping以测试网络连接。

ping -c 5 mon1

第2步 - 配置SSH服务器

在这一步中,我们将配置ceph -admin节点 。 管理节点用于配置监控节点和osd节点。 登录到ceph -admin节点并访问' cephuser '。

ssh root@ceph-admin
su - cephuser

管理节点用于安装和配置所有集群节点,因此ceph-admin节点上的用户必须具有连接到没有密码的所有节点的权限。 我们需要在'ceph-admin'节点上为'cephuser'配置无密码的SSH访问。

生成' cephuser '的ssh键。

ssh-keygen

离开密码为空/空。

接下来,为ssh配置创建一个配置文件。

vim ~/.ssh/config

粘贴以下配置:

Host ceph-admin
        Hostname ceph-admin
        User cephuser

Host mon1
        Hostname mon1
        User cephuser

Host ceph-osd1
        Hostname ceph-osd1
        User cephuser

Host ceph-osd2
        Hostname ceph-osd2
        User cephuser

Host ceph-osd3
        Hostname ceph-osd3
        User cephuser

Host ceph-client
        Hostname ceph-client
        User cephuser

保存文件并退出vim。

将配置文件的权限更改为644。

chmod 644 ~/.ssh/config

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

ssh-keyscan ceph-osd1 ceph-osd2 ceph-osd3 ceph-client mon1 >> ~/.ssh/known_hosts
ssh-copy-id ceph-osd1
ssh-copy-id ceph-osd2
ssh-copy-id ceph-osd3
ssh-copy-id mon1

请求时输入您的cephuser密码。

现在尝试从ceph-admin节点访问osd1服务器,以测试无密码登录是否工作。

ssh ceph-osd1

第3步 - 配置Ubuntu防火墙

出于安全考虑,我们需要打开服务器上的防火墙。 最好使用Ufw(简单防火墙),这是默认的Ubuntu防火墙来保护系统。 在此步骤中,我们将在所有节点上启用ufw,然后打开ceph-admin,ceph-mon和ceph-osd所需的端口。

登录到ceph-admin节点并安装ufw软件包。

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

打开端口80,2003和4505-4506,然后重新加载firewalld。

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 2003/tcp
sudo ufw allow 4505:4506/tcp

启动并启用ufw启动时启动。

sudo ufw enable

从ceph-admin节点登录到监视器节点'mon1'并安装ufw。

ssh mon1
sudo apt-get install -y ufw

打开ceph监视器节点的端口并启动ufw。

sudo ufw allow 22/tcp
sudo ufw allow 6789/tcp
sudo ufw enable

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

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

ssh ceph-osd1
sudo apt-get install -y ufw

打开osd节点上的端口并重新加载firewalld。

sudo ufw allow 22/tcp
sudo ufw allow 6800:7300/tcp
sudo ufw enable

ufw防火墙配置完成。

第4步 - 配置Ceph OSD节点

在本教程中,我们有3个OSD节点,每个节点都有两个硬盘分区。

  1. / dev / sda为root分区
  2. / dev / sdb是空分区 - 20GB

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

ssh ceph-osd1
ssh ceph-osd2
ssh ceph-osd3

使用fdisk命令检查分区方案。

sudo fdisk -l /dev/sdb

通过使用parted命令,使用XFS文件系统和GPT分区表格式化/ dev / sdb分区。

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

接下来,使用mkfs命令格式化XFS格式的分区。

sudo mkfs.xfs -f /dev/sdb

现在检查分区,你会看到一个XFS / dev / sdb分区。

sudo fdisk -s /dev/sdb
sudo blkid -o value -s TYPE /dev/sdb

第5步 - 构建Ceph群集

在这一步中,我们将在ceph-admin的所有节点上安装Ceph。 要开始,请登录到ceph-admin节点。

ssh root@ceph-admin
su - cephuser

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

在第一步中,我们已经在系统上安装了python和python-pip。 现在我们需要从pypi python存储库安装Ceph部署工具'ceph -deploy '。

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

sudo pip install ceph-deploy

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

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

创建一个新的集群

创建一个新的集群目录。

mkdir cluster
cd cluster/

接下来,通过定义监视节点' mon1 ',使用' ceph -deploy '命令创建一个新的集群。

ceph-deploy new mon1

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

用vim编辑ceph.conf文件。

vim ceph.conf

在[全局]块下,粘贴以下配置。

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

保存文件并退出编辑器。

在所有节点上安装Ceph

现在使用单个命令从ceph-admin节点的所有节点安装Ceph。

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

该命令将自动在所有节点上安装Ceph:mon1,osd1-3和ceph-admin - 安装将需要一些时间。

现在在mon1节点上部署监视器节点。

ceph-deploy mon create-initial

该命令将创建一个监视器密钥,使用此ceph命令检查密钥。

ceph-deploy gatherkeys mon1

将OSDS添加到群集

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

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

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

您将看到/ dev / sdb与我们之前创建的XFS格式。

接下来,使用zap选项删除所有节点上的分区表。

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

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

现在准备所有OSD节点,并确保结果中没有错误。

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

当您看到ceph-osd1-3已准备好在结果中使用OSD时,则该命令成功。

使用以下命令激活OSD:

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

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

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

结果是/ dev / sdb现在有两个分区:

  1. / dev / sdb1 - Ceph数据
  2. / dev / sdb2 - Ceph Journal

或者您直接在OSD节点上查看。

ssh ceph-osd1
sudo fdisk -l /dev/sdb

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

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

通过在所有节点上运行以下命令来更改密钥文件的权限。

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

Ubuntu 16.04上的Ceph Cluster已创建。

第6步 - 测试Ceph

在第4步中,我们安装并创建了一个新的Ceph集群,并将OSDS节点添加到集群。 现在我们应该测试集群,以确保它按照预期工作。

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

ssh mon1

运行以下命令以检查群集运行状况。

sudo ceph health

现在检查集群状态。

sudo ceph -s

您可以看到以下结果:

确保Ceph健康状况正常 ,并且有一个监视器节点' mon1 ',IP地址为“ 10.0.15.11 ”。 有3台OSD服务器,所有这些都是启动和运行的,应该有可用的磁盘空间为45GB - 3x15GB Ceph Data OSD分区。

我们在Ubuntu 16.04上成功构建了一个新的Ceph集群。

参考

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏