基于CentOS 7.2 Ceph 分布式存储 实践指南


部署实践

Ceph是开源的分布式存储解决方案,支持对象存储、块存储和文件存储访问类型。

2014年4月,Redhat收购Inktank。Ceph成为Redhat的开源项目,并提供商业支持服务。

Ceph开源项目发布遵循GPL和LGPL协议。
说明:
  • 若在开源版Ceph部署中遇到问题,请咨询Ceph社区获取帮助,ZStack公司不提供相关技术支持服务。
  • Ceph社区官网文档链接:http://docs.ceph.com/docs/master/

基础环境准备

  1. ISO及实施环境准备

    目前,ZStack定制版ISO集成Ceph社区版Hammer 0.94.9(具体版本依据官网而定)。

    本文假设以下实施环境:
    服务器 硬件配置 IP地址 数据磁盘
    ceph-1 4核 4G内存 172.20.12.154

    固态硬盘: /dev/vdb

    机械硬盘: /dev/vdc/dev/vdd

    ceph-2 4核 4G内存 172.20.12.99

    固态硬盘: /dev/vdb

    机械硬盘: /dev/vdc/dev/vdd

    ceph-3 4核 4G内存 172.20.12.21

    固态硬盘: /dev/vdb

    机械硬盘: /dev/vdc /dev/vdd

    其中,每个节点配置1块固态硬盘40GB存储日志,配置2块机械硬盘200G存储数据。

  2. 配置节点

    通过ZStack基于CentOS 7.2定制版ISO安装3个节点操作系统。网络的配置方式如下:

    • 如果网卡名称为eth0、eth1格式,以下示例为主备模式的bond配置,并配置网桥:
      zs-bond-ab -c bond0
      zs-nic-to-bond -a bond0 eth0
      zs-nic-to-bond -a bond0 eth1
      zs-network-setting -b bond0 172.20.12.21 255.255.0.0 172.20.0.1

      其中:

      • bond0:网卡bond的模式
      • 172.20.12.21:IP地址
      • 255.255.0.0:掩码
      • 172.20.0.1:网关
    • 配置3个节点的网络信息:
      [root@ceph-1 ~]# zs-network-setting -b bond0 172.20.12.154 255.255.0.0 172.20.0.1
      
      [root@ceph-2 ~]# zs-network-setting -b bond0 172.20.12.99 255.255.0.0 172.20.0.1
      
      [root@ceph-3 ~]# zs-network-setting -b bond0 172.20.12.21 255.255.0.0 172.20.0.1
    • 设置主机解析:
      [root@ceph-1 ~]# vim /etc/hosts
      ...
      172.20.12.154  ceph-1
      172.20.12.99   ceph-2
      172.20.12.21   ceph-3
      ...
    • 将以下脚本保存成ceph.sh, 在第一台节点执行以下脚本。例如,在172.20.12.21上执行bash ceph.sh 172.20.12.21 172.20.12.99 172.20.12.154其中172.20.12.21,172.20.12.99,172.20.12.154分别代表三台节点的存储IP地址。即可配置ceph-1、ceph-2和ceph-3免密码登录:
      #!/bin/bash
      set -x
      export PS4='+[#$LINENO ${FUNCNAME[0]}() $BASH_SOURCE] '
      
      declare -a IP
      IP[0]=$1
      IP[1]=$2
      IP[2]=$3
      
      host_name=$4
      
      auto_ssh_copy_id () {
      
          expect -c "set timeout -1;
                      spawn ssh-copy-id $2;
                      expect {
                          *(yes/no)* {send -- yes\r;exp_continue;}
                          *assword:* {send -- $1\r;exp_continue;}
                          eof        {exit 0;}
                      }";
      }
      
      gen_ssh_keys(){
          ssh-keygen -q -t rsa -N "" -f /root/.ssh/id_rsa
          cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys
          chmod go-rwx /root/.ssh/authorized_keys
      }
    • 无密码配置完成后,传输/etc/hosts文件:
      [root@ceph-1 ~]# scp /etc/hosts ceph-2:/etc/
      
      [root@ceph-1 ~]# scp /etc/hosts ceph-3:/etc/
    • 配置3个节点的主机名以及ceph-1、ceph-2和ceph-3防火墙,允许互相访问:
      ssh ceph-1 "hostnamectl set-hostname ceph-1 && export HOSTNAME=ceph-1 && iptables -F \
      && service iptables save"
      ssh ceph-2 "hostnamectl set-hostname ceph-2 && export HOSTNAME=ceph-2 && iptables -F \
      && service iptables save"
      ssh ceph-3 "hostnamectl set-hostname ceph-3 && export HOSTNAME=ceph-3 && iptables -F \
      && service iptables save"
    • 配置ceph-1、ceph-2和ceph-3时间同步:
      [root@ceph-1 ~]# yum --disablerepo=* --enablerepo=zstack-local,ceph install ntp
      [root@ceph-1 ~]# systemctl restart ntpd
      [root@ceph-1 ~]# systemctl enable ntpd.service
      
      [root@ceph-2 ~]# yum --disablerepo=* --enablerepo=zstack-local,ceph install ntp
      [root@ceph-2 ~]# systemctl restart ntpd
      [root@ceph-2 ~]# systemctl enable ntpd.service
      
      [root@ceph-3 ~]# yum --disablerepo=* --enablerepo=zstack-local,ceph install ntp
      [root@ceph-3 ~]# systemctl restart ntpd
      [root@ceph-3 ~]# systemctl enable ntpd.service

    至此,3 个节点的主机名与网络配置完成。


