ceph集群安装及扩缩节点
系统环境
ceph架构

系统配置
3台CentOS 7 server,除系统盘每台额外添加3块硬盘

规划
-
vms81 192.168.26.81 同时用作部署节点
-
vms82 192.168.26.82 同时用作删除节点实验
-
vms83 192.168.26.83 初始部署时不纳入ceph集群,用作扩容实验
安装部署
所有节点都需要安装的部分
修改hosts
[root@vms81 ceph-install]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.26.81 vms81.rhce.cc vms81
192.168.26.82 vms82.rhce.cc vms82
192.168.26.83 vms83.rhce.cc vms83
配置部署节点vms81免密登录所有节点
ssh-keygen -N ""
ssh-copy-id vms81
ssh-copy-id vms82
ssh-copy-id vms83
配置yum源
#清空原来自带配置文件:
cd /etc/yum.repos.d/
mkdir /tmp/bak
mv * /tmp/bak/
#配置系统源码,epel源:
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum install wget -y
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
安装软件包
yum install ceph.x86_64 ceph-base.x86_64 ceph-common.x86_64 ceph-deploy.noarch ceph-mds.x86_64 ceph-mon.x86_64 ceph-osd.x86_64 ceph-radosgw.x86_64 -y
创建集群,部署节点vms81上操作
创建一个目录用于存放部署 的配置文件等并进入该目录下
mkdir ceph-install
cd ceph-install
部署集群
ceph-deploy new vms81 vms82
会在当前目录生成ceph.conf,修改配置
[root@vms81 ceph-install]# cat ceph.conf
[global]
fsid = fd9ca7c9-912a-4805-834e-25ee9a43074d
#mon的初始化配置
mon_initial_members = vms81, vms82
mon_host = 192.168.26.81,192.168.26.82
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
#增加以下配置
public_network = 192.168.26.0/24
osd_pool_default_size = 1 #副本数
osd_pool_default_min_size = 1 #最小副本数
mon_osd_full_ratio = .85
#在这里我们单独加上 mon_osd_full_ratio = .85 的目的是,集群创建好之后健康状态是 err 的,为我们后面修改参数做准备用的。
创建mon
ceph-deploy mon create-initial #会依据ceph.conf的配置初始化mon
将配置文件和密钥分发到各节点
ceph-deploy admin vms81 vms82
创建osd
每个节点上都有三块新硬盘
fdisk -l
磁盘 /dev/sda:214.7 GB, 214748364800 字节,419430400 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0008febd
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 314574847 157286400 83 Linux
/dev/sda2 314574848 335546367 10485760 82 Linux swap / Solaris
磁盘 /dev/sdb:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sdc:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字 节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sdd:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
#语法:ceph-deploy osd create --data /dev/sdX 节点名
ceph-deploy osd create --data /dev/sdb vms81
ceph-deploy osd create --data /dev/sdc vms81
ceph-deploy osd create --data /dev/sdd vms81
ceph-deploy osd create --data /dev/sdb vms82
ceph-deploy osd create --data /dev/sdc vms82
ceph-deploy osd create --data /dev/sdd vms82
用脚本自动创建
for i in 81 82 ; do for n in b c d ; do ceph-deploy osd create --data /dev/sd$n vms$i;done;done
创建完成
查看集群
[root@vms81 ceph-install]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.17578 root default
-3 0.08789 host vms81
0 hdd 0.02930 osd.0 up 1.00000 1.00000
1 hdd 0.02930 osd.1 up 1.00000 1.00000
2 hdd 0.02930 osd.2 up 1.00000 1.00000
-5 0.08789 host vms82
3 hdd 0.02930 osd.3 up 1.00000 1.00000
4 hdd 0.02930 osd.4 up 1.00000 1.00000
5 hdd 0.02930 osd.5 up 1.00000 1.00000
扩容节点
在部署节点vms81上操作
创建 mon
ceph-deploy mon create vms83
创建 OSD
for n in b c d ; do ceph-deploy osd create --data /dev/sd$n vms83;done
把密钥同步过去
ceph-deploy admin vms83
删除节点
删除OSD
在对应节点上停止对应的OSD服务
systemctl status |grep osd
│ └─13133 grep --color=auto osd
├─system-ceph\x2dosd.slice
│ ├─ceph-osd@5.service
│ │ └─13023 /usr/bin/ceph-osd -f --cluster ceph --id 5 --setuser ceph --setgroup ceph
│ ├─ceph-osd@4.service
│ │ └─12578 /usr/bin/ceph-osd -f --cluster ceph --id 4 --setuser ceph --setgroup ceph
│ └─ceph-osd@3.service
│ └─12135 /usr/bin/ceph-osd -f --cluster ceph --id 3 --setuser ceph --setgroup ceph
systemctl stop ceph-osd@5.service
systemctl stop ceph-osd@4.service
systemctl stop ceph-osd@3.service
systemctl disable ceph-osd@5.service
systemctl disable ceph-osd@4.service
systemctl disable ceph-osd@3.service
在部署节点上,标记对应osd为out
目的是使这些 OSD 上面已经分配的 pg 迁移到其他的 OSD 上
[root@vms81 ceph-install]# ceph osd out osd.5
marked out osd.5.
[root@vms81 ceph-install]# ceph osd out osd.4
marked out osd.4.
[root@vms81 ceph-install]# ceph osd out osd.3
marked out osd.3.
[root@vms81 ceph-install]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.26367 root default
-3 0.08789 host vms81
0 hdd 0.02930 osd.0 up 1.00000 1.00000
1 hdd 0.02930 osd.1 up 1.00000 1.00000
2 hdd 0.02930 osd.2 up 1.00000 1.00000
-5 0.08789 host vms82
3 hdd 0.02930 osd.3 down 0 1.00000
4 hdd 0.02930 osd.4 down 0 1.00000
5 hdd 0.02930 osd.5 down 0 1.00000
-7 0.08789 host vms83
6 hdd 0.02930 osd.6 up 1.00000 1.00000
7 hdd 0.02930 osd.7 up 1.00000 1.00000
8 hdd 0.02930 osd.8 up 1.00000 1.00000
从 crush map 上删除这些 OSD
[root@vms81 ceph-install]# ceph osd crush remove osd.5
removed item id 5 name 'osd.5' from crush map
[root@vms81 ceph-install]# ceph osd crush remove osd.4
removed item id 4 name 'osd.4' from crush map
[root@vms81 ceph-install]# ceph osd crush remove osd.3
removed item id 3 name 'osd.3' from crush map
[root@vms81 ceph-install]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.17578 root default
-3 0.08789 host vms81
0 hdd 0.02930 osd.0 up 1.00000 1.00000
1 hdd 0.02930 osd.1 up 1.00000 1.00000
2 hdd 0.02930 osd.2 up 1.00000 1.00000
-5 0 host vms82
-7 0.08789 host vms83
6 hdd 0.02930 osd.6 up 1.00000 1.00000
7 hdd 0.02930 osd.7 up 1.00000 1.00000
8 hdd 0.02930 osd.8 up 1.00000 1.00000
3 0 osd.3 down 0 1.00000
4 0 osd.4 down 0 1.00000
5 0 osd.5 down 0 1.00000