安装
概念简介
ceph-deploy
monitor
mgr
osd
一、准备工作
1.1 主机规划
准备四台主机
node0:ceph-deploy
node1:monitor、mgr
node2:osd,一个未格式化与未挂载的空白磁盘或分区
node3:osd,一个未格式化与未挂载的空白磁盘或分区
本文以root用户进行安装
1.2 系统配置
以下操作在每台主机上执行
1.2.1 关闭selinux
编辑文件/etc/selinux/config
,修改SELINUX=enforcing
这一行为SELINUX=disabled
。然后执行如下命令
$ setenforce 0
1.2.2 关闭防火墙
$ systemctl disable firewalld && systemctl stop firewalld
1.2.3 配置yum源
epel.repo
在/etc/yum.repos.d/
目录下创建文件epel.repo
,内容如下
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
enabled=1
gpgcheck=0
ceph.repo
在/etc/yum.repos.d/
目录下创建文件ceph.repo
,内容如下(这里我们安装luminous
版本的ceph)
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-luminous/el7/noarch
enabled=1
gpgcheck=0
1.2.4 配置终端权限
为了让ceph-deploy
节点能够SSH到各节点执行安装命令,执行命令visudo
,修改文件中Defaults requiretty
这一行为Defaults !requiretty
(若没有则不需要修改)
1.3 配置SSH无密登录
以下操作在ceph-deploy节点执行
1.3.1 设置主机名
在/etc/hosts
文件末尾添加如下内容
x.x.x.x node1
y.y.y.y node2
z.z.z.z node3
1.3.2 生成ssh-key
执行如下命令,遇到交互直接按Enter
$ ssh-keygen
1.3.3 拷贝key到各节点
$ ssh-copy-id node1
$ ssh-copy-id node2
$ ssh-copy-id node3
1.3.4 验证
验证从ceph-deploy节点上可以直接SSH到其他节点,无需输入密码
1.4 安装时钟同步服务
(略)
二、安装过程
以下操作都在ceph-deploy节点执行
2.1 安装ceph-deploy
$ yum -y install ceph-delpoy
2.2 创建目录
在执行ceph-deploy命令的过程中会在生成一些配置文件,创建一个目录,存放生成的配置文件
$ mkdir ceph-cluster
$ cd ceph-cluster
2.3 安装monitor
在node1
节点上安装monitor组件
$ ceph-deploy new node1
此时,会在./ceph-cluster
目录下生成三个文件:ceph.conf
、ceph-deploy-ceph.log
和ceph.mon.keyring
。其中ceph.conf
文件,内容如下:
[global]
fsid = d023a153-18b9-46d2-96bd-f1fe3017e127
mon_initial_members = node1
mon_host = x.x.x.x
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
如果主机有多个网卡,则在[global]
下手动添加public network
的信息,比如:
[global]
public network = x.x.x.x/24
...
2.4 安装ceph到各个节点
$ ceph-deploy install --release=luminous node1 node2 node3 node4
ceph-deploy install
会在节点上安装ceph
、ceph-radosgw
这两个rpm包,如果某个节点安装失败,可以手动去那个节点上执行命令安装:yum -y install ceph ceph-radosgw
2.5 生成密钥
$ ceph-deploy mon create-initial
该命令会在当前(./ceph-cluster
)目录下生成以下几个密钥文件
ceph.client.admin.keyring
ceph.bootstrap-mgr.keyring
ceph.bootstrap-osd.keyring
ceph.bootstrap-mds.keyring
ceph.bootstrap-rgw.keyring
ceph.bootstrap-rbd.keyring
2.6 分发配置文件与密钥
把配置文件和密钥拷贝到各节点上,这样从每个节点上都能执行ceph命令而不需要输入monitor的IP以及密钥
$ ceph-deploy admin node1 node2 node3
2.7 安装mgr
从luminous版本开始,一般都需要安装mgr
$ ceph-deploy mgr create node1
2.8 安装osd
前置条件:/dev/sdb
必须是一个未格式化与未挂载的空白磁盘或空白分区
$ ceph-deploy osd create node2 --data /dev/sdb
$ ceph-deploy osd create node3 --data /dev/sdb
注意:官方文档这一步的命令是ceph-deploy osd create node2:sdb
,但在实践中发现这个命令执行失败,这个坑要注意
三、检查集群状态
登录到monitor节点上,执行以下命令查看集群状态
$ ceph -s
四、清除操作
如果某个节点在安装过程中出错,可以执行以下的操作删掉Ceph以及清除数据,然后重新安装
$ ceph-deploy purge node_x
$ ceph-deploy purgedata node_x
FAQ
Q:执行yum -y install ceph-deploy
时提示No package ceph-deploy available
?
A:执行命令yum list ceph-deploy --show-duplicates | sort -r
会发现,在epel
与ceph
源中都有ceph-deploy
,所以yum不知道该安装哪一个
$ yum list ceph-deploy --show-duplicates | sort -r
ceph-deploy.noarch 2.0.1-0 ceph-noarch
ceph-deploy.noarch 2.0.0-0 ceph-noarch
ceph-deploy.noarch 1.5.25-1.el7 epel
解决方法:指定安装ceph
源中的2.0.1
版本即可,yum -y install ceph-deploy-2.0.1
Q:执行ceph-deploy new node0
时报如下的错?
ceph-deploy new node0
Traceback (most recent call last):
File "/usr/bin/ceph-deploy", line 18, in <module>
from ceph_deploy.cli import main
File "/usr/lib/python2.7/site-packages/ceph_deploy/cli.py", line 1, in <module>
import pkg_resources
ImportError: No module named pkg_resources
A:执行以下命令解决
curl https://bootstrap.pypa.io/ez_setup.py | python
Q:如果只有一个磁盘或分区,则在创建一个pool后执行rbd ls poolName
时会卡住?
A:这里因为pool的默认副本数为3,而只有一个osd,可以通过以下命令确认:
$ ceph osd pool ls detail
pool 1 'kube' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 8 pgp_num 8 last_change 9 owner 18446744073709551615 flags hashpspool stripe_width 0 application rbd
执行命令将pool的size设置为1
$ ceph osd pool set kube size 1
然后执行命令就不会卡住了,执行ceph -s
看到pool应该是active+clean
的状态
$ ceph -s
cluster:
id: b7fffb95-ef15-4247-a5d3-327c0bb80cfb
health: HEALTH_WARN
too few PGs per OSD (8 < min 30)
services:
mon: 1 daemons, quorum node0
mgr: node0(active)
osd: 1 osds: 1 up, 1 in
data:
pools: 1 pools, 8 pgs
objects: 0 objects, 0B
usage: 1.00GiB used, 8.99GiB / 10.0GiB avail
pgs: 8 active+clean
Q:在删除pool时,报错Error EPERM: pool deletion is disabled; you must first set the mon_allow_pool_delete config option to true before you can destroy a pool
?
A:修改monitor节点上的/etc/ceph/ceph.conf
文件,在尾部添加如下的内容
[mon]
mon allow pool delete = true
然后重启ceph-mon.target
服务
$ systemctl restart ceph-mon.target
Q:执行ceph -s
时提示application not enabled on 1 pool(s)
?
A:执行命令ceph osd pool application enable <pool> rbd
Reference
Last updated
Was this helpful?