Ceph 部署(Centos7 + Luminous)

0. 环境

主机名 IP 安装组件
ceph-1 192.168.16.4 ceph-deploy & mon & mgr & osd & ntp
ceph-2 192.168.16.5 mon & mgr & osd & ntp
ceph-3 192.168.16.6 mon & mgr & osd & ntp

3台CentOS 7(Release: 7.2.1511),每台3个50G磁盘(其中2个用于osd,1个用于存放日志等信息)
ceph版本:ceph-luminous 12.2.5
配置详情如下:

主机名 IP 安装组件
ceph-1 192.168.16.4 ceph-deploy & mon & mgr & osd & ntp
ceph-2 192.168.16.5 mon & mgr & osd & ntp
ceph-3 192.168.16.6 mon & mgr & osd & ntp

1. 准备

1.1 更改主机名

修改每台主机的主机名,执行命令

[root@xxxx ~]# hostnamectl set-hostname [hostname]

这里hostname就是ceph-1, ceph-2, ceph-3
注:执行后其实已经生效,此终端左侧xxxx还没有显示主机名,新开一个终端即可看到

1.2 修改域名解析文件

在每台主机执行vim /etc/hosts命令,添加如下内容至此文件:
192.168.16.4 ceph-1
192.168.16.5 ceph-2
192.168.16.6 ceph-3

1.3 关闭selinux

在每台主机下执行:
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0

1.4 在主节点配置无密码访问

在节点ceph-1执行

[root@ceph-1 ~]# ssh-keygen -t rsa

一路回车即可
之后,执行

[root@ceph-1 ~]# ssh-copy-id root@ceph-2
[root@ceph-1 ~]# ssh-copy-id root@ceph-3

1.5 配置yum源

1.5.1 配置基础yum源

在每个节点执行:

