手动安装ceph

 

 

一、获取软件

 

获取二进制包

 

准备工作:

所有 Ceph 部署都需要 Ceph 软件包(除非是开发),你应该安装相应的密钥和推荐的软件包

密钥:(推荐) 不管你是用仓库还是手动下载,你都需要用密钥校验软件包。如果你没有密钥,就会收到安全警告。有两个密钥:一个用于发布(常用)、一个用于开发(仅适用于程序员和 QA ),请按需选择,详情见安装密钥。

Ceph:(必要) 所有 Ceph 部署都需要 Ceph 发布的软件包,除非你部署开发版软件包(仅有开发版、 QA 、和尖端部署)。详情见添加 Ceph 库。
Ceph Development:(可选) 如果你在做 Ceph 开发、为 Ceph 做构建测试、或者急需开发版中的尖端功能,可以安装开发版软件包,详情见 添加 Ceph 开发库 。
Apache
/FastCGI:(可选) 如果你想部署 Ceph 对象存储服务,那么必须安装 Apache 和 FastCGI 。 Ceph 库提供的 Apache 和 FastCGI 二进制包和来自 Apache 的是一样的,但它打开了 100-continue 支持。如果你想启用 Ceph 对象网关、且支持 100-continue ,那必须从 Ceph 库下载 Apache/FastCGI 软件包。详情见添加 Apache/CGI 源。

 

 

安装密钥

 

 

把密钥加入你系统的可信密钥列表内,以消除安全告警。对主要发行版(如 dumplingemperorfirefly )和开发版(如 release-name-rc1release-name-rc2 )应该用 release.asc 密钥;开发中的测试版应使用 autobuild.asc 密钥(开发者和 QA )

 

注意:这里只针对centos而言

 

 

执行下列命令安装 release.asc 密钥

sudo rpm --import 'https://download.ceph.com/keys/release.asc'

 

执行下列命令安装 autobuild.asc 密钥(仅对 QA 和开发者):

 

sudo rpm --import 'https://download.ceph.com/keys/autobuild.asc'

 

添加 Ceph 库

适合 CentOS/RHEL 和其他发行版(通过 YUM 安装)的包位于:

 

http://download.ceph.com/rpm-{release-name}

 

RPM 二进制包

对于主要发布,你可以在 /etc/yum.repos.d/ 目录下新增一个 Ceph 库:创建 ceph.repo 。在下例中,需要用 Ceph 主要发布名(如 dumplingemperor )替换 {ceph-release} 、用 Linux 发行版名( el6rhel6 等)替换 {distro} 。你可以到 http://download.ceph.com/rpm-{ceph-release}/ 看看 Ceph 支持哪些发行版。有些 Ceph 包(如 EPEL )必须优先于标准包,所以你必须确保设置了 priority=2

[ceph]
name=Ceph packages for $basearch
baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/$basearch
enabled=1
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

[ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/noarch
enabled=1
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/SRPMS
enabled=0
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

 

如果想用开发版,你也可以用相应配置:

 

[ceph]
name=Ceph packages for $basearch/$releasever
baseurl=http://download.ceph.com/rpm-testing/{distro}/$basearch
enabled=1
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

[ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-testing/{distro}/noarch
enabled=1
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=http://download.ceph.com/rpm-testing/{distro}/SRPMS
enabled=0
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

 

下载软件包

RPM 二进制包

Ceph 依赖一些第三方库。执行下列命令添加 EPEL 库:

su -c 'rpm -Uvh http://download.ceph.com/rpm-firefly/{distro}/noarch/ceph-{version}.{distro}.noarch.rpm'

 

Ceph依赖下列包

snappy
leveldb
gdisk
python-argparse
gperftools-libs

当前,我们为这些平台 RHEL/CentOS6 ( el6 )、 Fedora 18 和 19 ( f18f19 )、 OpenSUSE 12.2 ( opensuse12.2 )和 SLES ( sles11 )分别构建二进制包,仓库包会在本地系统上装好 Ceph 库配置文件,这样 yumup2date 就可以使用这些配置文件自动安装了。用自己的发行版名字替换 {distro}

 

su -c 'rpm -Uvh http://download.ceph.com/rpm-firefly/{distro}/noarch/ceph-{version}.{distro}.noarch.rpm'

 

例如,对于 CentOS 6 ( el6

su -c 'rpm -Uvh http://download.ceph.com/rpm-firefly/el6/noarch/ceph-release-1-0.el6.noarch.rpm'

 

你可以从这里直接下载RPM包:

http://download.ceph.com/rpm-firefly

 

对较老的 Ceph 发布,用 Ceph 发布名替换 {release-name} ,你可以执行 lsb_release -sc 命令获取发行版代号。

su -c 'rpm -Uvh http://download.ceph.com/rpm-{release-name}/{distro}/noarch/ceph-{version}.{distro}.noarch.rpm'

 

二、安装软件

 

安装 ceph-deploy

ceph-deploy 工具可用来装配起或拆除 Ceph 集群,方便了开发、测试和概念验证项目

要用 yum 安装 ceph-deploy ,用此命令:

sudo yum install ceph-deploy

 

安装 Ceph 存储集群

 

此方法只适用于那些没采用部署工具(如 ceph-deploychefjuju 等)的用户

 

要用 RPM 安装 Ceph ,可按如下步骤进行

1.安装 yum-plugin-priorities

sudo yum install yum-plugin-priorities

 

2.确认 /etc/yum/pluginconf.d/priorities.conf 文件存在。

3.确认 priorities.conf 里面打开了插件支持。

 

[main]
enabled = 1

4.确认你的 YUM ceph.repo 库文件条目包含 priority=2

 

[ceph]
name=Ceph packages for $basearch
baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/$basearch
enabled=1
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

[ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/noarch
enabled=1
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/SRPMS
enabled=0
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

 

5.安装依赖的的软件包

 

sudo yum install snappy leveldb gdisk python-argparse gperftools-libs

 

成功添加正式版或开发版软件包的库文件之后,或把 ceph.repo 文件放入 /etc/yum.repos.d 之后,你就可以安装 Ceph 软件包了

 

sudo yum install ceph

 

 

 

三、手动部署集群

把 Ceph 二进制包安装到各节点后,你也可以手动部署集群。手动过程主要是让部署脚本(如 Chef、Juju、Puppet 等)的开发者们验证程序的

 

手动部署

所有 Ceph 集群都需要至少一个监视器、且 OSD 数量不小于副本数。

自举引导初始监视器是部署 Ceph 存储集群的第一步,监视器的部署也为整个集群奠定了重要框架,

如存储池副本数、每个 OSD 拥有的归置组数量、心跳周期、是否需认证等,其中大多数选项都有默认值,但是建设生产集群时仍需要您熟知它们。

按照安装(快速)里的相同配置,我们能配置起监视器为 node1 , OSD 节点为 node2node3 的集群

 

 

 

 

 监视器的自举引导

 

 自举引导监视器(理论上是 Ceph 存储集群)需要以下几个条件

惟一标识符: fsid 是集群的惟一标识,它是 Ceph 作为文件系统时的文件系统标识符。现在, Ceph 还支持原生接口、块设备、和对象存储网关接口,所以 fsid 有点名不符实了。

集群名称: 每个 Ceph 集群都有自己的名字,它是个不含空格的字符串。默认名字是 ceph 、但你可以更改;尤其是运营着多个集群时,需要用名字来区分要操作哪一个。

比如,当你以联盟架构运营多个集群时,集群名字(如 us-west 、 us-east )将作为标识符出现在 CLI 界面上。注意:要在命令行下指定某个集群,可以指定以集群名为前缀的配置文件(如 ceph.conf 、 us-west.conf 、 us-east.conf 等);也可以参考 CLI 用法( ceph --cluster {cluster-name} )。

监视器名字: 同一集群内的各监视器例程都有惟一的名字,通常都用主机名作为监视器名字(我们建议每台主机只运行一个监视器、并且不要与 OSD 主机复用。短主机名可以用 hostname -s 获取。

监视器图: 自举引导初始监视器需要生成监视器图,为此,需要有 fsid 、集群名(或用默认)、至少一个主机名及其 IP 。

监视器密钥环: 监视器之间通过密钥通讯,所以你必须把监视器密钥加入密钥环,并在自举引导时提供。

管理密钥环: 要使用 ceph 这个命令行工具,你必须有 client.admin 用户,所以你要创建此用户及其密钥,并把他们加入密钥环。

 

前述必要条件并未提及 Ceph 配置文件的创建,然而,实践中最好创建个配置文件,并写好 fsidmon initial membersmon host 配置。

你也可以查看或设置运行时配置。 Ceph 配置文件可以只包含非默认配置, Ceph 配置文件的配置将覆盖默认值,把这些配置保存在配置文件里可简化维护。

具体过程如下:

 

 

1.登录到初始监视器节点:

ssh {hostname}

如:

ssh node1


2.确保保存 Ceph 配置文件的目录存在, Ceph 默认使用
/etc/ceph 。安装 ceph 软件时,安装器也会自动创建 /etc/ceph/ 目录。 ls /etc/ceph 注意:部署工具在清除集群时可能删除此目录(如 ceph-deploy purgedata {node-name} 、 ceph-deploy purge {node-name} )。
3.创建 Ceph 配置文件, Ceph 默认使用 ceph.conf ,其中的 ceph 是集群名字。 sudo vim
/etc/ceph/ceph.conf
4.给集群分配惟一 ID (即 fsid )。 uuidgen
5.把此 ID 写入 Ceph 配置文件。 fsid
= {UUID} 例如: fsid = a7f64266-0894-4f1e-a635-d0aeaca0e993
6.把初始监视器写入 Ceph 配置文件。 mon initial members
= {hostname}[,{hostname}] 例如: mon initial members = node1
7.把初始监视器的 IP 地址写入 Ceph 配置文件、并保存。 mon host
= {ip-address}[,{ip-address}] 例如: mon host = 192.168.0.1 注意: 你也可以写 IPv6 地址,但是必须设置 ms bind ipv6 = true 。详情见网络配置参考。
8.为此集群创建密钥环、并生成监视器密钥。 ceph
-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
9.生成管理员密钥环,生成 client.admin 用户并加入密钥环。 ceph
-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow'
10.把 client.admin 密钥加入 ceph.mon.keyring 。 ceph
-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
11.用规划好的主机名、对应 IP 地址、和 FSID 生成一个监视器图,并保存为
/tmp/monmap 。 monmaptool --create --add {hostname} {ip-address} --fsid {uuid} /tmp/monmap 例如: monmaptool --create --add node1 192.168.0.1 --fsid a7f64266-0894-4f1e-a635-d0aeaca0e993 /tmp/monmap
12.在监视器主机上分别创建数据目录。 sudo mkdir
/var/lib/ceph/mon/{cluster-name}-{hostname} 例如: sudo mkdir /var/lib/ceph/mon/ceph-node1 详情见监视器配置参考——数据。
13.用监视器图和密钥环组装守护进程所需的初始数据。 ceph
-mon [--cluster {cluster-name}] --mkfs -i {hostname} --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring 例如: ceph-mon --mkfs -i node1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring

 

14.仔细斟酌 Ceph 配置文件,公共的全局配置包括这些

 

[global]
fsid = {cluster-id}
mon initial members = {hostname}[, {hostname}]
mon host = {ip-address}[, {ip-address}]
public network = {network}[, {network}]
cluster network = {network}[, {network}]
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = {n}
filestore xattr use omap = true
osd pool default size = {n}  # Write an object n times.
osd pool default min size = {n} # Allow writing n copy in a degraded state.
osd pool default pg num = {n}
osd pool default pgp num = {n}
osd crush chooseleaf type = {n}

 

 

按前述实例, [global] 段的配置大致如下:

 

[global]
fsid = a7f64266-0894-4f1e-a635-d0aeaca0e993
mon initial members = node1
mon host = 192.168.0.1
public network = 192.168.0.0/24
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
filestore xattr use omap = true
osd pool default size = 2
osd pool default min size = 1
osd pool default pg num = 333
osd pool default pgp num = 333
osd crush chooseleaf type = 1

 

15.建一个空文件 done ,表示监视器已创建、可以启动了

sudo touch /var/lib/ceph/mon/ceph-node1/done

 

16.启动监视器

在 Debian/CentOS/RHEL 上用 sysvinit

sudo /etc/init.d/ceph start mon.node1

 

17.验证下 Ceph 已经创建了默认存储池。

ceph osd lspools

你应该会看到这样的输出:

0 data,1 metadata,2 rbd,

 

18.确认下集群在运行。

ceph -s

 

你应该从输出里看到刚刚启动的监视器在正常运行,并且应该会看到一个健康错误:它表明归置组卡在了 stuck inactive 状态。输出大致如此

 

cluster a7f64266-0894-4f1e-a635-d0aeaca0e993
  health HEALTH_ERR 192 pgs stuck inactive; 192 pgs stuck unclean; no osds
  monmap e1: 1 mons at {node1=192.168.0.1:6789/0}, election epoch 1, quorum 0 node1
  osdmap e1: 0 osds: 0 up, 0 in
  pgmap v2: 192 pgs, 3 pools, 0 bytes data, 0 objects
     0 kB used, 0 kB / 0 kB avail
     192 creating

 

注意: 一旦你添加了 OSD 并启动,归置组健康错误应该消失,详情见下一节。

 

添加 OSD

 

你的初始监视器可以正常运行后就可以添加 OSD 了。要想让集群达到 active + clean 状态,必须安装足够多的 OSD 来处理对象副本(如 osd pool default size = 2 需要至少 2 个 OSD )。在完成监视器自举引导后,集群就有了默认的 CRUSH 图,但现在此图还是空的,里面没有任何 OSD 映射到 Ceph 节点。

 

精简型

Ceph 软件包提供了 ceph-disk 工具,用于准备硬盘:可以是分区或用于 Ceph 的目录。 ceph-disk 可通过递增索引来创建 OSD ID ;还能把 OSD 加入 CRUSH 图。 ceph-disk 的详细用法可参考 ceph-disk -h ,此工具把后面将提到的精简型里面的步骤都自动化了。

为按照精简型创建前两个 OSD ,在 node2node3 上执行下列命令:

 

1.准备OSD

ssh {node-name}
sudo ceph-disk prepare --cluster {cluster-name} --cluster-uuid {uuid} --fs-type {ext4|xfs|btrfs} {data-path} [{journal-path}]

 

例如:

 

ssh node1
sudo ceph-disk prepare --cluster ceph --cluster-uuid a7f64266-0894-4f1e-a635-d0aeaca0e993 --fs-type ext4 /dev/hdd1

 

2.激活 OSD

 

sudo ceph-disk activate {data-path} [--activate-key {path}]

 

例如:

sudo ceph-disk activate /dev/hdd1

 

注: 如果你的 Ceph 节点上没有 /var/lib/ceph/bootstrap-osd/{cluster}.keyring ,那么应该外加 --activate-key 参数

 

 

细致型

要是不想借助任何辅助工具,可按下列步骤创建 OSD 、将之加入集群和 CRUSH 图。按下列详细步骤可在 node2node3 上增加前 2 个 OSD

 

1.登录到OSD主机。

 

ssh {node-name}

 

2.给 OSD 分配 UUID

uuidgen

 

3.创建 OSD 。如果没有指定 UUID ,将会在 OSD 首次启动时分配一个。下列命令执行完成后将输出 OSD 号,在后续步骤里还会用到这个号。

ceph osd create [{uuid} [{id}]]

 

4.在新 OSD 主机上创建默认目录。

 

ssh {new-osd-host}
sudo mkdir /var/lib/ceph/osd/{cluster-name}-{osd-number}

 

5.如果要把 OSD 装到非系统盘的独立硬盘上,先创建文件系统、然后挂载到刚创建的目录下:

 

ssh {new-osd-host}
sudo mkfs -t {fstype} /dev/{hdd}
sudo mount -o user_xattr /dev/{hdd} /var/lib/ceph/osd/{cluster-name}-{osd-number}

 

 

6.初始化 OSD 数据目录:

 

ssh {new-osd-host}
sudo ceph-osd -i {osd-num} --mkfs --mkkey --osd-uuid [{uuid}]

--mkkey 选项运行 ceph-osd 之前,此目录必须是空的;另外,如果集群名字不是默认值,还要给 ceph-osd 指定 --cluster 选项。

 

7.注册此 OSD 的密钥。路径内 ceph-{osd-num} 里的 ceph 其含义为 $cluster-$id ,如果你的集群名字不是 ceph ,请指定自己的集群名:

 

sudo ceph auth add osd.{osd-num} osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/{cluster-name}-{osd-num}/keyring

 

8.把此节点加入 CRUSH 图

 

ceph [--cluster {cluster-name}] osd crush add-bucket {hostname} host

 

例如:

ceph osd crush add-bucket node1 host

 

9.把此 Ceph 节点放入 default 根下。

 

ceph osd crush move node1 root=default

 

10.把此 OSD 加入 CRUSH 图之后,它就能接收数据了。你也可以反编译 CRUSH 图、把此 OSD 加入设备列表、对应主机作为桶加入(如果它还不在 CRUSH 图里)、然后此设备作为主机的一个条目、分配权重、重新编译、注入集群

 

ceph [--cluster {cluster-name}] osd crush add {id-or-name} {weight} [{bucket-type}={bucket-name} ...]

 

例如:

ceph osd crush add osd.0 1.0 host=node1

 

11.把 OSD 加入 Ceph 后, OSD 已经在配置里了。但它还没开始运行,这时处于 downin 状态,要启动进程才能收数据。

 

在 Debian/CentOS/RHEL 上用 sysvinit 启动:

sudo /etc/init.d/ceph start osd.{osd-num} [--cluster {cluster-name}]

 

例如:

sudo /etc/init.d/ceph start osd.0
sudo /etc/init.d/ceph start osd.1

 

要让守护进程开机自启,必须创建一个空文件:

sudo touch /var/lib/ceph/osd/{cluster-name}-{osd-num}/sysvinit

 

例如:

 

sudo touch /var/lib/ceph/osd/ceph-0/sysvinit
sudo touch /var/lib/ceph/osd/ceph-1/sysvinit

 

OSD 启动后,它应该处于 upin 状态。

 

总结

监视器和两个 OSD 开始正常运行后,你就可以通过下列命令观察归置组互联过程了:

 

ceph -w

 

执行下列命令查看 OSD树:

 

ceph osd tree

 

你应该会看到类似如下的输出:

# id    weight  type name       up/down reweight
-1      2       root default
-2      2               host node1
0       1                       osd.0   up      1
-3      1               host node2
1       1                       osd.1   up      1

 

 

四、升级软件

 

Ceph 的各个版本都可能有特定的步骤,升级前请参考与此版本相关的章节和发布说明文档,以确定有哪些特定于此版本的步骤

 

概述

 

你可以在 Ceph 集群在线且提供服务时升级守护进程!某些类型的守护进程依赖其他的,如 Ceph 元数据服务器和 Ceph 对象网关依赖于 Ceph 监视器和 OSD 守护进程,所以我们建议按以下顺序升级:

ceph-deploy 工具
Ceph 监视器
Ceph OSD 守护进程
Ceph 元数据服务器
Ceph 对象网关

 

作为普适规则,我们建议一次升级一类的所有守护进程(如所有 ceph-osd 、所有 ceph-mon 等),这样才能确保它们属于同一版本

 

升级过程相对简单,只要参照此版本特定的章节即可。基本过程有三个:

1.用 ceph-deploy 为各主机升级软件包(用 ceph-deploy install 命令),或者分别登录各主机手动升级。例如,升级监视器时, ceph-deploy 语法大致如此

 

ceph-deploy install --release {release-name} ceph-node1[ ceph-node2]
ceph-deploy install --release firefly mon1 mon2 mon3

 

注: ceph-deploy install 命令会把指定节点上的旧版本升级为你所指定的版本,没有 ceph-deploy upgrade 这样的升级命令。

 

2.登录各节点并重启各相关 Ceph 守护进程

3.确认集群健康状况

 

一旦升级完,就不能降级了

 

ceph-deploy 工具

升级 Ceph 守护进程前,应该先升级 ceph-deploy 工具。

sudo pip install -U ceph-deploy
或者:
sudo yum install ceph-deploy python-pushy

 

Cuttlefish 到 Dumpling

 

从 Cuttlefish (v0.61-v0.61.7) 开始可以滚动升级。但还有几点要特别注意:首先,你必须升级 ceph 这个命令行工具,因为它变动很大;其次,你必须把所有监视器升级到 Dumpling ,因为协议有变动

 

在 CentOS/Red Hat 发行版上可删除旧源

 

sudo rm /etc/yum.repos.d/ceph.repo

 

然后用下列内容创建个新仓库 ceph.repo

 

[ceph]
name=Ceph Packages and Backports $basearch
baseurl=http://download.ceph.com/rpm/el6/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

注意:

1.确保使用与自己发行版相匹配的 URL ,对应发行版请检查 http://download.ceph.com/rpm

2.如果你可以用 ceph-deploy 升级软件,那你只需要把仓库加到运行 cephceph-deploy 命令的客户端节点即可。

 

 

 

Dumpling 到 Emperor

 

Dumpling (v0.64) 可滚动升级

 

在 CentOS/Red Hat 发行版上可删除旧源

 

sudo rm /etc/yum.repos.d/ceph.repo

 

然后新增软件库 ceph.repo ,其内容如下,要用自己的发行版名字(如 el6rhel6 等等)替换 {disro}

[ceph]
name=Ceph Packages and Backports $basearch
baseurl=http://download.ceph.com/rpm-emperor/{distro}/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

 

注意:

确保使用与自己发行版相匹配的 URL ,对应发行版请检查 http://download.ceph.com/rpm 。
如果你可以用 ceph-deploy 升级软件,那你只需要把仓库加到运行 ceph 或 ceph-deploy 命令的客户端节点即可。

 

命令行工具

 

在 v0.65 中, ceph 命令行接口( CLI )工具变动很大;老的 CLI 不能与 Dumpling 通讯,也就是说,要用 ceph 命令访问 Ceph 存储集群的所有节点其 ceph-common 库必须升级。

确保你已安装最新版( v0.67 或更新)。如果还没有,你也许得卸载、清除相关依赖,然后重新安装

 

监视器

Dumpling (v0.67) 版本的 ceph-mon 守护进程与 v0.66 及更早版本相比,内部协议有所变更,也就是说它不能与 v0.66 或更老的版本通讯。大多数监视器升级完后,它们就能用新协议形成法定人数了,旧版监视器将被排斥在外,正因如此,我们建议要一次性升级所有监视器(或者较快的节奏),以最小化可能的当机时间。

 

混用版本的集群不要运行太长时间

 

Dumpling 到 Firefly

 

如果您的现有集群运行着低于 v0.67 Dumpling 的版本,请先升级到最新的 Dumpling 版,然后再升级到 v0.80 Firefly 版

 

监视器

Dumpling (v0.67) 版本的 ceph-mon 守护进程与 v0.66 及更早版本相比,内部协议有所变更,也就是说它不能与 v0.66 或更老的版本通讯。大多数监视器升级完后,它们就能用新协议形成法定人数了,旧版监视器将被排斥在外,正因如此,我们建议要一次性升级所有监视器(或者较快的节奏),以最小化可能的当机时间。

 

混用版本的集群不要运行太长时间

 

Ceph 配置文件变更

 

我们建议升级前先把下列配置加入 ceph.conf 配置文件的 [mon] 段下:

mon warn on legacy crush tunables = false

此配置可消除因用着老 CRUSH 归置法而引起的健康告警。虽说可以在全集群范围内重均衡已有数据,但我们不建议生产集群做,因为它涉及大量数据,而且重均衡会导致严重的性能降级。

 

命令行工具

 

在 V0.65 版中, ceph 命令行界面( CLI )工具有重大改变,老版的 CLI 不能用于 Firefly 。也就是说,在升级 Ceph 守护进程前,要用 ceph 命令访问存储集群的节点都必须升级 ceph-common 库。

 

在 CentOS/RHEL 上可用此命令:

sudo yum install ceph-common

 

确保你已安装最新版。如果还没有,你也许得卸载、清除相关依赖,然后重新安装

 

升级顺序

对于 CentOS/Red Hat 发行版,先删除旧版软件库

sudo rm /etc/yum.repos.d/ceph.repo

然后新增一个 ceph.repo 软件库条目,其内容如下,还有把 {distro} 替换为你的发行版名字(如 el6rhel6rhel7 等等)

 

[ceph]
name=Ceph Packages and Backports $basearch
baseurl=http://download.ceph.com/rpm-firefly/{distro}/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

 

按如下顺序升级守护进程:

 

监视器: 如果 ceph-mon 守护进程晚于 ceph-osd 守护进程启动,那么这些监视器就不能正确注册其能力,新功能也不可用,除非再次重启。
OSD
元数据服务器: 如果 ceph-mds 守护进程先被重启了,它只能先等着,直到所有 OSD 都升级完,它才能完全启动。
网关: 一起升级 radosgw 守护进程。多片上传功能有微小的行为变化,它会阻止由新版 radosgw 发起、却由旧版 radosgw 完成的多片上传请求

 

确保先升级完所有 Ceph 监视器、而且重启完毕,然后再升级并重启各OSD、各元数据服务器和网关。

 

 

Emperor 到 Firefly

 

如果您的现有集群运行着低于 v0.67 Dumpling 的版本,请先升级到最新的 Dumpling 版,然后再升级到 v0.80 Firefly 版。详细步骤请参考 Cuttlefish 到 DumplingFirefly 发布说明。若从 Emperor 之后的版本升级,请参考 Firefly 发布说明

 

Ceph 配置文件变更

我们建议升级前先把下列配置加入 ceph.conf 配置文件的 [mon] 段下:

 

mon warn on legacy crush tunables = false

 

此配置可消除因用着老 CRUSH 归置法而引起的健康告警。虽说可以在全集群范围内重均衡已有数据,但我们不建议生产集群做,因为它涉及大量数据,而且重均衡会导致严重的性能降级

 

升级顺序

对于 CentOS/Red Hat 发行版,先删除旧版软件库

 

sudo rm /etc/yum.repos.d/ceph.repo

 

然后新增一个 ceph.repo 软件库条目,其内容如下,还有把 {distro} 替换为你的发行版名字(如 el6rhel6rhel7 等等)

[ceph]
name=Ceph Packages and Backports $basearch
baseurl=http://download.ceph.com/rpm/{distro}/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

 

注意:

确保使用与自己发行版相匹配的 URL ,对应发行版请检查 http://download.ceph.com/rpm 。
如果你可以用 ceph-deploy 升级软件,那你只需要把仓库加到运行 ceph 或 ceph-deploy 命令的客户端节点即可。

 

按如下顺序升级守护进程:

 

监视器: 如果 ceph-mon 守护进程晚于 ceph-osd 守护进程启动,那么这些监视器就不能正确注册其能力,新功能也不可用,除非再次重启。
OSD
元数据服务器: 如果 ceph-mds 守护进程先被重启了,它只能先等着,直到所有 OSD 都升级完,它才能完全启动。
网关: 一起升级 radosgw 守护进程。多片上传功能有微小的行为变化,它会阻止由新版 radosgw 发起、却由旧版 radosgw 完成的多片上传请求。

 

 

升级过程

Ceph 的各版本可能有不同的步骤,所以升级前请参考此版本特定的升级步骤

 

 

升级监视器

要升级监视器,执行下列步骤:

1.升级各守护进程的二进制包

你可以用 ceph-deploy 一次升级所有监视器节点,如:

ceph-deploy install --release {release-name} ceph-node1[ ceph-node2]
ceph-deploy install --release hammer mon1 mon2 mon3

 

在 CentOS/Red Hat 主机上相应的命令如下:

 

ssh {mon-host}
sudo yum update && sudo yum install ceph

 

 

2.重启各监视器。CentOS/Red Hat/Debian 发行版的命令如下:

sudo /etc/init.d/ceph restart {mon-id}

ceph-deploy 部署的 CentOS/Red Hat 发行版,其监视器 ID 通常是 mon.{hostname}

 

3.确保各监视器都重回法定人数。

ceph mon stat

 

再次确认你完成了所有监视器的升级

 

升级单个 OSD

 

升级单个 OSD 守护进程的步骤如下:

1.升级 OSD 守护进程对应的软件包。

你可以用 ceph-deploy 一次升级所有 OSD 守护进程,如:

 

ceph-deploy install --release {release-name} ceph-node1[ ceph-node2]
ceph-deploy install --release hammer osd1 osd2 osd3

 

你也可以用包管理器挨个升级各节点。在 CentOS/Red Hat 主机上相应的命令如下:

ssh {osd-host}
sudo yum update && sudo yum install ceph

 

2.重启 OSD ,其中 N 是 OSD 号。对于CentOS/Red Hat/Debian 发行版,用:

sudo /etc/init.d/ceph restart N

 

3.确保升级后的 OSD 重新加入了集群:

ceph osd stat

再次确认所有 OSD 守护进程已升级完

 

 

 

升级单个元数据服务器

 

要升级单个 Ceph 元数据服务器,挨个执行下列步骤:

1.升级二进制包。你可以用 ceph-deploy 一次升级所有 MDS 节点,也可以在各节点用包管理器升级,如

ceph-deploy install --release {release-name} ceph-node1
ceph-deploy install --release hammer mds1

 

在 CentOS/Red Hat 主机上则是:

 

ssh {mon-host}
sudo yum update && sudo yum install ceph-mds

 

2.重启元数据服务器。在 CentOS/Red Hat/Debian 上用:

 

sudo /etc/init.d/ceph restart mds.{hostname}

ceph-deploy 部署的集群其 {hostname} 通常是所在主机的主机名。

 

3.确保元数据服务器已启动,且运行着:

ceph mds stat

 

monosd 目录需用 /var/lib/ceph 之下的默认子目录。

 

OSDs: 路径应该是 /var/lib/ceph/osd/ceph-$id
MON: 路径应该是 /var/lib/ceph/mon/ceph-$id

 

在这些目录下都应该有一个名为 keyring 的密钥环文件

 

转载于:https://www.cnblogs.com/zhongguiyao/p/7889903.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值