阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

实验环境Ceph 9.2.1部署笔记

261次阅读
没有评论

共计 8208 个字符,预计需要花费 21 分钟才能阅读完成。

一、准备工作

1、环境说明

Ceph 分布式存储系统共部署 4 个节点(使用云主机),即 ceph1、ceph2、ceph3。系统均使用 CentOS7.1。
使用三个云主机作为 Ceph 节点,第 4 个主机作为 admin-node。每个节点上增加两个虚拟磁盘 vda 和 vdb 作为 OSD 存储磁盘,每个节点上安装 MON,前两个节点上安装 MDS。
Ceph 集群部署过程中,请保持各主机可以访问互联网下载 rpm 资源。部署完成后,可以切断 Ceph 子网的外网访问权限。
节点名称 IP 地址 部署进程 数据盘
ceph1
10.0.2.5
1MON+1MDS+2OSD /dev/vdb, /dev/vdc
ceph2
10.0.2.7
1MON+1MDS+2OSD /dev/vdb, /dev/vdc
ceph3
10.0.2.8
1MON+1RGW+2OSD
/dev/vdb, /dev/vdc
admin-node              10.0.2.16/192.168.10.16
注:192.168.10.16 为管理节点使用的管理子网地址。
实验环境 Ceph 9.2.1 部署笔记

2、Ceph deploy 管理节点部署

配置 admin-node 的 ceph 软件仓库镜像源:
yum install -y yum-utils && yum-config-manager --add-repo https://dl.Fedoraproject.org/pub/epel/7/x86_64/ 
&& yum install --nogpgcheck -y epel-release && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 
&& rm /etc/yum.repos.d/dl.fedoraproject.org*

创建一个 Ceph yum 源配置文件:
vi  /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=http://download.ceph.com/rpm-infernalis/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1

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

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

 

安装 ceph-deploy 工具:
yum update && yum install ceph-deploy

3、Ceph 节点部署环境准备

(1)在 4 个主机上均配置好 ntp 服务
yum -y install ntp ntpdate ntp-doc
设置好定时任务:
# crontab -l
*/5 * * * * /usr/sbin/ntpdate  s2m.time.edu.cn > /dev/null 2>&1
 
(2)在 4 个主机上设置主机名与 IP 地址映射关系
vi  /etc/hosts
10.0.2.5     ceph1
10.0.2.7     ceph2
10.0.2.8     ceph3
10.0.2.16     ceph-mgmt
 
(3)在 3 个 ceph 节点上创建一个普通管理帐号,并授权 sudo 权限
# useradd -d /home/dpadmin -m dpadmin
#echo "dpadmin ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/dpadmin
#chmod 0440 /etc/sudoers.d/dpadmin
 
(4)在管理节点上创建一个普通帐号(不使用 root,也不要授权 sudo 权限),用于管理 ceph 集群各 server 节点
建立该帐号对 ceph 集群内各存储节点的 ssh 免密码登录(对每个存储节点上有 sudo 权限的 dpadmin 用户)。
# useradd -d /home/dpadmin -m dpadmin
#su - dpadmin
$ssh-keygen
注:设置密钥密码为空
$ssh-copy-id  dpadmin@ceph1
$ssh-copy-id  dpadmin@ceph2
$ssh-copy-id  dpadmin@ceph3
 
(5)打开系统防火墙端口
Ceph Monitors 使用 tcp 端口 6789,Ceph OSDs 使用 tcp 端口 6800:7300,Ceph RGW 使用 tcp 端口 7480。
firewall-cmd --zone=public --add-port=6789/tcp --permanent
firewall-cmd --zone=public --add-port=7480/tcp --permanent
firewall-cmd --zone=public --add-port=6800:7300/tcp --permanent
 
关闭 selinux。
 
(6)设置 3 个存储节点上 requiretty 参数
在使用 ceph-deploy 进行部署时需要登录存储节点执行 sudo 权限的命令。这需要在每个存储节点上都允许 ceph 执行这样的系统配置。
#visudo   -- 修改如下
Defaults:ceph  !requiretty
 

二、创建 Ceph 存储集群

1、在管理节点上创建一个目录,用于保存集群的配置文件和密钥文件。

使用我们前面创建的普通帐号 dpadmin 执行:
mkdir my-cluster
cd my-cluster

2、开始创建新集群,生成集群使用的配置文件和密钥

$ceph-deploy new ceph{1,2,3}
$ ls
ceph.conf  ceph.log  ceph.mon.keyring
 
我们可以通过修改 ceph.conf 来设置 ceph 的副本数量,比如我们设置副本数为 2:
$vi  ceph.conf
[global]
fsid = c10f9ac8-6524-48ea-bb52-257936e42b35
mon_initial_members = ceph1, ceph2, ceph3
mon_host = 10.0.2.5,10.0.2.7,10.0.2.8
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
filestore_xattr_use_omap = true
osd pool default size = 2
 
如果有专用的存储外网和存储内网的划分,那也可以通过修改 ceph.conf 来定义存储外网的网段:
public network = {ip-address}/{netmask}

