部署CEPH集群前的准备工作
[图片来源 ceph.io]
作者:邢万里
文档说明
- 系统版本:CentOS-Stream-8-x86_64-20221125
- 内核版本:4.18.0-408
- podman 版本:4.2.0
- ceph 版本: Quincy
- 其他要求: git、LVM2、python3.6.8
- 客户端配置:
- ceph-clienta
- CPU: 2vCPU
- Memory: 4GiB
- Storage: 10GiBx5
- ceph-clientb
- CPU: 2vCPU
- Memory: 4GiB
- ceph-clienta
ceph-clienta 充当ceph集群客户端的同时,也充当ceph的管理端
- 集群节点配置:
- ceph-serverc、ceph-serverd和ceph-servere
- CPU: 2vCPU
- Memory: 4GiB
- Storage: 10GiBx5
其中 ceph-server 属于 bootstrap 节点
- ceph-serverc、ceph-serverd和ceph-servere
-
网络信息:
public_network: 172.16.80.0/24
cluster_network: 172.16.90.0/24
安装 CEPHADM
- 使用 root 账户登录到 ceph-serverc 节点
$ dnf install -y centos-release-ceph-quincy $ dnf install -y cephadm vim bash-completion git ansible
设置系统
- 在 ceph-clientc 创建 admin 账户,并设置其为免认证 SUDO
$ useradd admin $ passwd admin $ echo "admin ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/admin $ chmod 0400 /etc/sudoers.d/admin
- 在 ceph-clientc 上创建免密码认证的 ssh 密钥对,并复制到 admin 家目录
$ ssh-keygen -q -t rsa -f ~/.ssh/id_rsa -N '' $ cp -r ~/.ssh ~admin/.ssh $ chown -R admin: ~admin/.ssh $ ssh-copy-id root@localhost
- 根据自己的情况,编写本地主机名解析文件 /etc/hosts,追加以下内容
172.16.80.102 ceph-clienta.lab.example.net ceph-clienta 172.16.80.103 ceph-clientb.lab.example.net ceph-clientb 172.16.80.104 ceph-serverc.lab.example.net ceph-serverc 172.16.80.105 ceph-serverd.lab.example.net ceph-serverd 172.16.80.106 ceph-servere.lab.example.net ceph-servere
- 将上述创建的用户,文件等在其他节点同样创建
#!/bin/bash for HOSTS in ceph-{clienta,clientb,serverc,serverd,servere} do scp -r /root/.ssh root@${HOSTS}:/root/.ssh scp /etc/hosts root@${HOSTS}:/etc/hosts ssh root@${HOSTS} "useradd admin" ssh root@${HOSTS} "echo YOUR_ADMIN_PASSWORD | passwd --stdin admin" scp /etc/sudoers.d/admin root@${HOSTS}:/etc/sudoers.d/admin ssh root@${HOSTS} "chmod 0400 /etc/sudoers.d/admin" scp -r /root/.ssh root@${HOSTS}:/home/admin/.ssh ssh root@${HOSTS} "chown -R admin: /home/admin/.ssh" done
准备 cephadm-ansible
- 使用 git clone 命令下载 cephadm-ansible:
$ git clone -b quincy https://github.com/ceph/cephadm-ansible.git $ cd cephadm-ansible/
- 在 cephadm-adnible 下创建 hosts 清单文件:
ceph-clienta.lab.example.net ceph-clientb.lab.example.net ceph-serverc.lab.example.net ceph-serverd.lab.example.net ceph-servere.lab.example.net [clients] ceph-clienta.lab.example.net ceph-clientb.lab.example.net [admin] ceph-clienta.lab.example.net
- 测试清单中的主机,并执行 cephadm-preflight.yml
- 测试主机的连通性和用户
$ ansible -i hosts --list-hosts all hosts (4): ceph-serverc.lab.example.net ceph-serverd.lab.example.net ceph-servere.lab.example.net ceph-clienta.lab.example.net ceph-clientb.lab.example.net $ ansible -i hosts -m ping all $ ansible all -i hosts -u admin -b -m ping
- 查看 cephadm-preflight.yml
# Usage: # # ansible-playbook -i <inventory host file> cephadm-preflight.yml # # You can limit the execution to a set of hosts by using `--limit` option: # # ansible-playbook -i <inventory host file> cephadm-preflight.yml --limit <my_osd_group|my_node_name> # # You can override variables using `--extra-vars` parameter: # # ansible-playbook -i <inventory host file> cephadm-preflight.yml --extra-vars "ceph_origin=rhcs" #
- 使用 –extra-vars “ceph_origin=community” 执行 cephadm-preflight.yml
$ ansible-playbook -i hosts --extra-vars "ceph_origin=community" cephadm-preflight.yml
- 测试主机的连通性和用户
设置默认登录账户(可选)
- 在 root 和 admin 的 $HOME/.ssh/config 中增加以下内容(没有则创建该文件):
Host *.lab.example.net User root StrictHostKeyChecking no UserKnownHostsFile /dev/null
- 将上述文件分别复制到其他节点的对应用户家目录中:
#!/bin/bash for HOSTS in ceph-{clienta,clientb,serverc,serverd,servere} do scp /root/.ssh/config root@${HOSTS}:~/.ssh/config scp /home/admin/.ssh/config admin@${HOSTS}:~/.ssh/config ssh root@${HOSTS} "systemctl disable firewalld.service --now" done
参考文档:
Ceph Document: distribution-specific-installations
cephadm-ansible Document: https://github.com/ceph/cephadm-ansible