分布式文件系统Ceph

  1. 概述node

  从本篇文章开始介绍一款如今很是火的分布式文件系统Ceph,包括这款文件系统的安装、基本使用场景、经常使用管理命令和重要工做原理。特别是讨论了PaxOS算法的基本理后,就更容易理解Ceph分布式文件系统中各类角色的工做原理。算法

  2. Ceph的安装部署vim

  本文将介绍Ceph分布式文件系统如何在CentOS 7.X版本上一步一步完成安装,使读者在阅读过程当中了解Ceph有哪些重要的子系统/工做模块,以及它们是如何关联工做的。请注意Ceph在Ubuntu等Linux操做系统上的安装过程和注意点大体相同,但若是读者和笔者一样选择在CentOS上安装Ceph,那么就请使用CentOS 7.X的版本,由于这个版本是Ceph官方介绍中推荐的,更重要的是CentOS 6.X已经不受支持了。缓存

  2-1. 准备工做网络

  本文的演示中咱们将按照如下表格安装一个三节点的Ceph分布式文件系统,并绑定一个文件系统的客户端进行文件读写操做。ssh

节点 IP地址 角色说明
vmnode1 172.16.71.182 MDN、MDS、OSD
vmnode2 172.16.71.183 MDN、MDS、OSD
vmnode3 172.16.71.184 MDN、MDS、OSD
client 172.16.71.1 Client 分布式

  以上表格中的角色缩写若是目前看不懂也无所谓,在后续的安装介绍中咱们将说明这些功能角色的做用。Ceph的安装准备工做相对而言有一些繁琐,若是每个节点都是全新的操做系统,那么这些节点至少须要通过建立用户、设置用户无密码登陆权限、变动Ceph下载仓库、更新软件仓库等工做才能完成准备动做。其过程当中每每会出现一些错误,须要在安装过程当中耐心解决,下面咱们就开始Ceph安装前的准备工做。工具

  2-1-1. 关于用户测试

  不管是测试环境仍是正式环境,安装Ceph都不建议使用root帐号。因此第一步咱们须要专门建立一个用户和用户组,并为这个用户给定管理员权限。咱们建立一个用户组ceph和一个专门用来运行Ceph各个模块的用户,用户名也叫作cephui

  [......]# groupadd ceph

  [......]# useradd ceph -g ceph

  [......]# passwd ceph

  // 修改为你想要的密码

  ......123456123456

  记得为用户设置root权限,既是在sudoers文件中加入相关配置信息:

  [......]# vim /etc/sudoers

  // 加入ceph的sudo权限

  ......

  root ALL=(ALL) ALL

  ceph ALL=(ALL) NOPASSWD:ALL

  ......12345671234567

  参与Ceph构建的每一个节点都要设置相同的用户信息,而且设置该用户在各个节点间的无密码登陆功能——这是由于后面Ceph-deploy的工做过程当中,将登陆到各个节点上执行命令。

  [ceph@vmnode1 ~]$ ssh-keygen

  // 操做系统会出现一些提示,回车就好了

  [ceph@vmnode1 ~]$ cd ~/.ssh/

  [ceph@vmnode1 .ssh]$ cat ./id_rsa.pub >> ./authorized_keys

  // 必定要更改authorized_keys的访问权限,否则无密码登陆要失败

  [ceph@vmnode1 ~]$ chmod 600 ./authorized_keys

  // 将authorized_keys copy到你将要登陆的操做系统上,注意用户的home目录要作对应12345671234567

  关于无密码登陆的设置过程就再也不深刻讲解了,由于是很基本的ssh设置。主要原则就是保证authorized_keys文件的公钥记录信息和这个文件在几个节点间的一致性。若是后续有新的节点加入到Ceph集群中,而且也要承担MDS Follower角色的工做,则一样要设置这个新节点到各个节点的相互无密码登陆功能。

  2-1-2. 关于Ceph源和扩展组件

  Ceph官网的下载速度奇慢,这实际上不怪Ceph,缘由你们也都懂,呵呵。一个办法是设置国外的代理服务,有免费的,不过好用的仍是付费的。另外一个好消息是,Ceph有国内镜像,例如163的和aliyun的。根据笔者观察163的镜像同步要比aliyun的镜像同步及时,好比163的镜像中已经有rpm-hammer/ceph-deploy-1.5.37的下载,可是aliyun的镜像中最高版本只有ceph-deploy-1.5.36。经过如下环境变量的设置就可使用国内的镜像(这个过程不会影响后续的任何安装步骤):

  # 你也能够改为国内其它Ceph镜像

  export CEPH_DEPLOY_REPO_URL

  export CEPH_DEPLOY_GPG_URL

  另外Ceph的安装过程还须要至关的第三方组件依赖,其中一些第三方组件在CentOS yum.repo Base等官方源中是没有的(例如LevelDB),因此读者在安装过程当中会有必定的概率遇到各类依赖关系异常,并要求先行安装XXX第三方组件的提示(例如提示先安装liblevel.so)。虽然咱们后文将会介绍的Ceph辅助部署工具,Ceph-deploy的工做本质仍是经过yum命令去安装管理组件,可是既然CentOS yum.repo Base官方源中并无某些须要依赖的第三方组件,因此一旦遇到相似的组件依赖问题安装过程就无法自动继续了。解决这个问题,本示例中建议引入CentOS的第三方扩展源Epel。

  # 关于Epel 扩展源的引入这里不过作介绍了,网络上的资料一大把。这里给出一个“目前可用”(不保证多年后依然可用)的安装地址,以及安装后生成的repo配置片断(本示例中的第三方扩展源匹配CentOS 7.X操做系统)。

  http://dl.fedoraproject.org/p...

  # repo文件的名字叫作epel.repo

  [epel]

  name=Extra Packages for Enterprise Linux 7 - $basearch

  #baseurl$basearch

  mirrorlist=epel-7&arch=$basearch

  failovermethod=priority

  enabled=1

  gpgcheck=0

  gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

  ......123456789101112131415123456789101112131415

  为了保证扩展源中的组件与CentOS官方源中的组件不冲突,能够调低扩展源的优先级。固然读者也能够自行手动解决Ceph安装过程提示的组件依赖问题——使用rpm命令的方式。笔者试过,深入的体会到什么叫生不如死。。。

  设置仓库后,须要更新仓库缓存,以下:

  [......]$ yum makecache

  [......]$ yum update1212

  2-1-3. 关于物理磁盘

  Ceph是一种分布式文件系统,既然是文件系统,那么不管它的上层如何设计如何划分,始终须要对数据持久化存储进行落地。因此Ceph须要操做块存储设备(关于块存储的相关介绍,能够参看本专题最初的几篇文章),Ceph要求块存储设备的文件系统必须为XFS、BTRFS或者EXT4,且必须在操做系统上有独立挂载点。

  2-2. 正式安装

  Ceph的安装有两种方式,第一种是使用Ceph官方提供的Ceph-deploy(部署工具)进行安装,这种方式咱们须要首先yum Ceph-deploy,而后再使用Ceph-deploy提供的各类命令来安装Ceph的各个节点,但好处也很明显——Ceph的安装过程基本上是半自动化的,除了一些操做系统层面的问题须要解决外(例如用户对某个目录的读写权限设定错误,再例如防火墙的端口没有打开等等)整个过程还算比较顺利。另一种是全人工安装,除非你的操做系统存在特殊应用场景,或者有须要特别保护的组件须要进行独立设定,不然仍是建议使用前一种Ceph-deploy的方式。

  2-2-1. 安装Ceph-Deploy和Ceph软件自己

  首先安装ceph-deploy软件本省。请注意这个软件并非ceph工做的一部分,它只一个增长简便性的工具。

  ......

  [......]$ yum -y install ceph-deploy

  // NTP时钟同步服务

  [......]$ yum install -y ntp ntpdate ntp-doc

  //使用一个亚洲公用时间同步节点进行时间同步

  [......]$ ntpdate 0.asia.pool.ntp.org

  ......12345671234567

  只须要在某个节点上安装ceph-deploy就行,可是NTP服务是每个节点都要安装和进行同步,它主要是保证各节点的物理时钟同步。接下来咱们使用ceph-deploy工具在将要参与Ceph分布式文件系统的各个节点上,安装Ceph软件。注意,只是安装软件,并非说完成后就可让这些节点承担相应的工做职责了。如下命令只须要在安装了ceph-deploy的节点上执行就好了,ceph-deploy会帮助技术人员在指定的各个节点上使用yum命令安装ceph软件。接着使用如下命令在以上各个节点上正式安装Ceph软件:

  [ceph@vmnode1 ~]$ ceph-deploy install vmnode1 vmnode2 vmnode3

  // 命令格式为:

  ceph-deploy install {ceph-node}[{ceph-node} ...]123123

  安装Ceph软件的过程当中,有必定几率会出现各类警告信息。警告信息有的是能够忽略的,有的则是必须进行处理的。这些问题通常分为几类:镜像源和下载问题,依赖问题,权限问题。如何来处理这些问题,除了须要具有必定的玩转Linux系统的经验外,主要仍是细心,切忌急躁。

  2-2-2. 安装Ceph Monitor

  MON是Monitor的简称,字面意义为监控、监视。是的,它的做用是监控、管理和协调整个分布式系统环境中其它各个OSD/PG、Client、MDS角色的工做,保证整个分布环境中的数据一致性。注意,为了保证节点故障的状况下,整个Ceph分布式文件系统依然能够稳定工做,咱们必须设置多个MON角色。例如在本示例中,就设置参与Ceph分布式系统的三个节点上,都安装MON角色:

  // 更名了意味新的MON节点

  [ceph@vmnode1 ~]$ ceph-deploy new vmnode1 vmnode2 vmnode3

  // 命令格式为:

  ceph-deploy new {initial-monitor-node(s)}12341234

  以上命令运行后,ceph-deploy工具会在本节点生成一些文件,包括:

  ceph.conf

  ceph.log

  ceph.mon.keyring123123

  最重要的文件固然就是ceph.conf文件了(实际上ceph.mon.keyring也很重要),观察这个文件内容:

  [ceph@vmnode1 ~]$ cat ./ceph.conf

  [global]

  fsid = 50c157eb-6d74-4d7d-b8e8-959a7b855b55

  mon_initial_members = vmnode1, vmnode2, vmnode3

  mon_host = 172.16.71.182,172.16.71.183,172.16.71.184

  auth_cluster_required = cephx

  auth_service_required = cephx

  auth_client_required = cephx1234567812345678

  能够看到ceph.conf文件中已经设置好了咱们将要运行MON角色的三个节点信息。接下来咱们还须要在ceph.conf文件中增长一些信息,以下(后文还会详细讲解ceph中的重要参数):

  [ceph@vmnode1 ~]$ vim ./ceph.conf

  ......

  # 后续的文章会详细讲解ceph中重要的配置项

  osd pool default size = 2

  osd pool default min size = 2

  max open files = 655350

  cephx cluster require signatures = false

  cephx service require signatures = false

  ......123456789123456789

  接着使用如下命令,就能够在conf文件中已配置的MON节点上启动MON服务了(前提是,这些节点已经成功安装了Ceph软件):

  # 开始初始化运行mon节点。

  [ceph@vmnode1 ~]$ceph-deploy mon create-initial

  # 若是须要指定一些自定义的配置参数,能够采用以下格式(命令有详细的帮助信息)来启动

  [ceph@vmnode1 ~]$ceph-deploy --overwrite-conf --cluster ceph mon create-initial12341234

  每个Ceph分布式系统都会有一个名字,若是在建立MON时不给定这个名字就会默认为“ceph”。完成以上步骤后,ceph-deploy工具会在当前运行命令的目录下生成几个文件,这些文件都很是重要,请不要擅自改动。在随后的安装过程当中ceph-deploy工具将按需将这些文件复制到对应角色的对应目录中去。

相关文章
相关标签/搜索