ceph(第二步) 三节点部署(ceph-deploy)

2019-10-08  本文已影响0人  lzp1234

前言

这篇文章解决了什么问题:

使用 ceph-deploy 工具部署 ceph 存储集群。

整体介绍:

使用虚拟机构建三节点 ceph 存储集群。

环境

全篇使用 root 权限。

虚拟化软件:vmware
虚拟机操作系统:centos 7.6
每台虚拟机配置:2G内存,1块系统盘(50G),2块ceph将使用的硬盘(每块20G)
虚拟机网络:一条虚拟机间互通,并且可以上网的网络即可(NAT)。
总共三台虚拟机:ceph01、ceph02、ceph03

ceph 版本:nautilus
ceph-deploy 版本:2.0.1

当前时间: 2019.10

正文

部署过程整体描述:
首先选出一台机器作为部署节点,部署节点负责为机器部署 ceph 软件。这里直接选择 ceph01 作为部署节点。

基础环境配置

1. 配置网络

我这里 ceph01、ceph02、ceph03 对应的地址分别为:
10.10.10.31、10.10.10.32、10.10.10.33

2. 关闭防火墙

所有机器均关闭掉防火墙。

systemctl disable iptables
systemctl stop iptables
systemctl disable firewalld
systemctl stop firewalld
3. 配置加速源

所有机器均配置 yum 国内加速源:

yum install -y wget
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache

所有机器均配置 pip 国内加速源:

mkdir ~/.pip
cat > ~/.pip/pip.conf << EOF 
[global]
trusted-host=mirrors.aliyun.com
index-url=https://mirrors.aliyun.com/pypi/simple/
EOF
4. 配置主机名解析

这里配置的是部署节点到其它机器间的主机解析。

在所有节点上执行:

vim /etc/hosts 添加如下内容:

10.10.10.31 ceph01 
10.10.10.32 ceph02 
10.10.10.33 ceph03
5. 配置机器间的免密登录

这里配置的是部署节点到其它机器间的免密登录。

在 ceph01 (部署节点)节点上执行:
  1. 生成公私钥:
ssh-keygen
  1. 拷贝公钥到其它机器上:

注意:以下每行命令执行后都需要输入密码,不能直接全部复制粘贴。

ssh-copy-id -i /root/.ssh/id_rsa.pub root@ceph01
ssh-copy-id -i /root/.ssh/id_rsa.pub root@ceph02 
ssh-copy-id -i /root/.ssh/id_rsa.pub root@ceph03
  1. 测试免密登录

命令参考如下,尽量每个节点都测试一下

ssh root@ceph03
6. 安装 ntp 服务

所有机器执行如下命令:

yum install -y ntp ntpdate ntp-doc
7. 配置主机名

注意!当前步骤十分重要。

在 ceph 中读取了 hostname 命令产生的结果。
因此在每个节点上均需修改自己的 hostname。命令参考:

进入到 ceph01 节点上:

hostname ceph01
echo "ceph01" > /etc/hostname

按照此方法修改其它节点的 hostname。

开始部署 ceph

主要分两步:
第一步,安装 ceph-deploy
第二步,使用 ceph-deploy 安装 ceph 组件。

第一步:在 node01(部署节点)上安装 ceph-deploy

该步骤所有命令均在部署节点上执行。

安装 ceph-deploy:

yum install -y python-pip 
pip install -U pip
pip install ceph-deploy==2.0.1
第二步:在 node01(部署节点)上使用 ceph-deploy 部署 ceph 组件

该步骤所有命令均在部署节点上执行。

1. 更换 ceph-deploy 将使用的 ceph 源(决定安装什么版本的 ceph):
export CEPH_DEPLOY_REPO_URL=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7 
export CEPH_DEPLOY_GPG_URL=http://mirrors.aliyun.com/ceph/keys/release.asc
2. 创建部署临时目录:
mkdir /opt/ceph-deploy
cd /opt/ceph-deploy
3. 部署一个新集群,生成初始配置(参数 ceph01 是指该集群的第一个节点):
ceph-deploy new ceph01
4. 在该目录下生成了新集群的一些配置文件。接下来需要对这些配置文件做一些改动:

vim /opt/ceph-deploy/ceph.conf
在 global 中增加:

public network = 10.10.10.0/24
5. 安装 ceph:
ceph-deploy install ceph01 ceph02 ceph03
6. 初始化 ceph monitor:
ceph-deploy mon create-initial

当前命令执行以后,可以在当前目录下发现许多的 keyring 文件,这是连接其它节点的凭据。以后的 ceph-deploy 命令均在当前目录下执行才可正常使用。

7. 同步配置文件

将当前临时文件夹下的配置文件同步到所有节点的 /etc/ceph/ 下

