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硬盘的吞吐量总和不超过客户端读取或写入数据所需的网络带宽。你也应该考虑在每个主机上数据的存储率。如果一个特定的主机上的百分比较大,它可能会导致问题:为了防止数据丢失,会导致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用户,并且密码都设置为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用户,生成 无密码的SSH key,并拷贝到每个节点上

    [[email protected] 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 [email protected]

    The key's randomart image is:

    +--[ RSA 2048]----+

    | .               |

    |  +              |

    | . o             |

    |  E .  .         |

    |     .. S        |

    |  .o o.          |

    |o.+.+. o .       |

    |o+o..oo o        |

    |..+*+o..         |

    +-----------------+

拷贝到每个节点

    ssh-copy-id [email protected]
    ssh-copy-id [email protected]
    ssh-copy-id [email protected]
    • 存储集群

      • 创建集群

在deploy节点上创建配置目录,下面的所有deploy节点上的操作都在该目录进行

        mkdir my-cluster
        cd my-cluster
      • 部署失败

如果部署失败了可以用下面的命令恢复

        ceph-deploy purgedata {ceph-node} [{ceph-node}]
        ceph-deploy forgetkeys
      • 创建一个集群

在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参数

时间: 2024-08-03 20:00:06

Centos6.5下Ceph存储集群的搭建的相关文章

在rhel7中的ceph存储集群搭建的具体步骤

ceph是一种可以提供存储集群服务的软件 它可以实现将主机做成存储集群,并提供分布式文件存储的功能 ceph服务可以提供三种存储方式: 1.块存储 2.对象存储 2.文件系统存储 这里我将介绍如何使用ceph搭建一个存储集群: 环境介绍: node1 node2 node3 这三台主机作为存储集群服务器,分别都有3块10G的硬盘,并且我会将node1及作为存储服务器也作为管理主机(管理存储服务器的服务器) 将client作为访问的客户端 node1 node2 node3这第三台服务器要配置NT

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

一.准备机器 本文描述如何在 CentOS 7 下搭建 Ceph 存储集群(STORAGE CLUSTER). 一共4台机器,其中1个是管理节点,其他3个是ceph节点: hostname ip role 描述 admin-node 192.168.0.130 ceph-deploy 管理节点 node1 192.168.0.131 mon.node1 ceph节点,监控节点 node2 192.168.0.132 osd.0 ceph节点,OSD节点 node3 192.168.0.133 o

Ceph 存储集群-低级运维

低级集群运维包括启动.停止.重启集群内的某个具体守护进程:更改某守护进程或子系统配置:增加或拆除守护进程.低级运维还经常遇到扩展.缩减 Ceph 集群,以及更换老旧.或损坏的硬件. 一.增加/删除 OSD 如果您的集群已经在运行,你可以在运行时添加或删除 OSD . 增加 OSD 你迟早要扩容集群, Ceph 允许在运行时增加 OSD .在 Ceph 里,一个 OSD 一般是一个 ceph-osd 守护进程,它运行在硬盘之上,如果你有多个硬盘,可以给每个硬盘启动一个 ceph-osd 守护进程.

Centos6.5下安装Mysql集群

安装要求:       安装环境:Centos6.5       安装方式:源码安装       软件名称: mysql-cluster-gpl-7.2.26-linux2.6-x86_64.tar.gz       软件安装位置:/usr/local/mysql       数据存放位置:/var/mysql/data       日志存放位置:/var/mysql/logs 集群设计:      首先设计集群的安装分配方式,至少需要三台服务器,sql节点和数据节点可以放在同一台服务器上,服务

ceph存储集群实战(4)——ceph存储配置(映射RBD镜像到客户端)

块设备(rbd)     1.块设备可以应用为:         1.作为额外的磁盘使用         2.可以作为裸设备使用         3.可以格式化成文件系统,然后挂载给虚拟机或者物理服务器使用          2.创建块设备(可以在任意一台ceph节点上创建)     下面的命令创建一个名为ceph-client1-rbd1.大小为10G的RBD设备     [[email protected] ~]# rbd create ceph-client1-rbd1 --size 10

CENTOS6.6下redis3.2集群搭建

本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn [参考:]http://blog.csdn.net/zhu_tianwei/article/details/44928779 Redis3.0 最大的特点就是有了cluster的能力,使用redis-trib.rb工具可以轻松构建Redis Cluster.Redis Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接.节点之

Ceph 存储集群4-运维:

一.高级运维 高级集群操作主要包括用 ceph 服务管理脚本启动.停止.重启集群,和集群健康状态检查.监控和操作集群. 操纵集群 运行 Ceph 每次用命令启动.重启.停止Ceph 守护进程(或整个集群)时,你必须指定至少一个选项和一个命令,还可能要指定守护进程类型或具体例程. {commandline} [options] [commands] [daemons] ceph 命令的选项包括:

redis分片存储集群的搭建

环境说明: twemproxy 192.168.0.112:22122 centos6.5 redis 192.168.0.113:6379 centos6.5 redis 192.168.0.113:6380 centos6.5 twemproxy安装: [[email protected] src]# tar -zxf nutcracker-0.4.0.tar.gz  [[email protected] src]# cd nutcracker-0.4.0 [[email protected

基于redhat7.3 ceph对象存储集群搭建+owncloud S3接口整合生产实践

一.环境准备 安装redhat7.3虚拟机四台 在四台装好的虚拟机上分别加一块100G的硬盘.如图所示: 3.在每个节点上配置主机名 4.集群配置信息如下 admin-node node1 node2 node3 192.168.42.110 192.168.42.111 192.168.42.112 192.168.42.113 deploy.osd*1 mon*1.osd*1. rgw*1.mds*1 mon*1.osd*1 mon*1.osd*1 5.各节点配置yum源 #需要在每个主机上