3、运行 ceph-deploy install  命令在各节点上安装 ceph 软件

在管理节点上使用 dpadminm 帐号:
$ceph-deploy install ceph1
因为从 ceph 官方源下载数据很慢,所以上面的安装操作在等待一定时间后管理节点就超时报错了。但此时,在存储节点上实际上仍然在运行 yum 下载安装包,所以可以把管理节点的报错放一边,等待存储节点的 yum 安装完成。验证方法是登录存储节点,当使用 ceph - v 可以得到正确的输出时,证明存储节点上的 ceph 软件包安装已经成功了。这时,再次从管理节点运行 ceph-deploy install ceph1。
使用同样的方法处理存储节点 2,3。
 
在管理节点上使用 root 帐号:
# ceph-deploy install ceph-mgmt
安装完成后,在存储节点上查看 ceph 的版本信息:
$ceph -v

4、初始化集群的监控服务并收集密钥文件

$cd my-cluster
$ceph-deploy mon create-initial
$ ls
ceph.bootstrap-mds.keyring  ceph.bootstrap-rgw.keyring  ceph.conf  ceph.mon.keyring
ceph.bootstrap-osd.keyring  ceph.client.admin.keyring   ceph.log

5、增加 OSDs

先要确认需要使用的数据磁盘没有做过任何分区初始化。否则就需要使用下面的方法对磁盘进行处理一下。
ceph-deploy disk zap {osd-server-name}:{disk-name}
ceph-deploy disk zap osdserver1:sdb
 
查看存储节点的磁盘信息:
$ceph-deploy disk list ceph1
$ceph-deploy disk list ceph2
$ceph-deploy disk list ceph3
需要能看到类似下面这样的输出信息:
[ceph1][DEBUG] /dev/vdb other, unknown
[ceph1][DEBUG] /dev/vdc other, unknown
 
关于怎么处理 OSD 进程的 journal 数据,有多种方法:不使用独立的 journal 分区或磁盘;使用独立的 journal 分区或磁盘。
在我们这个实验环境中,没有使用专门的 journal 分区或磁盘。
 
在管理节点上把 OSD 磁盘放入集群中并激活:
命令格式为 $ceph-deploy osd prepare {node-name}:{data-disk}[:{journal-disk}]
注:经实际验证,按官网文档先 prepare 再 activate 的操作步骤会报错“RuntimeError: Failed to execute command: ceph-disk -v activate –mark-init systemd –mount /dev/vdb”。这应该属于软件的一个 bug。而直接使用 create 命令(相当于 prepare+activate)则可以成功完成加入 OSD 磁盘并激活的任务。如果执行了上面的命令并遇到报错后,需要先清除存储节点的分区信息,然后将存储节点系统重启,最后从管理节点上使用 ceph-deploy disk list 命令查看存储节点的磁盘状态是否恢复的初始状态。
 
使用 create 命令在一个步骤中完成 OSD 磁盘的加入和激活:
$ceph-deploy osd  create ceph1:/dev/vdb  ceph2:/dev/vdb  ceph3:/dev/vdb
$ceph-deploy osd  create ceph1:/dev/vdc  ceph2:/dev/vdc  ceph3:/dev/vdc

6、将 配置文件和 Admin key 复制到各个节点

使用 dpadmin 用户:
$ceph-deploy admin   ceph{1,2,3}
使用 root 用户:
# cp ceph.client.admin.keyring  ceph.conf  /etc/ceph
#chmod +r /etc/ceph/ceph.client.admin.keyring
 
在所有存储节点上设置好密钥文��读权限:
sudo chmod +r /etc/ceph/ceph.client.admin.keyring

7、Ceph 集群的监控

查看 ceph 集群的健康状态:
$ ceph
ceph> health
HEALTH_OK

ceph> status
    cluster ef472f1b-8967-4041-826c-18bd31118a9a
     health HEALTH_OK
     monmap e1: 3 mons at {ceph1=10.0.2.5:6789/0,ceph2=10.0.2.7:6789/0,ceph3=10.0.2.8:6789/0}
            election epoch 4, quorum 0,1,2 ceph1,ceph2,ceph3
     osdmap e34: 6 osds: 6 up, 6 in
            flags sortbitwise
      pgmap v82: 64 pgs, 1 pools, 0 bytes data, 0 objects
            203 MB used, 569 GB / 569 GB avail
                  64 active+clean

ceph> quorum_status
{"election_epoch":4,"quorum":[0,1,2],"quorum_names":["ceph1","ceph2","ceph3"],"quorum_leader_name":"ceph1","monmap":{"epoch":1,"fsid":"ef472f1b-8967-4041-826c-18bd31118a9a","modified":"0.000000","created":"0.000000","mons":[{"rank":0,"name":"ceph1","addr":"10.0.2.5:6789\/0"},{"rank":1,"name":"ceph2","addr":"10.0.2.7:6789\/0"},{"rank":2,"name":"ceph3","addr":"10.0.2.8:6789\/0"}]}}

