1
2
3
4
5
6
7
作者:李晓辉

联系方式:

1. 微信:Lxh_Chat

2. 邮箱:939958092@qq.com

准备集群部署

cephadm 实用程序由两个主要组件组成:

  • cephadm

  • cephadm orchestrator

规划服务托管

所有集群服务现在都作为容器运行。容器化 Ceph 服务可在同一节点运行;这被称为colocation并置 Ceph 服务可以提高资源利用率,并保持服务之间的安全隔离。

以下守护进程可以和 OSD 守护进程并置:RADOSGW、MDS、RBD-mirror、MON、MGR、Grafana 和 NFS Ganesha。

节点之间的安全通讯

cephadm命令使用SSH协议与存储集群节点通信。集群SSH Key是在集群引导过程中创建的。应该将集群公钥复制到每个主机,集群公钥位于: /etc/ceph

部署新集群

部署新集群的步骤如下:

  • 在引导节点(集群中的第一个节点)主机上安装 cephadm-ansible 软件包。

  • 运行 cephadm 预检 playbook。此 playbook 将验证主机是否具备必要条件。

  • 使用 cephadm 引导集群。引导进程将完成以下任务:

    • 在引导节点上安装并启动 Ceph 监控器和 Ceph 管理器守护进程。

    • 创建 /etc/ceph` 目录。

    • 将集群 SSH 公钥的副本写入 /etc/ceph/ceph.pub,并将密钥添加到 /root/.ssh/authorized_keys 文件。

    • 将与新集群通信所需的最小配置文件写入 /etc/ceph/ceph.conf 文件。

    • 将 client.admin 管理机密密钥的副本写入 /etc/ceph/ceph.client.admin.keyring 文件。

    • 使用 prometheus 和 grafana 服务以及 node-exporter 和 alert-manager 等其他工具部署基础监控堆栈。

安装先决条件

在引导节点上安装cephadm-ansible

1
[root@serverc ~]# yum install cephadm-ansible -y

运行 cephadm-preflight.yaml playbook。此 playbook 将配置 Ceph 存储库,并为引导准备存储集群。除此之外,还会安装 podmanlvm2chronycephadm 等必备软件包。

inventory默认位置是/usr/share/cephadm-ansible/hosts,下面的例子展示了一个典型的inventory文件的结构:

1
2
3
4
5
6
[root@serverc ~]# cd /usr/share/cephadm-ansible/
[root@serverc cephadm-ansible]# cat hosts
clienta.lab.example.com
serverc.lab.example.com
serverd.lab.example.com
servere.lab.example.com

运行cephadm-preflight

对于⽣产环境,将 ceph_origin 设置为rhcs,以便为部署启⽤红帽存储⼯具存储库

1
[root@serverc cephadm-ansible]# ansible-playbook -i hosts cephadm-preflight.yml --extra-vars "ceph_origin="

引导集群

cephadm 引导进程在单个节点上创建由一个 Ceph 监控器、一个 Ceph 管理器和必要依赖项组成的小型存储集群

使用cephadm bootstrap引导新集群

1
2
3
4
5
6
7
[root@serverc ~]# cephadm bootstrap --mon-ip=MON_IP \
--registry-url=registry.redhat.io \
--registry-username=REGISTRY_USERNAME \
--registry-password=REGISTRY_PASSWORD \
--initial-dashboard-password=DASHBOARO_PASSWORO \
--dashboard-password-noupdate \
--allow-fqdn-hostname

使用服务规范文件

使用带有 --apply-spec 选项的 cephadm bootstrap 命令和服务规范文件来引导存储集群并配置额外的主机和守护进程。配置文件是一个 YAML 文件,其中包含待部署服务的服务类型、放置和指定节点。

以下是服务配置文件示例:

1
vim cluster.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
service_type: host
addr: 172.25.250.10
hostname: clienta.lab.example.com
---
service_type: host
addr: 172.25.250.12
hostname: serverc.lab.example.com
---
service_type: host
addr: 172.25.250.13
hostname: serverd.lab.example.com
---
service_type: host
addr: 172.25.250.14
hostname: servere.lab.example.com
---
service_type: mon
placement:
hosts:
- clienta.lab.example.com
- serverc.lab.example.com
- serverd.lab.example.com
- servere.lab.example.com
---
service_type: rgw
service_id: realm.zone
placement:
hosts:
- serverc.lab.example.com
- serverd.lab.example.com
---
service_type: mgr
placement:
hosts:
- clienta.lab.example.com
- serverc.lab.example.com
- serverd.lab.example.com
- servere.lab.example.com
---
service_type: osd
service_id: default_drive_group
placement:
host_pattern: 'server*'
data_devices:
paths:
- /dev/vdb
- /dev/vdc
- /dev/vdd
1
2
3
4
5
6
7
8
cephadm bootstrap --mon-ip=172.25.250.12 \
--apply-spec=cluster.yaml \
--initial-dashboard-password=redhat \
--dashboard-password-noupdate \
--allow-fqdn-hostname \
--registry-url=registry.lab.example.com \
--registry-username=registry \
--registry-password=redhat

运行结束后,会输出以下内容

1
2
3
4
5
Ceph Dashboard is now available at:

URL: https://serverc.lab.example.com:8443/
User: admin
Password: redhat

为集群节点打标签

添加标签有助于识别每个主机上运行的守护进程,从而简化集群管理任务。

除 _admin 标签外,标签都是自由格式,没有特殊含义

例如,下面的命令将_ admin标签应用到clienta主机,以指定为admin节点

1
2
3
4
5
6
[root@serverc ~]# ceph orch host ls
HOST ADDR LABELS STATUS
clienta.lab.example.com 172.25.250.10
serverc.lab.example.com 172.25.250.12
serverd.lab.example.com 172.25.250.13
servere.lab.example.com 172.25.250.14
1
2
3
4
5
6
7
8
[root@serverc ~]# ceph orch host label add clienta.lab.example.com _admin
Added label _admin to host clienta.lab.example.com
[root@serverc ~]# ceph orch host ls
HOST ADDR LABELS STATUS
clienta.lab.example.com 172.25.250.10 _admin
serverc.lab.example.com 172.25.250.12
serverd.lab.example.com 172.25.250.13
servere.lab.example.com 172.25.250.14

使用标签将集群守护进程部署到特定的主机

1
[root@serverc ~]# ceph orch apply prometheus --placement="label:prometheus"

设置Admin节点总结

配置admin节点的步骤如下:

  1. 将admin标签分配给节点

  2. 复制admin密钥到管理节点

  3. 复制ceph.conf文件到admin节点

1
2
3
4
5
6
[root@serverc ~]# cd /etc/ceph
[root@serverc ceph]# scp {ceph.client.admin.keyring,ceph.conf} \
> root@clienta:/etc/ceph/
Warning: Permanently added 'clienta' (ECDSA) to the list of known hosts.
ceph.client.admin.keyring 100% 63 43.4KB/s 00:00
ceph.conf 100% 177 197.3KB/s 00:00