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

前言

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

使用 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 即可。文件内容参考如下:


参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容