ceph> mon_status
{"name":"ceph2","rank":1,"state":"peon","election_epoch":4,"quorum":[0,1,2],"outside_quorum":[],"extra_probe_peers":["10.0.2.5:6789\/0","10.0.2.8:6789\/0"],"sync_provider":[],"monmap":{"epoch":1,"fsid":"ef472f1b-8967-4041-826c-18bd31118a9a","modified":"0.000000","created":"0.000000","mons":[{"rank":0,"name":"ceph1","addr":"10.0.2.5:6789\/0"},{"rank":1,"name":"ceph2","addr":"10.0.2.7:6789\/0"},{"rank":2,"name":"ceph3","addr":"10.0.2.8:6789\/0"}]}}

ceph> osd tree
ID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY
-1 0.55618 root default                                    
-2 0.18539     host ceph1                                  
0 0.09270         osd.0       up  1.00000          1.00000
3 0.09270         osd.3       up  1.00000          1.00000
-3 0.18539     host ceph2                                  
1 0.09270         osd.1       up  1.00000          1.00000
4 0.09270         osd.4       up  1.00000          1.00000
-4 0.18539     host ceph3                                  
2 0.09270         osd.2       up  1.00000          1.00000
5 0.09270         osd.5       up  1.00000          1.00000

 

如果需要使用更多的 OSDs 的管理功能,可以参考官网上 http://docs.ceph.com/docs/master/rados/operations/add-or-rm-osds/。
 
实时观察 ceph 集群工作状态的命令:$ceph -w
 
查看 ceph 存储集群的存储空间使用率:$ceph df
注:这个命令显示的 pools 使用情况,仅是逻辑意义上的一份数据占用的空间,而实际上 ceph 集群还会存储更多的副本、克隆和快照。
 
查看 ceph 集群状态:

$ceph status 或 $ceph -s
 
查看 OSD 服务的状态:
$ ceph osd stat
$ ceph osd dump
$ ceph osd tree
以上均是从不同角度,展示的 OSDs 的进程状态信息。
 
查看 MONITOR 状态:
$ceph mon stat
$ceph mon dump
$ceph quorum_status
 
查看 MDS 状态:
$ceph mds stat
$ceph mds dump
 
关于更高级的 ceph 集群监控功能,例如 PLACEMENT GROUP 状态和怎样使用 ADMIN SOCKET,参见 http://docs.ceph.com/docs/master/rados/operations/monitoring/。

8、创建 METADATA SERVER

$ceph-deploy mds create ceph1 ceph2

9、创建 RGW 服务实例

创建 Ceph 对象服务网关,用于提供对象存取服务。
$ ceph-deploy rgw create ceph3
注:RGW 实例使用 7480 端口,确认已经打开。
 
以上就是部署一个全服务类型的 Ceph 存储集群所需的全部工作。
 

三、在客户机上使用 Ceph RBD 块存储服务

1、测试机的环境准备

找一个测试主机,安装 CentOS7.1 系统,按照本文第一章节介绍内容对系统环境进行配置。

2、安装 ceph 软件

从管理节点运行命令,为测试机安装 ceph 软件:
$ceph-deploy install ceph-client

3、拷贝配置文件到测试机

$ceph-deploy admin ceph-client
在测试机上执行以下命令,确保密钥文件可读:
$sudo chmod +r /etc/ceph/ceph.client.admin.keyring

4、在测试机上创建一个块设备映像

$rbd create foo –size 4096 [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring]

5、在测试机上把块设备映像映射到一个块设备上去

$sudo rbd map foo –name client.admin [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring]

6、创建文件系统

$sudo mkfs.ext4 -m0 /dev/rbd/rbd/foo

7、挂载并测试块存储设备

$sudo mkdir /mnt/ceph-block-device
$sudo mount /dev/rbd/rbd/foo /mnt/ceph-block-device
$cd /mnt/ceph-block-device

在 CentOS 7.1 上安装分布式存储系统 Ceph  http://www.linuxidc.com/Linux/2015-08/120990.htm

Ceph 环境配置文档 PDF http://www.linuxidc.com/Linux/2013-05/85212.htm 

CentOS 6.3 上部署 Ceph http://www.linuxidc.com/Linux/2013-05/85213.htm 

Ceph 的安装过程 http://www.linuxidc.com/Linux/2013-05/85210.htm 

HOWTO Install Ceph On FC12, FC 上安装 Ceph 分布式文件系统 http://www.linuxidc.com/Linux/2013-05/85209.htm 

Ceph 文件系统安装 http://www.linuxidc.com/Linux/2013-05/85208.htm 

CentOS 6.2 64 位上安装 Ceph 0.47.2 http://www.linuxidc.com/Linux/2013-05/85206.htm 

Ubuntu 12.04 Ceph 分布式文件系统 http://www.linuxidc.com/Linux/2013-04/82588.htm 

Ubuntu 16.04 快速安装 Ceph 集群  http://www.linuxidc.com/Linux/2016-09/135261.htm

Ceph 的详细介绍 :请点这里
Ceph 的下载地址 :请点这里

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-11/137094.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计8208字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中