美文网首页
ceph(第二步) 三节点部署(ceph-deploy)

ceph(第二步) 三节点部署(ceph-deploy)

作者: lzp1234 | 来源:发表于2019-10-08 18:03 被阅读0次

    前言

    这篇文章解决了什么问题:

    使用 ceph-deploy 工具部署 ceph 存储集群。

    整体介绍:

    使用虚拟机构建三节点 ceph 存储集群。

    环境

    全篇使用 root 权限。

    虚拟化软件:vmware
    虚拟机操作系统:centos 7.6
    每台虚拟机配置:2G内存,1块系统盘(50G),2块ceph将使用的硬盘(每块20G)
    虚拟机网络:一条虚拟机间互通,并且可以上网的网络即可(NAT)。
    总共三台虚拟机:ceph01、ceph02、ceph03

    ceph 版本:nautilus
    ceph-deploy 版本:2.0.1

    当前时间: 2019.10

    正文

    部署过程整体描述:
    首先选出一台机器作为部署节点,部署节点负责为机器部署 ceph 软件。这里直接选择 ceph01 作为部署节点。

    基础环境配置

    1. 配置网络

    我这里 ceph01、ceph02、ceph03 对应的地址分别为:
    10.10.10.31、10.10.10.32、10.10.10.33

    2. 关闭防火墙

    所有机器均关闭掉防火墙。

    systemctl disable iptables
    systemctl stop iptables
    systemctl disable firewalld
    systemctl stop firewalld
    
    3. 配置加速源

    所有机器均配置 yum 国内加速源:

    yum install -y wget
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    yum clean all
    yum makecache
    

    所有机器均配置 pip 国内加速源:

    mkdir ~/.pip
    cat > ~/.pip/pip.conf << EOF 
    [global]
    trusted-host=mirrors.aliyun.com
    index-url=https://mirrors.aliyun.com/pypi/simple/
    EOF
    
    4. 配置主机名解析

    这里配置的是部署节点到其它机器间的主机解析。

    在所有节点上执行:

    vim /etc/hosts 添加如下内容:

    10.10.10.31 ceph01 
    10.10.10.32 ceph02 
    10.10.10.33 ceph03
    
    5. 配置机器间的免密登录

    这里配置的是部署节点到其它机器间的免密登录。

    在 ceph01 (部署节点)节点上执行:
    1. 生成公私钥:
    ssh-keygen
    
    1. 拷贝公钥到其它机器上:

    注意:以下每行命令执行后都需要输入密码,不能直接全部复制粘贴。

    ssh-copy-id -i /root/.ssh/id_rsa.pub root@ceph01
    ssh-copy-id -i /root/.ssh/id_rsa.pub root@ceph02 
    ssh-copy-id -i /root/.ssh/id_rsa.pub root@ceph03
    
    1. 测试免密登录

    命令参考如下,尽量每个节点都测试一下

    ssh root@ceph03
    
    6. 安装 ntp 服务

    所有机器执行如下命令:

    yum install -y ntp ntpdate ntp-doc
    
    7. 配置主机名

    注意!当前步骤十分重要。

    在 ceph 中读取了 hostname 命令产生的结果。
    因此在每个节点上均需修改自己的 hostname。命令参考:

    进入到 ceph01 节点上:

    hostname ceph01
    echo "ceph01" > /etc/hostname
    

    按照此方法修改其它节点的 hostname。

    开始部署 ceph

    主要分两步:
    第一步,安装 ceph-deploy
    第二步,使用 ceph-deploy 安装 ceph 组件。

    第一步:在 node01(部署节点)上安装 ceph-deploy

    该步骤所有命令均在部署节点上执行。

    安装 ceph-deploy:

    yum install -y python-pip 
    pip install -U pip
    pip install ceph-deploy==2.0.1
    
    第二步:在 node01(部署节点)上使用 ceph-deploy 部署 ceph 组件

    该步骤所有命令均在部署节点上执行。

    1. 更换 ceph-deploy 将使用的 ceph 源(决定安装什么版本的 ceph):
    export CEPH_DEPLOY_REPO_URL=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7 
    export CEPH_DEPLOY_GPG_URL=http://mirrors.aliyun.com/ceph/keys/release.asc
    
    2. 创建部署临时目录:
    mkdir /opt/ceph-deploy
    cd /opt/ceph-deploy
    
    3. 部署一个新集群,生成初始配置(参数 ceph01 是指该集群的第一个节点):
    ceph-deploy new ceph01
    
    4. 在该目录下生成了新集群的一些配置文件。接下来需要对这些配置文件做一些改动:

    vim /opt/ceph-deploy/ceph.conf
    在 global 中增加:

    public network = 10.10.10.0/24
    
    5. 安装 ceph:
    ceph-deploy install ceph01 ceph02 ceph03
    
    6. 初始化 ceph monitor:
    ceph-deploy mon create-initial
    

    当前命令执行以后,可以在当前目录下发现许多的 keyring 文件,这是连接其它节点的凭据。以后的 ceph-deploy 命令均在当前目录下执行才可正常使用。

    7. 同步配置文件

    将当前临时文件夹下的配置文件同步到所有节点的 /etc/ceph/ 下

    ceph-deploy admin ceph01 ceph02 ceph03
    
    8. 安装 ceph mgr
    ceph-deploy mgr create ceph01
    
    9. 安装 ceph mds
    ceph-deploy mds create ceph01
    
    10. 为集群增加 osd

    我这个环境有三台虚拟机,每台虚拟机上有额外2块硬盘用于 ceph 集群,它们是 sdb、sdc。这个要根据自己的环境找到正确的硬盘。

    命令参考如下:

    ceph-deploy osd create --data /dev/sdb ceph01
    ceph-deploy osd create --data /dev/sdc ceph01
    ceph-deploy osd create --data /dev/sdb ceph02
    ceph-deploy osd create --data /dev/sdc ceph02
    ceph-deploy osd create --data /dev/sdb ceph03
    ceph-deploy osd create --data /dev/sdc ceph03
    

    其中/dev/sdb ceph01,表示 ceph01 节点上的 /dev/sdb 硬盘。

    命令执行完以后,基础的环境就算搭建完成了。可以执行如下命令查看集群的状态:
    ceph 健康: ceph health
    ceph 集群详细状态:ceph -s
    ceph 集群 osd 状态:ceph osd tree

    image.png

    至此,该集群还处于一个基础的状态,并不能正常使用。

    接下来需要配置 ceph pool 相关信息,以及安装配置 rgw 从而使用对象存储功能。

    11. 配置 ceph pool

    vim /opt/ceph-deploy/ceph.conf
    在 global 中增加如下:

    osd pool default size = 3
    osd pool default min size = 2
    osd pool default pg_num = 128
    osd pool default pgp_num = 128
    

    其中 pg num 需要计算得出,pgp num 与 pg num 保持一致。

    粗略的计算方法:
    ( osd 数量 * 100 ) / 池副本数。

    同步配置文件:

    ceph-deploy --overwrite-conf admin ceph01 ceph02 ceph03
    
    12. 安装配置 rgw

    vim /opt/ceph-deploy/ceph.conf
    增加如下内容:

    [client]
    rgw frontends = civetweb port=17480
    

    整体配置如下:


    image.png

    安装 rgw:

    ceph-deploy --overwrite-conf rgw create ceph01
    
    基础安装结束

    至此,我们可以去创建一个 pool,并上传文件测试集群了。

    这个时候执行 ceph -s
    可以看到集群报了 warn 信息,如下:


    image.png

    这不是因为我们哪里配置有问题,这是 ceph 的某个告警配置。当某个 osd 的 pg 小于 30 时会发出告警。现在可以忽略这个问题。ceph 提供这个配置,可能是担心集群在未来使用中出现 pg 分布不均匀的情况。
    参考:
    https://docs.ceph.com/docs/master/rados/configuration/pool-pg-config-ref/

    简单使用对象存储功能

    查看池列表:ceph osd lspools

    ceph 默认的池已经创建一些 pg。为了解决前面的告警,我们需要满足每个 osd 都有超过30个 pg,因此创建一个具有80个 pg 的池。

    1. 创建池:
    # 创建池
    ceph osd pool create mytest 80
    
    # 初始化池为 rgw 使用的池
    ceph osd pool application enable mytest rgw
    

    (此时用 ceph -s 可以看到集群状态又是 HEALTH_OK 了)

    1. 生成要上传的文件
    echo 1234 > /tmp/testfile.txt
    
    1. 上传文件到池中

    命令参考:

    rados put {object-name} {file-path} --pool=mytest
    
    rados put test-object-1 /tmp/testfile.txt --pool=mytest
    
    1. 查看池
    rados ls -p mytest
    

    可以看到文件已经上传上去了,并且叫 test-object-1


    image.png
    1. 下载文件

    rados get test-object-1 /tmp/test-object-1 -p mytest


    image.png

    可以看到两个文件的内容是一样的,到此,基本的部署及使用均正常了。

    扩展

    关于 hostname

    在 ceph 中,hostname 是一个非常重要的属性。

    hostname 命令只可以临时改变当前主机的主机名,并不会永久生效。

    目前已知两种方式会永久影响主机名。

    1. /etc/hostname 中存储着默认的主机名。

    2. /etc/hosts 中存储着对应地址使用的主机名。

    第一种情况,很直观,不再多做介绍。

    第二种情况时:

    10.10.10.31 ceph01 
    

    这样的配置,会让通过 10.10.10.31 地址访问进来的连接所识别到的主机名改为 ceph01。

    在本环境中,不同的 ceph 节点之间通过 10.10.10.0/24 地址进行通信,所以只需要为该地址配置主机名。

    在 ceph 中,如果主机名混乱,会发生什么?
    ceph osd tree 这个命令可以让你看到主机名混乱带来的后果:

    image.png

    如果糟糕的事情已经发生了,我们只需要修改好主机名,然后重启机器,一切都会恢复正常:


    image.png

    第一种方式的优先级高于第二种。
    因此只需要更改 /etc/hostname 即可。文件内容参考如下:


    参考

    相关文章

      网友评论

          本文标题:ceph(第二步) 三节点部署(ceph-deploy)

          本文链接:https://www.haomeiwen.com/subject/watrectx.html