实验环境Ceph 9.2.1部署笔记

来源:互联网 发布:淘宝旗舰店和京东自营 编辑:程序博客网 时间:2024/06/04 18: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为管理节点使用的管理子网地址。

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 $basearchbaseurl=http://download.ceph.com/rpm-infernalis/el7/$basearchenabled=1gpgcheck=1type=rpm-mdgpgkey=https://download.ceph.com/keys/release.ascpriority=1[Ceph-noarch]name=Ceph noarch packagesbaseurl=http://download.ceph.com/rpm-infernalis/el7/noarchenabled=1gpgcheck=1type=rpm-mdgpgkey=https://download.ceph.com/keys/release.ascpriority=1[ceph-source]name=Ceph source packagesbaseurl=http://download.ceph.com/rpm-infernalis/el7/SRPMSenabled=1gpgcheck=1type=rpm-mdgpgkey=https://download.ceph.com/keys/release.ascpriority=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/hosts10.0.2.5     ceph110.0.2.7     ceph210.0.2.8     ceph310.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 --permanentfirewall-cmd --zone=public --add-port=7480/tcp --permanentfirewall-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-clustercd my-cluster

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

$ceph-deploy new ceph{1,2,3}$ lsceph.conf  ceph.log  ceph.mon.keyring

我们可以通过修改ceph.conf来设置ceph的副本数量,比如我们设置副本数为2:
$vi  ceph.conf[global]fsid = c10f9ac8-6524-48ea-bb52-257936e42b35mon_initial_members = ceph1, ceph2, ceph3mon_host = 10.0.2.5,10.0.2.7,10.0.2.8auth_cluster_required = cephxauth_service_required = cephxauth_client_required = cephxfilestore_xattr_use_omap = trueosd 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$ lsceph.bootstrap-mds.keyring  ceph.bootstrap-rgw.keyring  ceph.conf  ceph.mon.keyringceph.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集群的健康状态:
$ cephceph> healthHEALTH_OKceph> 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+cleanceph> 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 treeID 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.000003 0.09270         osd.3       up  1.00000          1.00000-3 0.18539     host ceph2                                  1 0.09270         osd.1       up  1.00000          1.000004 0.09270         osd.4       up  1.00000          1.00000-4 0.18539     host ceph3                                  2 0.09270         osd.2       up  1.00000          1.000005 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


0 0
原创粉丝点击