前言
写的目的也是方便自己随时可以备忘参考用的。
部署前说明
主要是熟悉整个部署过程,所以这里用的单机(1MON + 2OSD + 1MDS)部署环境。
部署前准备
系统环境
[root@node1 tmpdir]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
配置hosts
将主机列表和ip写入到/etc/hosts当中,这个地方是用主机名与IP进行一一对应的
[root@node1 ~]# cat /etc/hosts
127.0.0.1 localhost
192.168.10.131 node1
准备磁盘
前面说了,我是准备部署2个osd(磁盘+文件journal的方式,这种方式也是常规方式,还有其他几种方式这里暂不说明),所以这里准备了两个硬盘/dev/sdb和/dev/sdc
[root@node1 deployceph]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19.5G 0 part
├─centos-root 253:0 0 37.5G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part
└─centos-root 253:0 0 37.5G 0 lvm /
sdc 8:32 0 20G 0 disk
└─sdc1 8:33 0 20G 0 part
sdd 8:48 0 20G 0 disk
└─sdd1 8:49 0 20G 0 part
sr0 11:0 1 4G 0 rom
关闭防火墙和SELINUX
主要是为了提高性能,selinux和防火墙的开启会影响ceph性能,所以一般会选择关闭防火墙和selinux。
关闭防火墙
[root@node1 ~]# service firewalld stop
关闭防火墙自启动
[root@node1 ~]# chkconfig firewalld off
关闭selinux
[root@node1 ~]# setenforce 0
关闭selinux的自启动
[root@node1 deployceph]# cat /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted
配置主机yum源
# 删除原有的yum源文件
[root@node1 ~]# rm -rf /etc/yum.repos.d/*.repo
# 下载aliyun的base源
[root@node1 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 下载aliyun的epel源
[root@node1 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# 手动添加ceph的源
[root@node1 ~]# vim /etc/yum.repos.d/ceph.repo
[ceph]
name=ceph
baseurl=http://download.ceph.com/rpm-hammer/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=http://download.ceph.com/rpm-hammer/el7/noarch/
gpgcheck=0
[libuuwind]
name=uuwind
baseurl=http://mirrors.aliyun.com/centos/7.1.1503/cloud/x86_64/openstack-kilo/
gpgcheck=0
# 或者下面这个是欧洲的源,可能会快一些
[ceph]
name=ceph
baseurl=http://eu.ceph.com/rpm-hammer/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=http://eu.ceph.com/rpm-hammer/el7/noarch/
gpgcheck=0
安装CEPH相关软件包
yum安装ceph包
[root@node1 ~]# yum install ceph ceph-deploy ceph-radosgw ntp
开始部署集群
我们使用的是ceph-deploy工具来部署集群的,首先我们创建一个部署目录/root/deployceph,之后的操作都在这个目录下面进行。
部署MON
初始化配置
[root@node1 deployceph]# ceph-deploy new node1
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO ] Invoked (1.5.36): /usr/bin/ceph-deploy new node1
[ceph_deploy.cli][INFO ] ceph-deploy options:
# 省略了一些输出
···
[ceph_deploy.new][DEBUG ] Creating a random mon key...
[ceph_deploy.new][DEBUG ] Writing monitor keyring to ceph.mon.keyring...
[ceph_deploy.new][DEBUG ] Writing initial config to ceph.conf...
这个操作是初始化配置文件,生成一个集群最初始版本的配置文件,可以查看下生成了哪些文件
[root@node1 deployceph]# ll
total 12
-rw-r--r-- 1 root root 197 Jun 6 15:48 ceph.conf
-rw-r--r-- 1 root root 2911 Jun 6 15:48 ceph-deploy-ceph.log
-rw------- 1 root root 73 Jun 6 15:48 ceph.mon.keyring
上面的三个配置文件,ceph.mon.keyring是mon的初始的keyring文件,ceph.log是deploy的日志记录文件,ceph.conf是集群的配置文件
这里面是会生成的必须的几个文件,如果你的集群需要定制一些特殊的要求,那么在做后面操作之前,就要在这里修改好了,这里面常用的参数有
[root@node1 deployceph]# vim ceph.conf
# 在原有配置基础上加入以下配置
osd_pool_default_size = 2
osd_pool_default_min_size=1
osd_crush_chooseleaf_type = 0 # 因为我是单机测试,所以这里已osd方式分组
osd_journal_size = 5120
osd_crush_update_on_start = false
创建MON
[root@node1 deployceph]# ceph-deploy mon create node1
获取集群服务部署密钥
[root@node1 deployceph]# ceph-deploy gatherkeys node1
这一步如果报错:RuntimeError: Failed to connect any mon,解决办法是,将ceph.conf配置文件里面的认证打开,相关几个配置项改成下面的:
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
然后在重新部署集群(或者在开始部署集群的时候,不要关掉认证,认证默认是打开的,等部署完成之后再关掉认证
创建OSD服务
默认的格式化的参数
/usr/sbin/mkfs -t xfs -f -i size=2048
/usr/bin/mount -t xfs -o noatime,inode64
磁盘+文件journal:
[root@node1 deployceph]# parted -s /dev/sdb mklabel gpt
[root@node1 deployceph]# parted -s /dev/sdb mkpart parimary 1 100%
[root@node1 deployceph]# ceph-deploy --overwrite-conf osd prepare node1:/dev/sdb1
[root@node1 deployceph]# ceph-deploy --overwrite-conf osd activate node1:/dev/sdb1
修改配置文件添加(设备是osd几就添加几)
[osd.0]
host = node1
devs = /dev/sdb1
同步配置文件
[root@node1 deployceph]# ceph-deploy --overwrite-conf config push node1
创建osd的整体流程就是
- 根据需要修改deploy目录下配置文件(journal大小,文件系统方式)
- ceph osd prepare
- ceph osd activate
- 根据结果添加配置文件(增加这个osd节点的id信息)
- 同步配置文件(将当前部署目录的ceph.conf推送到/etc/ceph/ceph.conf)
注意需要在配置文件中加入以下配置项,否则会在重新启动osd的时候报No filesystem type defined!错误:
osd_mkfs_type = xfs
配置文件系统
这里只是简单配置下文件系统的使用方式,还有RBD和RGW的配置方式准备整理成文档
# 创建元数据池
[root@node1 deployceph]# ceph osd pool create metadata 64 64
# 创建数据池
[root@node1 deployceph]# ceph osd pool create data 64 64
# 创建mds服务
[root@node1 deployceph]# ceph-deploy mds create node1
# 创建文件系统
[root@node1 deployceph]# ceph fs new ceph metadata data
# 挂载文件系统
[root@node1 deployceph]# mount -t ceph 192.168.0.22:/ /mnt
好了,以上就是搭建集群的步骤,还是蛮简答的,不涉及到任何优化。