• Centos6.5下一个Ceph存储集群结构


    • 简单的介绍


    Ceph的部署模式下主要包括下面几个类型的节点

    • Ceph OSDs: A Ceph OSD 进程主要用来存储数据,处理数据的replication,恢复,填充。调整资源组合以及通过检查其它OSD进程的心跳信息提供一些监控信息给Ceph Monitors . 当Ceph Storage Cluster 要准备2份数据备份时,要求至少有2个Ceph OSD进程的状态是active+clean状态 (Ceph 默认会提供两份数据备份).

    • Monitors: Ceph Monitor 维护了集群map的状态,主要包含monitor map, OSD map, Placement Group (PG) map, 以及CRUSH map. Ceph 维护了 Ceph Monitors, Ceph OSD Daemons, 以及PGs状态变化的历史记录 (called an “epoch”).

    • MDSs: Ceph Metadata Server (MDS)存储的元数据代表Ceph的文件系统 (i.e., Ceph Block Devices 以及Ceph Object Storage 不适用 MDS). Ceph Metadata Servers 让系统用户能够运行一些POSIX文件系统的基本命令,比如ls,find 等.

    • 硬件的选择


    CPU

    Ceph metadata server会动态的又一次分配负载,它是CPU敏感性的,所以Metadata Server应该有比較好的处理器性能 (比方四核CPU). 
    Ceph OSDs执行RADOS服务,须要通过CRUSH来计算数据的存放位置,replicate数据,以及维护Cluster Map的拷贝。因此OSD也须要合适的处理性能
    Ceph Monitors 简单的维护了Cluster Map的主干信息所以这个是CPU不敏感的. 

    RAM

    Metadata servers 以及Monitors 必须可以高速的提供数据。因此必须有充足的内存(e.g., 1GB of RAM per daemon instance). 
    OSDs 在运行正常的操作时不须要过多的内存 (e.g., 500MB of RAM per daemon instance);可是 运行恢复操作时,就须要大量的内存(e.g., ~1GB per 1TB of storage per daemon). Generally, 并且是越多越好.

    Data Storage


    规划数据存储时要考虑成本和性能的权衡。同一时候OS操作。同一时候多个后台程序对单个驱动器进行读写操作会显着减少性能。

    也有文件系统的限制考虑:BTRFS对于生产环境来说不是非常稳定。但有能力记录journal和并行的写入数据,而XFS和EXT4会好一点。



    其它注意事项

    您能够在每台主机上执行多个OSD进程。但你应该确保OSD硬盘的吞吐量总和不超过client读取或写入数据所需的网络带宽。你也应该考虑在每一个主机上数据的存储率。假设一个特定的主机上的百分比較大,它可能会导致问题:为了防止数据丢失,会导致Ceph停止操作。

    当您执行每台主机上执行多个OSD进程时。你还须要保证内核是最新的。

    当您执行每台主机上执行多个OSD进程时(如>20)会产生非常多的线程,特别是进行recovery和relalancing操作。很多Linux内核默认线程限最大数量比較小(比如,32k的)。假设您遇到这方面的问题,能够考虑把kernel.pid_max设置的高一点。理论上的最大值为4,194,303。


    Networks


    我们建议每一个主机至少有两个1Gbps的网络接口控制器(NIC)。因为大多数硬盘驱动器的吞吐量大约为100MB/秒,你的网卡应该可以处理OSD主机上磁盘的流量。

    我们建议至少两个NIC一个作为公共的网络和一个作为集群的网络。

    集群网络(最好是未连接到互联网)处理数据replication,并帮助阻止拒绝服务攻击(阻止active+clean状态的PG跨集群复制数据)。考虑開始在你的机架中使用10Gbps网络。通过1Gbps的网络复制1TB的数据须要3个小时,3TBs(一个典型的驱动器配置)须要9个小时。相比之下,具有10Gbps的网络中,复制时间就分别为20分钟至1小时。

    • 部署


    部署主要在四个节点上进行
    IP hostname 描写叙述
    192.168.40.106 dataprovider 部署管理节点
    192.168.40.107
    mdsnode MDS。MON节点
    192.168.40.108
    osdnode1 OSD节点
    192.168.40.148
    osdnode2
    OSD节点

      • Ceph 部署节点

        • 编辑repo文件

                        sudo vim /etc/yum.repos.d/ceph.repo
            [ceph-noarch]
    
            name=Ceph noarch packages
    
            baseurl=http://ceph.com/rpm-{ceph-release}/{distro}/noarch
    
            enabled=1
    
            gpgcheck=1
    
            type=rpm-md
    
            gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc
        • 安装ceph-deploy

    sudo yum install ceph-deploy
        • 编辑/etc/hosts

    在/etc/hosts文件里改成例如以下内容
            #127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    
            127.0.0.1   dataprovider
    
            192.168.40.107   mdsnode
    
            192.168.40.108   osdnode1
    
            192.168.40.148   osdnode2
    
            ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    
      • Ceph Node Setup

    每一个节点都运行以下的命令
        yum install -y ntp ntpdate ntp-doc
        yum install -y openssh-server
        • 创建专用的用户

    为了使用简单。在每一个节点上都创建leadorceph用户,而且password都设置为leadorceph
            sudo useradd -d /home/leadorceph -m leadorceph
    
            sudo passwd leadorceph
        • 在每一个Ceph节点中为用户添加 root 权限

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

    配置正确会出现例如以下截图

      • Enable Password-less SSH


    在deploy节点上切换到leadorceph用户,生成 无password的SSH key,并复制到每一个节点上
        [leadorceph@dataprovider root]$ ssh-keygen
    
        Generating public/private rsa key pair.
    
        Enter file in which to save the key (/home/leadorceph/.ssh/id_rsa):
    
        Created directory '/home/leadorceph/.ssh'.
    
        Enter passphrase (empty for no passphrase):
    
        Enter same passphrase again:
    
        Your identification has been saved in /home/leadorceph/.ssh/id_rsa.
    
        Your public key has been saved in /home/leadorceph/.ssh/id_rsa.pub.
    
        The key fingerprint is:
    
        a8:fb:b8:3a:bb:62:dc:25:a6:58:7b:9d:97:00:30:ec leadorceph@dataprovider
    
        The key's randomart image is:
    
        +--[ RSA 2048]----+
    
        | .               |
    
        |  +              |
    
        | . o             |
    
        |  E .  .         |
    
        |     .. S        |
    
        |  .o o.          |
    
        |o.+.+. o .       |
    
        |o+o..oo o        |
    
        |..+*+o..         |
    
        +-----------------+


    复制到每一个节点
        ssh-copy-id leadorceph@mdsnode
        ssh-copy-id leadorceph@osdnode1
        ssh-copy-id leadorceph@osdnode2
      • 存储集群

        • 创建集群

    在deploy节点上创建配置文件夹,以下的全部deploy节点上的操作都在该文件夹进行
            mkdir my-cluster
            cd my-cluster
        • 部署失败

    假设部署失败了能够用以下的命令恢复
    假设要是整个环境又一次安装的话,dataprovider也要进行purge操作
    ceph-deploy purge {ceph-node} [{ceph-node}]
    ceph-deploy purgedata {ceph-node} [{ceph-node}]
    ceph-deploy forgetkeys
    假设删除的是osd节点。还须要删除osd的数据文件夹。然后再又一次创建相应的文件夹

    
    
        • 创建一个集群

    在admin node 上用ceph-deploy创建集群。new后面跟的是mds节点的hostname
    ceph-deploy new mdsnode

    运行成功后该文件夹下会添加三个文件


        • 改动默认的副本数为2

    改动ceph.conf。使osd_pool_default_size的值为2

        • 開始安装

    ceph-deploy install deploynode mdsnode osdnode1 osdnode2

    成功安装:


      • 创建 Ceph MON 集群监视器

    在deploy上依次运行以下的命令
        ceph-deploy mon create-initial
    
        ceph-deploy mon create mdsnode
    
        ceph-deploy gatherkeys mdsnode


    运行成功后会出现以下的文件



      • 创建OSD节点

    为了达到高速演示的效果。OSD后台进程使用文件夹而非独立的磁盘,分别在两个osd节点上创建文件夹
        ssh osdnode1
    
        sudo mkdir /var/local/osd0
    
        exit
    
        ssh osdnode2
    
        sudo mkdir /var/local/osd1
    
        exit
    
        • 准备osd节点

                ceph-deploy osd prepare osdnode1:/var/local/osd0 osdnode2:/var/local/osd1
    
                ceph-deploy osd activate osdnode1:/var/local/osd0 osdnode2:/var/local/osd1
        • 拷贝配置文件以及key文件

    ceph-deploy admin dataprovider mdsnode osdnode1 osdnode2
        • 确保ceph.client.admin.keyring.有正确的权限

          sudo chmod +r /etc/ceph/ceph.client.admin.keyring 
        • 查看集群状态




    • 问题总结

      • 问题1 

    问题描写叙述:[ceph_deploy][ERROR ] RuntimeError: remote connection got closed, ensure ``requiretty`` is disabled for mdsnode
    解决方法: 须要在mdsnode,osdnode1,osdnode2三个节点中使用leadorceph用户的身份运行sudo visudo命令,然后改动
    Defaults requiretty 为Defaults:ceph !requiretty

      • 问题2

        运行ceph-deploy admin命令的时候出现以下的异常


    解决的方法
    1 改动/usr/lib/python2.6/site-packages/ceph_deploy/hosts/centos/install.py 文件取消install的运行。改动方式例如以下:

    2 运行的时候加上--repo參号码

    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    vivo手机上的系统级消息推送平台的架构设计实践
    基于Netty,从零开发IM(二):编码实践篇(im单聊功能)
    基于Netty,从零开发IM(三):编码实践篇(群聊功能)
    【前端】Windows升级nodejs到最新版本
    【Nginx】Linux上安装Nginx详细教程(保姆级教程)
    【MySQL】在Win10上安装MySQL压缩包安装版
    【SQL】批量操作:批量插入、删除
    【SQL】查询存在于一个表而不存在于另外一个表的数据
    Java开发学习(十)基于注解开发定义bean
    Java开发学习(十一)基于注解开发bean作用范围与生命周期管理
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4852281.html
Copyright © 2020-2023  润新知