安装准备

配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的数量

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code