• 简单的介绍


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
运行成功后会出现以下的文件

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJpY19zdW5haA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

    • 创建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參号码

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

Centos6.5下一个Ceph存储集群结构的更多相关文章

  1. Ceph 存储集群 - 搭建存储集群

    目录 一.准备机器 二.ceph节点安装 三.搭建集群 四.扩展集群(扩容)   一.准备机器 本文描述如何在 CentOS 7 下搭建 Ceph 存储集群(STORAGE CLUSTER). 一共4 ...

  2. Ceph 存储集群 - 搭建存储集群---教程走到osd激活这一步执行不下去了,报错

    目录 一.准备机器 [1. 修改主机名](所有节点)(https://www.cnblogs.com/zengzhihua/p/9829472.html#1-修改主机名) [2. 修改hosts文件] ...

  3. 002.RHCS-配置Ceph存储集群

    一 前期准备 [kiosk@foundation0 ~]$ ssh ceph@serverc #登录Ceph集群节点 [ceph@serverc ~]$ ceph health #确保集群状态正常 H ...

  4. Ceph 存储集群搭建

    前言 Ceph 分布式存储系统,在企业中应用面较广 初步了解并学会使用很有必要 一.简介 Ceph 是一个开源的分布式存储系统,包括对象存储.块设备.文件系统.它具有高可靠性.安装方便.管理简便.能够 ...

  5. Ceph 存储集群5-数据归置

    一.数据归置概览 Ceph 通过 RADOS 集群动态地存储.复制和重新均衡数据对象.很多不同用户因不同目的把对象存储在不同的存储池里,而它们都坐落于无数的 OSD 之上,所以 Ceph 的运营需要些 ...

  6. Ceph 存储集群4-高级运维:

    一.高级运维 高级集群操作主要包括用 ceph 服务管理脚本启动.停止.重启集群,和集群健康状态检查.监控和操作集群. 操纵集群 运行 Ceph 每次用命令启动.重启.停止Ceph 守护进程(或整个集 ...

  7. Ceph 存储集群2-配置:心跳选项、OSD选项、存储池、归置组和 CRUSH 选项

    一.心跳选项 完成基本配置后就可以部署.运行 Ceph 了.执行 ceph health 或 ceph -s 命令时,监视器会报告 Ceph 存储集群的当前状态.监视器通过让各 OSD 自己报告.并接 ...

  8. Ceph 存储集群1-配置:硬盘和文件系统、配置 Ceph、网络选项、认证选项和监控器选项

    所有 Ceph 部署都始于 Ceph 存储集群.基于 RADOS 的 Ceph 对象存储集群包括两类守护进程: 1.对象存储守护进程( OSD )把存储节点上的数据存储为对象: 2.Ceph 监视器( ...

  9. Ceph 存储集群第一部分:配置和部署

    内容来源于官方,经过个人实践操作整理,官方地址:http://docs.ceph.org.cn/rados/ 所有 Ceph 部署都始于 Ceph 存储集群. 基于 RADOS 的 Ceph 对象存储 ...

随机推荐

  1. 基于WEB 的认证防火墙的设计

    项目要求: 1.  采用Linux iptbles作为接入防火墙,默认放行所以访问入口的80端口 2.  访问者通过http://x.x.x.x 访问防火墙的认证系统,进行账号的登陆操作,同时系统对用 ...

  2. c#抓取动态页面WebBrowser

    在ajax横行的年代,很多网页的内容都是动态加载的,而我们的小爬虫抓取的仅仅是web服务器返回给我们的html,这其中就 跳过了js加载的部分,也就是说爬虫抓取的网页是残缺的,不完整的,下面可以看下博 ...

  3. codechef Sums in a Triangle题解

    Let's consider a triangle of numbers in which a number appears in the first line, two numbers appear ...

  4. AIX常用命令略记

    ■ 初始化端末时可能需要确认服务器端和端末时间是否匹配 ●cal 显示日历 ●date 显示服务前当前时间 ■    显示当前目录,即显示当前所在目录的adress ●pwd(print workin ...

  5. Kiwi Syslog server 日志服务器搭建

    Kiwi syslog server 是一款很不错的日志服务器软件,安装过程就不多说,Linux 服务器日志由于本身就是syslog的,所以不用转换,但是windows 系统的日志格式是event形式 ...

  6. Django写的投票系统2(转)

    在上一篇中 django实例:创建你的第一个应用投票系统(一) 已经介绍基本的功能,并已经启动服务了.这一节介绍数据库相关的东东. 首页打开mysite/settings.py配置文件, 设置数据库打 ...

  7. Mvc 异常处理 ajax的 和 不是ajax的!

    using ImageUpload.Auth; using System; using System.Collections.Generic; using System.Linq; using Sys ...

  8. Spring框架简单介绍

    原文地址:  http://my.oschina.net/myriads/blog/37922 1.使用框架的意义与Spring的主要内容 随着软件结构的日益庞大,软件模块化趋势出现,软件开发也须要多 ...

  9. 十分钟搞懂什么是CGI(转)

    原文:CGI Made Really Easy,在翻译的过程中,我增加了一些我在学习过程中找到的更合适的资料,和自己的一些理解.不能算是严格的翻译文章,应该算是我的看这篇文章的过程的随笔吧. CGI真 ...

  10. 两个实验操作系统-ubuntu在安装配置pintos

    安前两次莫名其妙, 蛋疼的实验操作系统.. 首先下错了总结第一次. 使用最后gdb调试pintos什么时候, 这个错误将被报告: bochsrc.txt:8: Bochs is not compile ...