ceph-deploy admin ceph01 ceph02 ceph03
8. 安装 ceph mgr
ceph-deploy mgr create ceph01
9. 安装 ceph mds
ceph-deploy mds create ceph01
10. 为集群增加 osd

我这个环境有三台虚拟机,每台虚拟机上有额外2块硬盘用于 ceph 集群,它们是 sdb、sdc。这个要根据自己的环境找到正确的硬盘。

命令参考如下:

ceph-deploy osd create --data /dev/sdb ceph01
ceph-deploy osd create --data /dev/sdc ceph01
ceph-deploy osd create --data /dev/sdb ceph02
ceph-deploy osd create --data /dev/sdc ceph02
ceph-deploy osd create --data /dev/sdb ceph03
ceph-deploy osd create --data /dev/sdc ceph03

其中/dev/sdb ceph01,表示 ceph01 节点上的 /dev/sdb 硬盘。

命令执行完以后,基础的环境就算搭建完成了。可以执行如下命令查看集群的状态:
ceph 健康: ceph health
ceph 集群详细状态:ceph -s
ceph 集群 osd 状态:ceph osd tree

image.png

至此,该集群还处于一个基础的状态,并不能正常使用。

接下来需要配置 ceph pool 相关信息,以及安装配置 rgw 从而使用对象存储功能。

11. 配置 ceph pool

vim /opt/ceph-deploy/ceph.conf
在 global 中增加如下:

osd pool default size = 3
osd pool default min size = 2
osd pool default pg_num = 128
osd pool default pgp_num = 128

其中 pg num 需要计算得出,pgp num 与 pg num 保持一致。

粗略的计算方法:
( osd 数量 * 100 ) / 池副本数。

同步配置文件:

ceph-deploy --overwrite-conf admin ceph01 ceph02 ceph03
12. 安装配置 rgw

vim /opt/ceph-deploy/ceph.conf
增加如下内容:

[client]
rgw frontends = civetweb port=17480

整体配置如下:


image.png

安装 rgw:

ceph-deploy --overwrite-conf rgw create ceph01
基础安装结束

至此,我们可以去创建一个 pool,并上传文件测试集群了。

这个时候执行 ceph -s
可以看到集群报了 warn 信息,如下:


image.png

这不是因为我们哪里配置有问题,这是 ceph 的某个告警配置。当某个 osd 的 pg 小于 30 时会发出告警。现在可以忽略这个问题。ceph 提供这个配置,可能是担心集群在未来使用中出现 pg 分布不均匀的情况。
参考:
https://docs.ceph.com/docs/master/rados/configuration/pool-pg-config-ref/

简单使用对象存储功能

查看池列表:ceph osd lspools

ceph 默认的池已经创建一些 pg。为了解决前面的告警,我们需要满足每个 osd 都有超过30个 pg,因此创建一个具有80个 pg 的池。

  1. 创建池:
# 创建池
ceph osd pool create mytest 80

# 初始化池为 rgw 使用的池
ceph osd pool application enable mytest rgw

(此时用 ceph -s 可以看到集群状态又是 HEALTH_OK 了)

  1. 生成要上传的文件
echo 1234 > /tmp/testfile.txt
  1. 上传文件到池中

命令参考:

rados put {object-name} {file-path} --pool=mytest
rados put test-object-1 /tmp/testfile.txt --pool=mytest
  1. 查看池
rados ls -p mytest

可以看到文件已经上传上去了,并且叫 test-object-1


image.png
  1. 下载文件

rados get test-object-1 /tmp/test-object-1 -p mytest


image.png

可以看到两个文件的内容是一样的,到此,基本的部署及使用均正常了。

扩展

关于 hostname

在 ceph 中,hostname 是一个非常重要的属性。

hostname 命令只可以临时改变当前主机的主机名,并不会永久生效。

目前已知两种方式会永久影响主机名。

  1. /etc/hostname 中存储着默认的主机名。

  2. /etc/hosts 中存储着对应地址使用的主机名。

第一种情况,很直观,不再多做介绍。

第二种情况时:

10.10.10.31 ceph01 

这样的配置,会让通过 10.10.10.31 地址访问进来的连接所识别到的主机名改为 ceph01。

在本环境中,不同的 ceph 节点之间通过 10.10.10.0/24 地址进行通信,所以只需要为该地址配置主机名。

在 ceph 中,如果主机名混乱,会发生什么?
ceph osd tree 这个命令可以让你看到主机名混乱带来的后果:

image.png

如果糟糕的事情已经发生了,我们只需要修改好主机名,然后重启机器,一切都会恢复正常:


image.png

第一种方式的优先级高于第二种。
因此只需要更改 /etc/hostname 即可。文件内容参考如下:


参考

上一篇下一篇

猜你喜欢

热点阅读