centos7部署ceph集群
安装准备
配hosts,主机名不要带点
192.168.2.144 ceph 部署机器,最后也加了个osd
192.168.2.11 node01 monitor兼osd
192.168.2.12 node02 monitor兼osd
192.168.2.13 node03 monitor兼osd
免密,在cepht执行
ssh-keygen -f ~/.ssh/id_rsa
ssh-copy-id -i root@192.168.2.144
ssh-copy-id -i root@192.168.2.11
ssh-copy-id -i root@192.168.2.12
ssh-copy-id -i root@192.168.2.13
关闭firewalld、selinux
时间更新同步
安装 ceph
用ceph-deploy在管理节点上安装
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
mkdir -p ~/ceph-cluster && cd ~/ceph-cluster
yum install -y ceph-deploy
#在各个节点安装 ceph,ceph-deploy 会 SSH 登录到各 node 上去,依次执行安装 ceph 依赖的组件包
ceph-deploy install ceph node01 node02 node03 #或者在各节点上执行yum install -y ceph
创建ceph集群
ceph-deploy new node01 node02 node03 #建议是奇数
会生成以下几个文件:
[root@db ceph]# ls
ceph.conf ceph.log ceph.mon.keyring
#ceph.conf 为ceph配置文件
#ceph-deploy-ceph.log为ceph-deploy日志文件
#ceph.mon.keyring 为 ceph monitor 的密钥环
追加额外配置:
[root@db ceph]# vim ceph.conf
[global]
fsid = 1b9ecee2-3515-4090-973b-5642d0d3feef
mon_initial_members = node01, node02, node03
mon_host = 192.168.2.11,192.168.2.12,192.168.2.13
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
filestore_xattr_use_omap = true
rbd_default_features = 1 #部分操作系统kernel只支持layering,所以最好直接在配置文件指明创建rbd时默认支持的特性rbd_default_features = 1
mon clock drift allowed = 2 #由于ceph分布式对时钟的同步要求很高,可以将同步误差范围调大;
mon clock drift warn backoff = 30
osd pool default size = 3 #增加默认副本数为3
初始化 monitor 节点并收集所有密钥:
ceph-deploy mon create-initial
#若出现/etc/ceph/ceph.conf 已存在的错误,则需要执行ceph-deploy --overwrite-conf mon create-initial
执行完毕后,会在当前目录下生成一系列的密钥环(只有在安装 Hammer 或更高版时才会创建 bootstrap-rgw 密钥环):
[root@db ceph-cluster]# ll ~/ceph-cluster
total 412
-rw------- 1 root root 113 Jan 27 14:48 ceph.bootstrap-mds.keyring
-rw------- 1 root root 71 Jan 27 14:48 ceph.bootstrap-mgr.keyring
-rw------- 1 root root 113 Jan 27 14:48 ceph.bootstrap-osd.keyring
-rw------- 1 root root 113 Jan 27 14:48 ceph.bootstrap-rgw.keyring
-rw------- 1 root root 129 Jan 27 14:48 ceph.client.admin.keyring
-rw-r--r-- 1 root root 382 Jan 27 14:47 ceph.conf
-rw-r--r-- 1 root root 290059 Jan 27 14:48 ceph-deploy-ceph.log
-rw------- 1 root root 73 Jan 27 14:46 ceph.mon.keyring
查看集群状态,当前还没有osd,会显示错误状态
[root@node01 ~]# ceph -s
cluster 1b9ecee2-3515-4090-973b-5642d0d3feef
health HEALTH_ERR
no osds
monmap e1: 3 mons at {node01=192.168.2.11:6789/0,node02=192.168.2.12:6789/0,node03=192.168.2.13:6789/0}
election epoch 8, quorum 0,1,2 node01,node02,node03
osdmap e1: 0 osds: 0 up, 0 in
flags sortbitwise,require_jewel_osds
pgmap v2: 64 pgs, 1 pools, 0 bytes data, 0 objects
0 kB used, 0 kB / 0 kB avail
64 creating
若安装出问题,可以清除配置,重新安装:
#清理 Ceph 安装包:
ceph-deploy purge ceph node01 node02 node03
#清理配置:
ceph-deploy purgedata ceph node01 node02 node03
ceph-deploy forgetkeys
创建osd
OSD 是最终数据存储的地方,本例4个节点都提供osd,用的是目录而非整块硬盘
分别在ceph node01-03上执行:
mkdir -p /osd
umount -l /dev/mapper/centos-home
mount /dev/mapper/centos-home /osd
echo "/dev/mapper/centos-home /osd xfs defaults 0 0" >> /etc/fstab
chmod -R 777 /osd
激活 activate OSD
ceph-deploy 节点执行 prepare OSD 操作,目的是分别在各个 OSD 节点上创建一些后边激活 OSD 需要的信息。
准备:
ceph-deploy --overwrite-conf osd prepare ceph:/osd node01:/osd node02:/osd node03:/osd
激活:
ceph-deploy osd activate ceph:/osd node01:/osd node02:/osd node03:/osd
同步秘钥
通过 ceph-deploy admin 将配置文件和 admin 密钥同步到各个节点,以便在各个 Node 上使用 ceph 命令时,无需指定 monitor 地址和 ceph.client.admin.keyring 密钥。
ceph-deploy admin ceph node01 node02 node03
同时为了确保对 ceph.client.admin.keyring 有正确的操作权限,所以还需要增加权限设置,在所有节点执行:
chmod +r /etc/ceph/ceph.client.admin.keyring
健康状况:
[root@node01 ~]# ceph -s
cluster 1b9ecee2-3515-4090-973b-5642d0d3feef
health HEALTH_OK
monmap e1: 3 mons at {node01=192.168.2.11:6789/0,node02=192.168.2.12:6789/0,node03=192.168.2.13:6789/0}
election epoch 20, quorum 0,1,2 node01,node02,node03
osdmap e19: 4 osds: 4 up, 4 in
flags sortbitwise,require_jewel_osds
pgmap v31: 64 pgs, 1 pools, 0 bytes data, 0 objects
21106 MB used, 54920 MB / 76026 MB avail
64 active+clean
[root@node01 ~]# ceph health
HEALTH_OK
[root@node01 ~]# ceph osd tree
ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY
-1 0.07259 root default
-2 0.02159 host db
0 0.02159 osd.0 up 1.00000 1.00000
-3 0.01700 host node01
1 0.01700 osd.1 up 1.00000 1.00000
-4 0.01700 host node02
2 0.01700 osd.2 up 1.00000 1.00000
-5 0.01700 host node03
3 0.01700 osd.3 up 1.00000 1.00000
ceph会占用节点的6789端口
常用操作
- ceph reset
- ceph-deploy purge 节点1 节点2 ....
- ceph-deploy purgedata 节点1 节点2 ....
- ceph-deploy forgetkeys
常用命令
- rados lspools 查看池子
- ceph -s 或 ceph status 查看集群状态
- ceph -w 观察集群健康状态
- ceph quorum_status --format json-pretty 检查ceph monitor仲裁状态
- ceph df 检查集群使用情况
- ceph mon stat 检查monitor状态
- ceph osd stat 检查osd状态
- ceph pg stat 检查pg配置组状态
- ceph pg dump 列出PG
- ceph osd lspools 列出存储池
- ceph osd tree 检查osd的crush map
- ceph auth list 列出集群的认证密钥
- ceph 获取每个osd上pg的数量