Ceph的部署有很多种,从最早的手动部署,到后来的Ceph-deploy,再到目前比较火的容器部署等等。但能作为生产环境部署的却不多,其中Ceph-ansible算是生产环境部署的方法之一。Ceph-ansible是基于ansible工具完成Ceph部署的。对于生产环境中动则几十、成百上千的节点数量如果一台一台安装配置效率太低。引入ansible工具可以快速完成Ceph集群的安装配置,大大提高效率。让运维人员从机械重复的工作中解脱出来。
使用
环境
三个节点,其中一个节点用作ansible和Ceph节点的复用节点。
节点IP | 节点角色 | OS |
---|---|---|
172.30.12.137 | ansible节点、ceph节点 | CentOS Linux release 7.7.1908 |
172.30.12.197 | ceph节点 | CentOS Linux release 7.7.1908 |
172.30.12.227 | ceph节点 | CentOS Linux release 7.7.1908 |
本文中使用的ansible工具运行在一个 CentOS7.6.1810 的容器内。
安装
ceph-ansible是基于ansible工作的,所以要先安装ansible。既然要安装ansible,首先要先搞清楚安装哪个版本?
本文部署的Ceph版本为mimic
,官方推荐可以使用stable-3.1
和stable-3.2
,我选择了较新的stable-3.2
,stable-3.2
对应的ansible版本为2.6。(更多关于版本对应关系请见官网)
选择完了ansible版本接下来就可以安装了,安装分为两种方式
- pip 安装
- yum/apt 安装
由于 yum/apt 安装版本选择范围比较狭窄,所以本人推荐使用 pip 安装。(关于pip安装请见pypa官网)
首先clone ceph-ansible project
1 | git clone git@github.com:ceph/ceph-ansible.git |
然后使用ceph-ansible中推荐的requirements.txt
安装对应版本的ansible
1 | pip install -r ./ceph-ansible/requirements.txt |
待安装完成后,查看确认ansible版本
1 | ansible --version |
配置
ansible 配置
ansible inventory 自定义的配置可以放置在任何位置,只是在运行ansible时增加-i {inventory host path}
指定其路径即可。若不指定inventory文件,ansible将去/etc/ansible/hosts
这个路径去找。
inventory配置:
1 | [mons] |
密码中若存在特殊字符$
,#
等,需要使用\\
进行转义。
配置完成后,可使用ansible all -i {inventory host} -m ping
测试节点连通情况
1 | ansible all -i dummy-ansible-hosts -m ping |
ceph-ansible 配置
ceph-ansible的配置,主要是对group变量的配置,一般场景中我们不需要修改role。
配置 all.yml
首先:
1 | cp ./gourp_vars/all.yml.sample ./gourp_vars/all.yml |
然后,修改all.yml
中的配置,如下:
1 | # Inventory host group variables |
配置 osds.yml
首先
1 | cp ./gourp_vars/osds.yml.sample ./gourp_vars/osds.yml |
然后,修改osds.yml
配置,如下:
1 | ... |
配置 mgrs.yml
首先
1 | cp ./gourp_vars/mgrs.yml.sample ./gourp_vars/mgrs.yml |
然后,修改mgrs.yml
配置,如下:
1 | ... |
部署
集群初始化部署
首先
1 | cp ./site.yml.sample ./site.yml |
然后
1 | ansible-playbook -i {inventory host} site.yml |
部署过程需要下载RPM包安装,所以网速对部署速度的影响很大。请耐心等待。
增加OSD节点部署
首先
1 | cp ./infrastructure-playbooks/add-osd.yml ./add-osd.yml |
然后,修改inventory host文件,在[osds]
中增加172.30.12.227
这条记录,相当于增加一个osd节点。
1 | [mons] |
最后
1 | ansible-playbook -i {inventory host} add-osd.yml |
清除集群部署
首先
1 | cp ./infrastructure-playbooks/purge-cluster.yml ./purge-cluster.yml |
然后
1 | ansible-playbook -i {inventory host} purge-cluster.yml |
Ceph配置文件分发
配置文件分发各个节点
1 | ansible all -i dummy-ansible-hosts -m copy -a "src=/root/ceph.conf dest=/etc/ceph/" |