通过 Ansible 搭建 CephFS 测试环境

环境要求

  • c1:配置有一块 30G 性能型硬盘和一块 10G 容量型硬盘
  • c2:配置有一块 30G 性能型硬盘和一块 10G 容量型硬盘
  • c3:配置有一块 30G 性能型硬盘和一块 10G 容量型硬盘

部署步骤

主机间免密登录

在控制节点 c1 添加主机间的免密登录

  • 首先在每台主机生成各自的 ssh-key
1
  ssh-keygen -t rsa
  • 然后再每台主机间添加 ssh 公钥
1
   ssh-copy-id root@hostname
  • 在 c1 上编辑 /etc/hosts 文件,根据情况添加对应主机和主机名
1
2
3
4
5
  127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  192.168.96.16 c1
  192.168.96.7  c2
  192.168.96.6  c3
  • 在 c1 上测试能否免密登录
1
2
3
4
5
6
7
8
  [root@c1 ~]# ssh c2
  The authenticity of host 'c2 (192.168.96.7)' can't be established.
  ECDSA key fingerprint is SHA256:0uB36FA/QRe32CkvEXsUlO9qgkhzcTOVaMH75kdxBOg.
  ECDSA key fingerprint is MD5:91:d5:1f:76:eb:96:f6:52:3b:e6:66:99:cb:f6:fe:4d.
  Are you sure you want to continue connecting (yes/no)? yes
  Warning: Permanently added 'c2,192.168.96.7' (ECDSA) to the list of known hosts.
  Last login: Tue Sep 25 09:38:22 2018 from 192.168.96.16
  [root@c2 ~]# 

克隆 ceph-ansible 仓库

  • 克隆 ceph-ansible 仓库到本地
1
  git clone https://github.com/ceph/ceph-ansible.git
  • 选择 ceph-ansible 的分支,可以根据需求选择 stable 分支,也可以选择 master 分支
  • stable-3.0支持 Ceph 版本jewelluminous。该分支支持 Ansible 版本2.4
  • stable-3.1支持 Ceph 版本luminousmimic。该分支支持 Ansible 版本2.4
  • master支持 Ceph 版本luminous,以及mimic。该分支支持 Ansible 版本2.6
1
  git checkout $branch
  • 安装 pip
1
2
  yum -y install epel-release
  yum -y install python-pip
  • 通过 pip 安装其他需要用到的 Python 库
1
  pip install -r requirements.txt

安装 Ansible

在控制节点 c1 上安装 ansible

  • 通过包管理器进行安装

    • CentOS 系统安装
    1
    2
    
    # 通过 yum 进行安装
    sudo yum install ansible
    • Ubuntu 系统安装
    1
    2
    3
    4
    5
    6
    
    # 首先添加 PPA 源
    sudo add-apt-repository ppa:ansible/ansible
    # 更新源
    sudo apt update
    # 使用 apt 进行安装
    sudo apt install ansible
  • 通过 pip 进行安装

1
  pip install ansible

配置 Ansible

  • 进入 ceph-ansible 目录
1
  cd ceph-ansible
  • 在 ceph-ansible 目录下添加并编辑 hosts 文件
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
  [mons]
  c1
  c2
  c3
  [mgrs]
  c1
  c2
  c3
  [osds]
  c1
  c2
  c3
  [mdss]
  c1
  • 对每个节点的 vdc 磁盘进行分区
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
  [root@c1 ceph-ansible]# lsblk
  NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  vda    253:0    0  40G  0 disk 
  └─vda1 253:1    0  40G  0 part /
  vdb    253:16   0  30G  0 disk 
  vdc    253:32   0  10G  0 disk 
  [root@c1 ceph-ansible]# sgdisk -n 1:0:+9G /dev/vdc -t 1:45b0969e-9b03-4f30-b4c6-b4b80ceff106 -c 1:"ceph journal"
  The operation has completed successfully.
  [root@c1 ceph-ansible]# lsblk
  NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  vda    253:0    0  40G  0 disk 
  └─vda1 253:1    0  40G  0 part /
  vdb    253:16   0  30G  0 disk 
  vdc    253:32   0  10G  0 disk 
  └─vdc1 253:33   0   9G  0 part 
  • 进入 group_vars 文件夹,添加并编辑 all.yml 文件
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
  ---
  dummy:
  cluster: ceph
  ntp_service_enabled: true
  ceph_origin: repository
  ceph_repository: community
  ceph_mirror: http://mirrors.163.com/ceph
  ceph_stable_key: http://mirrors.163.com/ceph/keys/release.asc
  ceph_stable_release: luminous
  monitor_interface: eth0
  journal_size: 5120 # OSD journal size in MB
  osd_mkfs_type: xfs
  osd_mkfs_options_xfs: -f -i size=2048
  osd_objectstore: filestore
  osd_scenario: lvm
  lvm_volumes:
     - data: /dev/vdb
       journal: /dev/vdc1
  • 回到 ceph-ansible 目录,复制 site.yml.sample 为 site.yml
1
2
  cd ceph-ansible
  cp site.yml.sample site.yml

进行部署

1
ansible-playbook site.yml -i hosts

进行卸载

如果想卸载 CephFS 环境,首先从 infrastructure-playbooks 文件夹下复制 purge-cluster.yml 到父级目录 ceph-ansible 下,然后执行命令进行卸载即可

1
2
3
cd ceph-ansible
cp infrastructure-playbooks/purge-cluster.yml purge-cluster.yml
ansible-playbook purge-cluster.yml -i hosts

PS:执行了卸载命令后,要想重新安装需要重新对磁盘进行分区

验证查看

当安装完成后,可使用以下命令查看和验证 CephFS 是否安装成功

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
[root@c1 ~]# ceph -s
  cluster:
    id:     97eb4140-c65e-4011-83ef-d4f377d30b85
    health: HEALTH_WARN
            too few PGs per OSD (16 < min 30)
 
  services:
    mon: 3 daemons, quorum c3,c2,c1
    mgr: c2(active), standbys: c3, c1
    mds: cephfs-1/1/1 up  {0=c1=up:active}
    osd: 3 osds: 3 up, 3 in
 
  data:
    pools:   2 pools, 16 pgs
    objects: 21 objects, 2.19KiB
    usage:   322MiB used, 89.6GiB / 89.9GiB avail
    pgs:     16 active+clean
 
[root@c1 ~]# ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
[root@c1 ~]#
  • 如果安装后 mds 未创建,可手动使用命令 ceph auth get-or-create mds.{$id} mon 'profile mds' mgr 'profile mds' mds 'allow *' osd 'allow *' > /var/lib/ceph/mds/ceph-{$id}/keyring 来进行创建
  • 重启 mds 可使用命令 systemctl restart ceph-mds.target

参考链接