磁盘初始化

  1. 固态磁盘分区
    根据上一节服务器环境描述,每个节点配置1块固态硬盘和2块机械硬盘,所以对固态硬盘执行分区,分2个日志分区。操作如下:
    [root@ceph-1 ~]# parted /dev/vdb mklabel gpt
    [root@ceph-1 ~]# parted /dev/vdb mkpart journal-1 10% 40%
    [root@ceph-1 ~]# parted /dev/vdb mkpart journal-2 60% 90%
    
    [root@ceph-2 ~]# parted /dev/vdb mklabel gpt
    [root@ceph-2 ~]# parted /dev/vdb mkpart journal-1 10% 40%
    [root@ceph-2 ~]# parted /dev/vdb mkpart journal-2 60% 90%
    
    [root@ceph-3 ~]# parted /dev/vdb mklabel gpt
    [root@ceph-3 ~]# parted /dev/vdb mkpart journal-1 10% 40%
    [root@ceph-3 ~]# parted /dev/vdb mkpart journal-2 60% 90%
  2. 机械硬盘格式化操作
    • 对ceph-1节点的机械硬盘格式化操作如下:
      [root@ceph-1 ~]# mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 /dev/vdc
      [root@ceph-1 ~]# mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 /dev/vdd
      [root@ceph-1 ~]# mkdir -p /data/disk1/
      [root@ceph-1 ~]# mkdir -p /data/disk2/
      
      # 查看机械硬盘的 UUID
      [root@ceph-1 ~]# ll /dev/disk/by-uuid/
      total 0
      lrwxrwxrwx 1 root root 10 May 5 13:10 7ea42029-e99a-4d8a-a837-d27c647ff74e -> ../../vda2
      lrwxrwxrwx 1 root root 10 May 5 13:10 84d27c03-98b6-4fc4-8126-eac83015d786 -> ../../vda1
      lrwxrwxrwx 1 root root 9 May 5 13:56 9bdfeb51-95c2-4018-93dc-69256ab789f3 -> ../../vdd
      lrwxrwxrwx 1 root root 9 May 5 13:55 da461bde-2aef-4f49-8634-89564317559e -> ../../vdc
      
      # 通过 UUID 挂载数据目录,/dev/vdc 挂载/data/disk1,依次类推
      [root@ceph-1 ~]# mount -t xfs -o noatime,nodiratime,nobarrier \
      /dev/disk/by-uuid/da461bde-2aef-4f49-8634-89564317559e /data/disk1
      [root@ceph-1 ~]# mount -t xfs -o noatime,nodiratime,nobarrier \
      /dev/disk/by-uuid/9bdfeb51-95c2-4018-93dc-69256ab789f3 /data/disk2
    • 对ceph-2节点的机械硬盘操作格式化操作如下:
      [root@ceph-2 ~]# mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 /dev/vdc
      [root@ceph-2 ~]# mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 /dev/vdd
      [root@ceph-2 ~]# mkdir -p /data/disk1/
      [root@ceph-2 ~]# mkdir -p /data/disk2/
      
      # 查看机械硬盘的 UUID
      [root@ceph-2 ~]# ll /dev/disk/by-uuid/
      total 0
      lrwxrwxrwx 1 root root
      9 May 5 14:03 62996e0d-0f7f-4e10-99fa-f87686cc0c05 -> ../../vdc
      lrwxrwxrwx 1 root root 10 May 5 13:10 7ea42029-e99a-4d8a-a837-d27c647ff74e -> ../../vda2
      lrwxrwxrwx 1 root root 10 May 5 13:10 84d27c03-98b6-4fc4-8126-eac83015d786 -> ../../vda1
      lrwxrwxrwx 1 root root  9 May 5 14:03 ba29e5ea-81af-4ae9-859a-cdeae84ba466 -> ../../vdd
      
      # 通过 UUID 挂载数据目录,/dev/vdc 挂载/data/disk1,依次类推
      [root@ceph-2 ~]# mount -t xfs -o noatime,nodiratime,nobarrier \
      /dev/disk/by-uuid/62996e0d-0f7f-4e10-99fa-f87686cc0c05 /data/disk1
      [root@ceph-2 ~]# mount -t xfs -o noatime,nodiratime,nobarrier \
      /dev/disk/by-uuid/ba29e5ea-81af-4ae9-859a-cdeae84ba466 /data/disk2
    • 对ceph-3节点的机械硬盘操作格式化操作如下:
      [root@ceph-3 ~]# mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 /dev/vdc
      [root@ceph-3 ~]# mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 /dev/vdd
      [root@ceph-3 ~]# mkdir -p /data/disk1/
      [root@ceph-3 ~]# mkdir -p /data/disk2/
      
      # 查看机械硬盘的 UUID
      [root@ceph-3 ~]# ll /dev/disk/by-uuid/
      total 0
      lrwxrwxrwx 1 root root
      9 May 5 14:17 1efee887-ed2f-4c3e-8e77-717f15b19662 -> ../../vdd
      lrwxrwxrwx 1 root root 10 May 5 13:10 7ea42029-e99a-4d8a-a837-d27c647ff74e -> ../../vda2
      lrwxrwxrwx 1 root root 10 May 5 13:10 84d27c03-98b6-4fc4-8126-eac83015d786 -> ../../vda1
      lrwxrwxrwx 1 root root  9 May 5 14:17 cb07fe55-afba-4ce6-aae1-a65c596d8899 -> ../../vdc
      
      # 通过 UUID 挂载数据目录,/dev/vdc 挂载/data/disk1,依次类推
      [root@ceph-3 ~]# mount -t xfs -o noatime,nodiratime,nobarrier \
      /dev/disk/by-uuid/cb07fe55-afba-4ce6-aae1-a65c596d8899 /data/disk1
      [root@ceph-3 ~]# mount -t xfs -o noatime,nodiratime,nobarrier \
      /dev/disk/by-uuid/1efee887-ed2f-4c3e-8e77-717f15b19662 /data/disk2
    说明: 对于机械硬盘通过手动挂载,服务器重启后将会失去的情况,建议放到/etc/rc.local
    root@ceph-1 ~]# chmod +x /etc/rc.local
    [root@ceph-1 ~]# vim /etc/rc.local
    ...
    mount -t xfs -o noatime,nodiratime,nobarrier \
    /dev/disk/by-uuid/da461bde-2aef-4f49-8634-89564317559e /data/disk1
    mount -t xfs -o noatime,nodiratime,nobarrier \
    /dev/disk/by-uuid/9bdfeb51-95c2-4018-93dc-69256ab789f3 /data/disk2
    ...
    [root@ceph-2 ~]# chmod +x /etc/rc.local
    [root@ceph-2 ~]# vim /etc/rc.local
    ...
    mount -t xfs -o noatime,nodiratime,nobarrier \
    /dev/disk/by-uuid/62996e0d-0f7f-4e10-99fa-f87686cc0c05 /data/disk1
    mount -t xfs -o noatime,nodiratime,nobarrier \
    /dev/disk/by-uuid/ba29e5ea-81af-4ae9-859a-cdeae84ba466 /data/disk2
    ...
    [root@ceph-3 ~]# chmod +x /etc/rc.local
    [root@ceph-3 ~]# vim /etc/rc.local
    ...
    mount -t xfs -o noatime,nodiratime,nobarrier \
    /dev/disk/by-uuid/cb07fe55-afba-4ce6-aae1-a65c596d8899 /data/disk1
    mount -t xfs -o noatime,nodiratime,nobarrier \
    /dev/disk/by-uuid/1efee887-ed2f-4c3e-8e77-717f15b19662 /data/disk2
    ...

    至此,3个节点的磁盘初始化完成。







