环境:
ubuntu16.04
10.21.24.12
10.21.24.23
10.21.24.33
每个节点挂载100G的硬盘vdb。
根据官方文档http://docs.ceph.com/ceph-ansible/master/
首先在主控节点上从github上将代码拉到本地。
本例中在根目录创建/ceph
目录,所有文件存在/ceph/ceph-ansible
下。
git clone https://github.com/ceph/ceph-ansible.git
然后决定使用哪一个branch,本次我们安装的是J版,所以这里选用3.0分支
git checkout stable-3.0
记下来进入 /ceph/ceph-ansible/tests 根据requirements.txt提空的依赖进行安装
pip install -r requirements.txt
使用 Ansible PPA 在Ubuntu上获取Ansible。
sudo add-apt-repository ppa:ansible/ansible
sudo apt update
sudo apt install ansible
为了实现三节点之间免密通信,首先修改/etc/hosts
文件。在文件中加入如下内容:
10.21.25.14 node1
10.21.25.36 node2
10.21.25.33 node3
然后执行以下命令:
ssh-keygen -t rsa
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
在每一个节点上重复本小节所有操作
首先定义Inventory,该文件定义集群中的主机以及每个主机在您的ceph集群中扮演的roles。此文件可与ansible-playbook的-i flag
一起使用。
此文件默认存放位置为/etc/ansible/hosts
。
[mons]
10.21.24.12
10.21.24.23
10.21.24.33
[osds]
10.21.24.12
10.21.24.23
10.21.24.33
修改ansible变量文件all.yml.sample
,文件位于/ceph/ceph-ansible/group_vars
下。
ceph_origin: repository
ceph_repository: community
ceph_stable_release: jewel
public_network: "10.21.24.254/24"
cluster_network: "10.21.24.254/24"
monitor_interface: ens3
devices:
- '/dev/vdb'
osd_scenario: collocated
其中public_network
为自己集群的网段,devices
为需要部署的新硬盘。osd_scenario
为部署场景,此处collocated指定日志盘和数据盘共用一块磁盘,部署的时候不需要分区,只需要指定 devices磁盘就好。修改完后使用mv all.yml.sample all.yml
激活yml文件。
修改playbook,playbook在部署时负责给ansible-playbook传递命令。本例使用根目录下默认playbook文件site.yml.sample
。使用命令mv site.yml.sample site.yml
进行重命名。
ansible-playbook site.yml
等待部署完成后提示
可以输入ceph -s
检查节点状况:
root@zwk-01:/ceph/ceph-ansible# ceph -s
cluster b7809ff0-7fc7-45f5-a0e3-60d5959ecbc5
health HEALTH_OK
monmap e2: 3 mons at {zwk-01=10.21.25.14:6789/0,zwk-02=10.21.25.36:6789/0,zwk-03=10.21.25.33:6789/0}
election epoch 6, quorum 0,1,2 zwk-01,zwk-03,zwk-02
osdmap e14: 3 osds: 3 up, 3 in
flags sortbitwise,require_jewel_osds
pgmap v25: 64 pgs, 1 pools, 0 bytes data, 0 objects
323 MB used, 284 GB / 284 GB avail
64 active+clean