1. 部署结构

Ceph分布式存储实践应用之集群配置管理-LMLPHP

虚拟机创建三台服务器,CENTOS版本为7.6, IP网端10.10.20.0/24。三台主机名称为:

  • CENTOS7-1: IP为10.10.20.11, 既做管理节点, 又做子节点。

  • CENTOS7-2: IP为10.10.20.12, 子节点。

  • CENTOS7-2: IP为10.10.20.13, 子节点。

2. 系统配置

系统配置工作, 三台节点依次执行:

  1. 修改主机名称 [root@CENTOS7-1 ~]# vi /etc/hostname

    CENTOS7-1
    
  2. 编辑hosts文件

    10.10.20.11 CENTOS7-1
    10.10.20.12 CENTOS7-2
    10.10.20.13 CENTOS7-3
    

    注意, 这里面的主机名称要和节点名称保持一致, 否则安装的时候会出现问题

    Ceph分布式存储实践应用之集群配置管理-LMLPHP

  3. 修改yum源 vi /etc/yum.repos.d/ceph.repo, 为避免网速过慢问题, 这里采用的是清华镜像源:

    [Ceph]
    name=Ceph packages for $basearch
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/x86_64/
    enabled=1
    gpgcheck=1
    type=rpm-md
    gpgkey=https://download.ceph.com/keys/release.asc   
    [Ceph-noarch]
    name=Ceph noarch packages
    # 官方源
    #baseurl=http://download.ceph.com/rpm-mimic/el7/noarch
    # 清华源
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/noarch/
    enabled=1
    gpgcheck=1
    type=rpm-md
    gpgkey=https://download.ceph.com/keys/release.asc   
    [ceph-source]
    name=Ceph source packages
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/SRPMS/
    enabled=1
    gpgcheck=1
    type=rpm-md
    gpgkey=https://download.ceph.com/keys/release.asc  
    
  4. 安装ceph与ceph-deploy组件

    yum update && yum -y install ceph ceph-deploy 
    

    安装完成, 如果执行ceph-deploy出现ImportError: No module named pkg_resources

    安装python2-pip: yum -y install python2-pip

  5. 安装NTP时间同步工具

    yum install ntp ntpdate ntp-doc -y
    

    确保时区是正确, 设置开机启动:

    systemctl enable ntpd
    

    并将时间每隔1小时自动校准同步。编辑 vi /etc/rc.d/rc.local 追加:

    /usr/sbin/ntpdate ntp1.aliyun.com > /dev/null 2>&1; /sbin/hwclock -w
    

    配置定时任务, 执行crontab -e 加入:

    0 */1 * * * ntpdate ntp1.aliyun.com > /dev/null 2>&1; /sbin/hwclock -w
    

3. 免密码SSH登陆

  1. 官方建议不用系统内置用户, 创建名为ceph_user用户, 密码也设为ceph_user:

    useradd -d /home/ceph_user -m ceph_user
    passwd ceph_user
    
  2. 设置sudo权限

    echo "ceph_user ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph_user
    sudo chmod 0440 /etc/sudoers.d/ceph_user
    

    1、2两个步骤依次在三台机器上执行。

    接下来在主节点, 继续执行:

  3. 生成密钥:

    切换用户: su ceph_user

    执行ssh-keygen,一直按默认提示点击生成RSA密钥信息。

  4. 分发密钥至各机器节点

    ssh-copy-id ceph_user@CENTOS7-1
    ssh-copy-id ceph_user@CENTOS7-2
    ssh-copy-id ceph_user@CENTOS7-3
    
  5. 修改管理节点上的 ~/.ssh/config 文件, 简化SSH远程连接时的输入信息:

    管理节点是会有root和ceph_user多个用户, ssh远程连接默认会以当前用户身份进行登陆,

    如果我们是root身份进行远程连接, 还是需要输入密码, 我们想简化, 该怎么处理?

    切换root身份,

    su root 
    

    修改~/.ssh/config 文件

    Host CENTOS7-1
       Hostname CENTOS7-1
       User ceph_user
    Host CENTOS7-2
       Hostname CENTOS7-2
       User ceph_user
    Host CENTOS7-3
       Hostname CENTOS7-3
       User ceph_user
    

    注意修改文件权限, 不能采用777最大权限:

    chmod 600 ~/.ssh/config
    

    进行ssh远程连接时, Host的主机名称是区分大小写的, 所以要注意配置文件的主机名称。

  6. 开放端口, 非生产环境, 可以直接禁用防火墙:

    systemctl stop firewalld.service
    systemctl disable firewalld.service
    
  7. SELINUX设置

    SELinux设为禁用:

    setenforce 0
    

    永久生效: 编辑 vi /etc/selinux/config修改:

    SELINUX=disabled
    

4. 集群搭建配置