下载ZStack企业版

您已填写过基本信息?点击这里

姓名应该不少于两个字符
手机号格式错误
公司名称不应该少于4个字符
邮箱格式错误

下载链接将会通过邮件形式发送至您的邮箱,请谨慎填写。

下载ZStack企业版

还未填写过基本信息?点击这里

邮箱或手机号码格式错误

商务咨询:

400-962-2212 转 1

售后咨询:

400-962-2212 转 2

商务联系:

sales@zstack.io
申请ZStack多机版
姓名应该不少于两个字符
手机号格式错误
公司名称不应该少于4个字符
邮箱格式错误

商务咨询:

400-962-2212 转 1

售后咨询:

400-962-2212 转 2

商务联系:

sales@zstack.io

下载链接已发送至您的邮箱。

如未收到,请查看您的垃圾邮件、订阅邮件、广告邮件。 当您收到电子邮件后,请点击 URL 链接,以完成下载。

下载链接已发送至您的邮箱。

如未收到,请查看您的垃圾邮件、订阅邮件、广告邮件。
或点击下方URL链接 (IE内核浏览器请右键另存为), 完成下载:

感谢您使用 ZStack 产品和服务。

成功提交申请。

我们将安排工作人员尽快与您取得联系。

感谢您使用 ZStack 产品和服务。