yum clean all
rm -rf /etc/yum.repos.d/*.repo
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
sed -i '/aliyuncs/d' /etc/yum.repos.d/CentOS-Base.repo
sed -i '/aliyuncs/d' /etc/yum.repos.d/epel.repo

1.5.2 配置ceph源

1.5.2.1 配置ceph非本地源

在每个节点执行:vim /etc/yum.repos.d/ceph.repo,并将以下内容放入ceph.repo

[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/
gpgcheck=0

1.5.2.2 配置ceph本地源

由于有的时候内网无法访问ceph的yum源,不得不搭建ceph 本地源。
插一个题外话:文章将采取模块化,将能拆分的部分尽量都拆分出去,形成单独一个文档,这样看起来方便,也符合微服务的思想。
ok,继续。。
在主节点(ceph-1)搭建ceph本地源,详细步骤可参见我的另一篇文章搭建ceph本地源
其他节点执行vim /etc/yum.repos.d/ceph.repo,并将以下内容放入ceph.repo

[ceph]
name=ceph
baseurl=http://192.168.16.4/ceph/12.2.5#换成你自己的ip
gpgcheck=0

1.5.3 缓存包信息

[root@ceph-1 ~]# yum makecache

1.6 配置ntp

参加另一篇文章ntp搭建与部署

2. 安装Ceph

2.1 安装ceph

在每个节点执行

[root@ceph-1 ~]# yum install ceph -y
[root@ceph-1 ~]# ceph -v
ceph version 12.2.5 (cad919881333ac92274171586c827e01f554a70a) luminous (stable)

2.2 安装ceph-deploy

在主节点执行

[root@ceph-1 ~]# yum install ceph-deploy -y
[root@ceph-1 ~]# ceph-deploy --version
2.0.0

2.3 部署ceph 集群并部署mon

创建部署目录

[root@ceph-1 ~]# mkdir cluster
[root@ceph-1 ~]# cd cluster/
[root@ceph-1 cluster]# ceph-deploy new ceph-1 ceph-2 ceph-3

说明:在三个节点都部署mon
ok,继续。。
文件夹下会产生多个文件,先不管,仅先修改ceph.conf,添加如下内容至ceph.conf

public_network=192.168.16.0/24

执行

[root@ceph-1 cluster]# ceph-deploy mon create-initial

此时执行ceph -s会出错,是由于缺少/etc/ceph/ceph.client.admin.keyring文件
执行

[root@ceph-1 cluster]# ceph-deploy admin ceph-1 ceph-2 ceph-3

此时执行ceph -s 已正常
说明:早版本的ceph会默认有一个rbd的pool,目前已经没有了,pool是空的,需要自己新建

2.4 创建osd

首先看一下块设备信息:

[root@ceph-1 ~]# lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  40G  0 disk 
└─vda1 253:1    0  40G  0 part /
vdb    253:16   0  50G  0 disk 
vdc    253:32   0  50G  0 disk 
vdd    253:48   0  50G  0 disk 

vdb&vdc用于osd,vdd我们将他分成4个区用于bluestore的db和wal,一会可以看到。
注意:老版本的ceph-deploy --overwrite-conf osd prepare/activate 已过期了,我们使用ceph-deploy osd create,注意这里有好多坑,来,开始:

2.4.1 zap disk

首先销毁磁盘分区信息,执行

[root@ceph-1 cluster]# ceph-deploy disk zap ceph-1 /dev/vdb
...
[ceph_deploy][ERROR ] Traceback (most recent call last):
[ceph_deploy][ERROR ]   File "/usr/lib/python2.7/site-packages/ceph_deploy/util/decorators.py", line 69, in newfunc
[ceph_deploy][ERROR ]     return f(*a, **kw)
[ceph_deploy][ERROR ]   File "/usr/lib/python2.7/site-packages/ceph_deploy/cli.py", line 164, in _main
[ceph_deploy][ERROR ]     return args.func(args)
[ceph_deploy][ERROR ]   File "/usr/lib/python2.7/site-packages/ceph_deploy/osd.py", line 438, in disk
[ceph_deploy][ERROR ]     disk_zap(args)
[ceph_deploy][ERROR ]   File "/usr/lib/python2.7/site-packages/ceph_deploy/osd.py", line 336, in disk_zap
[ceph_deploy][ERROR ]     if args.debug:
[ceph_deploy][ERROR ] AttributeError: 'Namespace' object has no attribute 'debug'

这里会报错,原因就是ceph-deploy所使用的osd.py有bug,缺少debug参数,有两种方法可以解决:

  1. 参照这个大神http://www.yangguanjun.com/2018/04/06/ceph-deploy-latest-luminous/
  2. 参照http://tracker.ceph.com/issues/22871
    总之,都是修改了osd.py

其实不运行ceph-deploy disk zap也可以,我们仔细看log可以发现他其实使用的是ceph-volume lvm zap,于是我们直接执行

[root@ceph-1 cluster]# ceph-volume lvm zap /dev/vdb

这样就不需要修改osd.py了,搞定,继续下一步

2.4.2 为vdd分区

这个通过fdisk就可以了

[root@ceph-1 ~]# fdisk /dev/vdd
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): m
Command action
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   w   write table to disk and exit

Command (m for help): g
Building a new GPT disklabel (GUID: 3444119B-FBDF-4E5B-BA72-59F2FBB305B3)


Command (m for help): n
Partition number (1-128, default 1): 
First sector (2048-104857566, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-104857566, default 104857566): +10G
Created partition 1


Command (m for help): n
Partition number (2-128, default 2): 
First sector (20973568-104857566, default 20973568): 
Last sector, +sectors or +size{K,M,G,T,P} (20973568-104857566, default 104857566): +10G
Created partition 2


Command (m for help): n
Partition number (3-128, default 3): 
First sector (41945088-104857566, default 41945088): 
Last sector, +sectors or +size{K,M,G,T,P} (41945088-104857566, default 104857566): +10G
Created partition 3


Command (m for help): n
Partition number (4-128, default 4): 
First sector (62916608-104857566, default 62916608): 
Last sector, +sectors or +size{K,M,G,T,P} (62916608-104857566, default 104857566): +10G
Created partition 4


Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@ceph-1 ~]# lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  40G  0 disk 
└─vda1 253:1    0  40G  0 part /
vdb    253:16   0  50G  0 disk 
vdc    253:32   0  50G  0 disk 
vdd    253:48   0  50G  0 disk 
├─vdd1 253:49   0  10G  0 part 
├─vdd2 253:50   0  10G  0 part 
├─vdd3 253:51   0  10G  0 part 
└─vdd4 253:52   0  10G  0 part 

如果发现分区未更新,执行命令

[root@ceph-1 ~]# partprobe

然后在执行lsblk

2.4.3 创建osd

[root@ceph-1 cluster]# ceph-deploy osd create ceph-1 --bluestore --data /dev/vdb --block-db /dev/vdd1 --block-wal /dev/vdd2
[root@ceph-1 cluster]# ceph-deploy osd create ceph-1 --bluestore --data /dev/vdc --block-db /dev/vdd3 --block-wal /dev/vdd4
[root@ceph-1 cluster]# ceph-deploy osd create ceph-2 --bluestore --data /dev/vdb --block-db /dev/vdd1 --block-wal /dev/vdd2
[root@ceph-1 cluster]# ceph-deploy osd create ceph-2 --bluestore --data /dev/vdc --block-db /dev/vdd3 --block-wal /dev/vdd4
[root@ceph-1 cluster]# ceph-deploy osd create ceph-3 --bluestore --data /dev/vdb --block-db /dev/vdd1 --block-wal /dev/vdd2
[root@ceph-1 cluster]# ceph-deploy osd create ceph-3 --bluestore --data /dev/vdc --block-db /dev/vdd3 --block-wal /dev/vdd4

说明:通过仔细看log,也会发现这个其实调用的是ceph-volume lvm create命令,那么我们用这个命令代替ceph-deploy osd create可以么?
答案是看情况,如果不是第一次创建osd(即人工删除一个osd,再创建一个osd时),那么这个可以;如果是第一次创建osd,使用

ceph-volume lvm create --bluestore --data /dev/vdb --block.db /dev/vdd1 --block.wal /dev/vdd2

那么会报错

unable to find a keyring on /var/lib/ceph/bootstrap-osd/ceph.keyring: (2) No such file or directory

为什么呢?其实是因为ceph-deploy osd create会为我们创建ceph.keyring,并放入/var/lib/ceph/bootstrap-osd/下面。

注:db&wal最好用SSD,这样在数据读写时,特别是小数据时速度会快些,这里我用的是普通的磁盘vdd(假装他是SSD)

ok,废话说完,继续。。。

2.4.4 部署mgr

直接执行

[root@ceph-1 cluster]# ceph-deploy mgr create ceph-1 ceph-2 ceph-3

2.4.5 启动dashboard

[root@ceph-1 cluster]# ceph mgr module enable dashboard

浏览器访问:http://ip:7000/即可看到dashboard
注:ip为主mgr所在主机的ip
长这样:

Ceph 部署(Centos7 + Luminous)_第1张图片
屏幕快照 2018-06-22 下午3.27.08.png

References

  1. 徐小胖blog,http://xuxiaopang.com/2016/10/10/ceph-full-install-el7-jewel/,大家在这里还可以看到自定义的crush如何work
  2. ictfox flog, http://www.yangguanjun.com/2018/04/06/ceph-deploy-latest-luminous/
  3. ceph 官方文档,http://docs.ceph.com/docs/mimic/start/quick-ceph-deploy/

你可能感兴趣的:(Ceph 部署(Centos7 + Luminous))