你好,游客 登录 注册 搜索
背景:
阅读新闻

实验环境Ceph 9.2.1部署笔记

[日期:2016-11-13] 来源:Linux社区  作者:watermelonbig [字体: ]

一、准备工作

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

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款