Ceph存储系列(二) Ceph存储集群部署实战
1 | 作者:李晓辉 |
准备集群部署
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 存储库,并为引导准备存储集群。除此之外,还会安装 podman
、lvm2
、chrony
、cephadm
等必备软件包。
inventory默认位置是/usr/share/cephadm-ansible/hosts,下面的例子展示了一个典型的inventory文件的结构:
1 | [root@serverc ~]# cd /usr/share/cephadm-ansible/ |
运行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 | [root@serverc ~]# cephadm bootstrap --mon-ip=MON_IP \ |
使用服务规范文件
使用带有 --apply-spec
选项的 cephadm bootstrap
命令和服务规范文件来引导存储集群并配置额外的主机和守护进程。配置文件是一个 YAML 文件,其中包含待部署服务的服务类型、放置和指定节点。
以下是服务配置文件示例:
1 | vim cluster.yaml |
1 | service_type: host |
1 | cephadm bootstrap --mon-ip=172.25.250.12 \ |
运行结束后,会输出以下内容
1 | Ceph Dashboard is now available at: |
为集群节点打标签
添加标签有助于识别每个主机上运行的守护进程,从而简化集群管理任务。
除 _admin
标签外,标签都是自由格式,没有特殊含义
例如,下面的命令将_ admin标签应用到clienta主机,以指定为admin节点
1 | [root@serverc ~]# ceph orch host ls |
1 | [root@serverc ~]# ceph orch host label add clienta.lab.example.com _admin |
使用标签将集群守护进程部署到特定的主机
1 | [root@serverc ~]# ceph orch apply prometheus --placement="label:prometheus" |
设置Admin节点总结
配置admin节点的步骤如下:
将admin标签分配给节点
复制admin密钥到管理节点
复制ceph.conf文件到admin节点
1 | [root@serverc ~]# cd /etc/ceph |