采用root身份进行安装

  1. 在管理节点创建集群配置目录,cd /usr/local:

    mkdir ceph-cluster
    cd ceph-cluster
    

    注意: 此目录作为ceph操作命令的基准目录, 会存储处理配置信息。

  2. 创建集群, 包含三台机器节点:

    ceph-deploy new CENTOS7-1  CENTOS7-2 CENTOS7-3
    

    创建成功后, 会生一个配置文件。

  3. 如果接下来集群的安装配置出现问题, 可以执行以下命令清除, 再重新安装:

    ceph-deploy purge CENTOS7-1  CENTOS7-2 CENTOS7-3
    ceph-deploy purgedata CENTOS7-1  CENTOS7-2 CENTOS7-3
    ceph-deploy forgetkeys
    

    将三台节点的mon信息也删除

    rm -rf /var/run/ceph/
    
  4. 修改配置文件, 有些配置后面需用到:

    vi /usr/local/ceph-cluster/ceph.conf
    

    加入:

    [global]
    public network = 10.10.20.0/24
    # 设置pool池默认分配数量
    osd pool default size = 2
    # 容忍更多的时钟误差
    mon clock drift allowed = 2
    mon clock drift warn backoff = 30
    # 允许删除pool
    mon_allow_pool_delete = true
    [mgr]
    # 开启WEB仪表盘
    mgr modules = dashboard
    

    第一项为副本数, 设为2份。

    第二项为对外IP访问网段,注意根据实际IP修改网段。

    第三、四项为允许一定时间的漂移误差。

  5. 执行安装:

    ceph-deploy install  CENTOS7-1  CENTOS7-2 CENTOS7-3
    

    如果出现错误:

    ceph_deploy][ERROR ] RuntimeError: Failed to execute command: ceph --version
    

    可以在各节点上单独进行安装:

    yum -y install ceph 
    

    如果没有仓库文件ceph.repo, 按上面的步骤手工创建。

  6. 初始monitor信息:

    ceph-deploy mon create-initial
    

    执行完成后, 会生成以下文件: Ceph分布式存储实践应用之集群配置管理-LMLPHP

  7. 同步管理信息:

    下发配置文件和管理信息至各节点:

    ceph-deploy admin  CENTOS7-1  CENTOS7-2 CENTOS7-3
    
  8. 安装mgr(管理守护进程), 大于12.x版本需安装, 我们装的是最新版,需执行:

    ceph-deploy mgr create CENTOS7-1  CENTOS7-2 CENTOS7-3
    
  9. 安装OSD(对象存储设备)

    注意: 新版本的OSD没有prepare与activate命令。

    这里需要新的硬盘作为OSD存储设备, 关闭虚拟机, 增加一块硬盘, 不用格式化。

    Ceph分布式存储实践应用之集群配置管理-LMLPHP

    重启, fdisk -l 查看新磁盘名称: Ceph分布式存储实践应用之集群配置管理-LMLPHP

    执行创建OSD命令:

    ceph-deploy osd create --data /dev/sdb CENTOS7-1
    

    三台节点都需分别依次执行。

  10. 验证节点: 输入ceph health 或 ceph -s查看, 出现HEALTH_OK代表正常。 Ceph分布式存储实践应用之集群配置管理-LMLPHP

    通过虚拟机启动, 如果出现错误:

    [root@CENTOS7-1 ~]# ceph -s
      cluster:
        id:     0ec99aa9-e97e-43d3-b5b9-90eb21c4abff
        health: HEALTH_WARN
                1 filesystem is degraded
                1 osds down
                1 host (1 osds) down
                Reduced data availability: 41 pgs inactive
                Degraded data redundancy: 134/268 objects degraded (50.000%), 22 pgs degraded, 87 pgs undersized
                39 slow ops, oldest one blocked for 2286 sec, daemons [osd.0,mon.CENTOS7-2,mon.CENTOS7-3] have slow ops.
                clock skew detected on mon.CENTOS7-2, mon.CENTOS7-3
    
      services:
        mon: 3 daemons, quorum CENTOS7-1,CENTOS7-2,CENTOS7-3
        mgr: centos7-1(active), standbys: centos7-3, centos7-2
        mds: fs_test-1/1/1 up  {0=centos7-1=up:replay}
        osd: 3 osds: 1 up, 2 in
    
      data:
        pools:   9 pools, 128 pgs
        objects: 134  objects, 64 KiB
        usage:   1.0 GiB used, 19 GiB / 20 GiB avail
        pgs:     32.031% pgs unknown
                 134/268 objects degraded (50.000%)
                 65 active+undersized
                 41 unknown
                 22 active+undersized+degraded
    

    在各节点执行命令, 确保时间同步一致:

    ntpdate ntp1.aliyun.com 
    

5. 安装管理后台

  1. 开启dashboard模块

    ceph mgr module enable dashboard
    
  2. 生成签名

    ceph dashboard create-self-signed-cert
    
  3. 创建目录

    mkdir mgr-dashboard

    [root@CENTOS7-1 mgr-dashboard]# pwd
    /usr/local/ceph-cluster/mgr-dashboard
    
  4. 生成密钥对

    cd  /usr/local/ceph-cluster/mgr-dashboard
    
    openssl req -new -nodes -x509   -subj "/O=IT/CN=ceph-mgr-dashboard" -days 3650   -keyout dashboard.key -out dashboard.crt -extensions v3_ca
    
    [root@CENTOS7-1 mgr-dashboard]# ll
    total 8
    -rw-rw-r-- 1 ceph_user ceph_user 1155 Jul 14 02:26 dashboard.crt
    -rw-rw-r-- 1 ceph_user ceph_user 1704 Jul 14 02:26 dashboard.key
    
  5. 启动dashboard

    ceph mgr module disable dashboard
    ceph mgr module enable dashboard
    
  6. 设置IP与PORT

    ceph config set mgr mgr/dashboard/server_addr 10.10.20.11
    ceph config set mgr mgr/dashboard/server_port 18843
    
  7. 关闭HTTPS

    ceph config set mgr mgr/dashboard/ssl false
    
  8. 查看服务信息

    [root@CENTOS7-1 mgr-dashboard]# ceph mgr services
    {
        "dashboard": "https://10.10.20.11:8443/"
    }
    
  9. 设置管理用户与密码

    ceph dashboard set-login-credentials admin admin
    
  10. 访问

    Ceph分布式存储实践应用之集群配置管理-LMLPHP 通过后台访问可以看到整个集群的运行状态和节点数量等信息,HEALTH_OK代表处于正常。


本文由mirson创作分享,如需进一步交流,请加QQ群:19310171或访问www.softart.cn

04-08 13:54