3.4. 节点部署前的要求
在安装 Red Hat Ceph Storage 集群前,请执行以下步骤来满足所有需要的要求。
将所有节点注册到 Red Hat Network 或 Red Hat Satellite 中,并订阅到有效的池:
subscription-manager register subscription-manager subscribe --pool=8a8XXXXXX9e0
为以下软件仓库启用 Ceph 集群中的所有节点的访问权限:
-
rhel-8-for-x86_64-baseos-rpms
rhel-8-for-x86_64-appstream-rpms
subscription-manager repos --disable="*" --enable="rhel-8-for-x86_64-baseos-rpms" --enable="rhel-8-for-x86_64-appstream-rpms"
-
如果需要,将操作系统 RPM 更新至最新版本并重新引导:
dnf update -y reboot
从集群中选择节点作为 bootstrap 节点。
ceph1
是本例中的 bootstrap 节点。仅在 bootstrap 节点
ceph1
上,启用ansible-2.9-for-rhel-8-x86_64-rpms
和rhceph-5-tools-for-rhel-8-x86_64-rpms
存储库:subscription-manager repos --enable="ansible-2.9-for-rhel-8-x86_64-rpms" --enable="rhceph-5-tools-for-rhel-8-x86_64-rpms"
在所有主机中使用裸机/短主机名配置
主机名
。hostnamectl set-hostname <short_name>
使用 cephadm 验证用于部署红帽 Ceph 存储的主机名配置。
$ hostname
输出示例:
ceph1
使用 DNS 域名设置 DOMAIN 变量,修改 /etc/hosts 文件并将 fqdn 条目添加到 127.0.0.1 IP。
DOMAIN="example.domain.com" cat <<EOF >/etc/hosts 127.0.0.1 $(hostname).${DOMAIN} $(hostname) localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 $(hostname).${DOMAIN} $(hostname) localhost6 localhost6.localdomain6 EOF
使用
hostname -f
选项通过fqdn
检查长主机名。$ hostname -f
输出示例:
ceph1.example.domain.com
注: 要了解更多有关需要这些更改的信息,请参阅完全限定域名和裸机主机名。
在 bootstrap 节点上执行以下步骤。在我们的示例中,bootstrap 节点为
ceph1
。安装
cephadm-ansible
RPM 软件包:$ sudo dnf install -y cephadm-ansible
重要要运行 ansible playbook,您必须有
ssh
免密码访问配置 Red Hat Ceph Storage 集群的所有节点。确保配置的用户(如deployment-user
)具有可调用sudo
命令的 root 特权,而无需输入密码。要使用自定义密钥,请配置所选用户(如
deployment-user
)ssh 配置文件以指定将用于通过 ssh 连接到节点的 id/key:cat <<EOF > ~/.ssh/config Host ceph* User deployment-user IdentityFile ~/.ssh/ceph.pem EOF
构建 ansible 清单
cat <<EOF > /usr/share/cephadm-ansible/inventory ceph1 ceph2 ceph3 ceph4 ceph5 ceph6 ceph7 [admin] ceph1 EOF
注意作为清单文件的 [admin] 组配置的主机将
cephadm
将标记为_admin
,因此它们会在 bootstrap 过程中收到 admin ceph 密钥环。在运行 pre-flight playbook 前,验证
ansible
是否可以使用 ping 模块访问所有节点。$ ansible -i /usr/share/cephadm-ansible/inventory -m ping all -b
输出示例:
ceph6 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": false, "ping": "pong" } ceph4 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": false, "ping": "pong" } ceph3 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": false, "ping": "pong" } ceph2 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": false, "ping": "pong" } ceph5 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": false, "ping": "pong" } ceph1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": false, "ping": "pong" } ceph7 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": false, "ping": "pong" }
运行以下 ansible playbook。
$ ansible-playbook -i /usr/share/cephadm-ansible/inventory /usr/share/cephadm-ansible/cephadm-preflight.yml --extra-vars "ceph_origin=rhcs"
preflight playbook Ansible playbook 配置 Red Hat Ceph Storage
dnf
存储库,并准备存储集群以进行引导。它还安装 podman、lvm2、chronyd 和 cephadm。cephadm-ansible
和cephadm-preflight.yml
的默认位置为/usr/share/cephadm-ansible
。