标签(空测试用例格分隔):OpenStack Train 系列


一:环境初始化

1.1系统环境介绍

1. 系统主机名
cat /etc/hosts

---
# openstack
172.16.10.11 controller
172.16.10.12 compute01
172.16.10.13 compute02
#
# cpeh-public
172.16.10.14 ceph01
172.16.10.15 ceph02
172.16.10.16 ceph03
#
# ceph-cluster
20.16.10.14 ceph01-cluster
20.16.10.15 ceph02-cluster
20.16.10.16 ceph03-cluster
#
# yum

172.16.10.17 yum.ops
---
ceph网段为新增加的ceph_cluster的 网段 ceph的网段为20.16.10.x/24
保证ceph 网段都是能够与open stack 网段能够ping 通

2. 配置时间服务器为openstack 的控制节点controller

3. 配置ceph节点与openstack的controller的无密钥认证

以上步骤省略 可以参考openstack 环境初始化配置
以下步骤直接从ceph 集群开始部署

1.2 安装ceph集群

ceph与openstack的集成过程中,需要在 OpenStack 的 controller 节点和 compute 节点安装 Ceph 软件包,作为 Ceph 客户端。
如果已经制作离线 yum 源,则直接安装即可;如果要使用外部互联网 yum 源,需要设置 ceph 源(此处列出阿里云源),配置如下
ceph 的安装源:

[ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64
enabled=1
gpgcheck=0
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch
enabled=1
gpgcheck=0
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS
enabled=1
gpgcheck=0

-----------

[centos-ceph-nautilus]
name=CentOS-$releasever - Ceph Nautilus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=storage-ceph-nautilus
#baseurl=http://mirror.centos.org/$contentdir/$releasever/storage/$basearch/ceph-nautilus/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage

[centos-ceph-nautilus-test]
name=CentOS-$releasever - Ceph Nautilus Testing
baseurl=https://buildlogs.centos.org/centos/$releasever/storage/$basearch/ceph-nautilus/
gpgcheck=0
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage

[centos-ceph-nautilus-source]
name=CentOS-$releasever - Ceph Nautilus Source
baseurl=http://vault.centos.org/$contentdir/$releasever/storage/Source/ceph-nautilus/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage

在 controller、compute01、compute02 安装 ceph 软件包
# yum -y install ceph ceph-radosgw
在 ceph01 上这装 ceph-deploy
# yum -y install ceph-deploy ceph ceph-mds ceph-radosgw
/*
说明:ceph-deploy 是 ceph 软件定义存储系统的一部分,用来方便地配置和管理 Ceph 存储集群。
*/

在 ceph02、ceph03 上这装 ceph
# yum -y install ceph ceph-mds ceph-radosgw

1.3 初始化配置 mon

# 新建 Ceph 集群,并生成集群配置文件和密钥文件(在 ceph01 上执行)
# mkdir /etc/ceph-cluster && cd /etc/ceph-cluster
# ceph-deploy new ceph01 ceph02 ceph03
修改/etc/ceph-cluster/ceph.conf,继续添加如下内容:
[global]
auth_allow_insecure_global_id_reclaim = false
public_network = 172.16.10.0/24
cluster_network = 20.16.10.0/24

初始化 mon 节点(在 ceph01 上执行)
# cd /etc/ceph-cluster
# ceph-deploy mon create-initial
将 keyring 同步到各节点,以便其它节点可以执行 ceph 集群管理命令(在 ceph01 上执行)
# ceph-deploy --overwrite-conf admin ceph01 ceph02 ceph03 controller compute01 compute02
验证
# ceph -s
-----
cluster:
id: 121cd903-dee2-4ee4-88e1-48e79e625e04
health: HEALTH_WARN
mons are allowing insecure global_id reclaim

services:
mon: 3 daemons, quorum ceph01,ceph02,ceph03 (age 3m)
mgr: no daemons active
osd: 0 osds: 0 up, 0 in

data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs:
-----
/*
说明:如果提示:clock skew detected on mon.xxxx,则需要修改配置
mon_clock_drift_allowed = 1.0
*/

OpenStack Train(十一):ceph集群部署_cephOpenStack Train(十一):ceph集群部署_ceph_02OpenStack Train(十一):ceph集群部署_ceph_03

1.4 初始化配置 mgr

在 ceph01 节点上执行
# cd /etc/ceph-cluster
# ceph-deploy mgr create ceph01 ceph02 ceph03
ceph-mgr 进程是主备模式,同一时刻只有一个节点工作,其他节点处于 standby
验证 MGR 是否部署成功
# ceph -s
cluster:
id: 121cd903-dee2-4ee4-88e1-48e79e625e04
health: HEALTH_WARN
OSD count 0 < osd_pool_default_size 3
mons are allowing insecure global_id reclaim

services:
mon: 3 daemons, quorum ceph01,ceph02,ceph03 (age 8m)
mgr: ceph01(active, since 43s), standbys: ceph02, ceph03
osd: 0 osds: 0 up, 0 in

data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs:

OpenStack Train(十一):ceph集群部署_openstack_04OpenStack Train(十一):ceph集群部署_ceph_05

1.5 初始化配置ODS

划分用于 OSD 的日志分区和元数据分区,此处实验环境,故设置较小,按照规划每个节点有 3 个 OSD。
只需要在 ceph01 节点上完成如下命令执行即可
我这边是卷组的名字是centos [这个命名所有节点都执行]

lvcreate -L 5G -n lvwal01 centos
lvcreate -L 20G -n lvbdb01 centos
lvcreate -L 5G -n lvwal02 centos
lvcreate -L 20G -n lvbdb02 centos
lvcreate -L 5G -n lvwal03 centos
lvcreate -L 20G -n lvbdb03 centos


在ceph01 节点上面执行:
cd /etc/ceph-cluster/
ceph-deploy osd create ceph01 --data /dev/sdb --block-wal centos/lvwal01 --block-db centos/lvbdb01 --bluestore
ceph-deploy osd create ceph02 --data /dev/sdb --block-wal centos/lvwal01 --block-db centos/lvbdb01 --bluestore
ceph-deploy osd create ceph03 --data /dev/sdb --block-wal centos/lvwal01 --block-db centos/lvbdb01 --bluestore
ceph-deploy osd create ceph01 --data /dev/sdc --block-wal centos/lvwal02 --block-db centos/lvbdb02 --bluestore
ceph-deploy osd create ceph02 --data /dev/sdc --block-wal centos/lvwal02 --block-db centos/lvbdb02 --bluestore
ceph-deploy osd create ceph03 --data /dev/sdc --block-wal centos/lvwal02 --block-db centos/lvbdb02 --bluestore
ceph-deploy osd create ceph01 --data /dev/sdd --block-wal centos/lvwal03 --block-db centos/lvbdb03 --bluestore
ceph-deploy osd create ceph02 --data /dev/sdd --block-wal centos/lvwal03 --block-db centos/lvbdb03 --bluestore
ceph-deploy osd create ceph03 --data /dev/sdd --block-wal centos/lvwal03 --block-db centos/lvbdb03 --bluestore

OpenStack Train(十一):ceph集群部署_ceph_06OpenStack Train(十一):ceph集群部署_openstack_07OpenStack Train(十一):ceph集群部署_ceph_08

/*
生产环境 Wal 和 db 分区大小建议
按 4TB 一个 OSD,1TB 需要 40GB 的空间存放 DB,4TB 需要大于 160GB 的 SSD 存放 DB
SSD 空间足够时,单个 WAL 分区分 60GB、单个 DB 分区分 180GB。
如果 SSD 空间不够时,WAL 分区分 40GB、单个 DB 分区分 60GB
https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/4/html/administration_guide/osd-bluestore
*/

1.6 初始化 osd 异常处理

初始化 osd 失败时,按照删除 osd 逻辑进行处理(初始化异常时,仅需要从执行 g-h 两步) 
a、先确认好要删除的 osd,比如此处要删除 osd.0

[root@ceph01 ceph-cluster]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0 root default
-3 0 host ceph01
0 0 osd.0 down 0 1.00000
b、将 osd.0 踢出集群
[root@ceph01 ceph-cluster]# ceph osd out 0
c、待集群重新平衡后,停止对应的 osd 进程,需要在目标 osd 主机上执行
# systemctl stop ceph-osd@0
d、从 crush 中移除,然后再用 ceph osd tree 查看,会发现 osd.0 不在 osd tree 中了
[root@ceph01 ceph-cluster]# ceph osd crush remove osd.0
[root@ceph01 ceph-cluster]# ceph osd tree
e、删除节点以及节点认证信息
# ceph osd rm osd.0
# ceph auth del osd.0
f、此时删除成功但是原来的数据和日志目录还在,也就是说数据还在
# lsblk
# 删除对应分区(如果是 lvm,需要 lvremove 命令删除 vg)
需要将 lvm 状态改为 inactive
# lvchange -an /dev/ceph-a4a91457-db04-4afc-a938-b195a0c4a0c7/osd-block-8c82a7e1-5205-4472-a0f1-77f0d44485e0
使用 lvremove 移除对应 lv
# lvremove /dev/ceph-a4a91457-db04-4afc-a938-b195a0c4a0c7/osd-block-8c82a7e1-5205-4472-a0f1-77f0d44485e0
g、清除磁盘分区信息
# ceph-deploy disk zap ceph01 /dev/sdc
h、重新初始化 osd
# ceph-deploy osd create ceph01 --data /dev/sdc --block-wal centos/lvwal02 --block-db vg00/lvbdb02 --bluestore