CephFS 测试环境搭建

通过 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

参考链接

updatedupdated2019-02-242019-02-24