当前位置: 首页 > Web前端 > CSS

分布式文件系统Ceph

时间:2023-03-30 23:39:47 CSS

1.概述  本文开始介绍Ceph这个非常流行的分布式文件系统,包括这个文件系统的安装、基本使用场景、常用管理命令和重要任务原理。尤其是讨论完PaxOS算法的基本原理后,更容易理解Ceph分布式文件系统中各个角色的工作原理。  2。Ceph安装部署  本文将介绍如何在CentOS7.X版本上一步步安装Ceph分布式文件系统,让读者在阅读过程中了解Ceph的重要子系统/工作模块,以及如何他们一起工作。请注意,Ceph在Ubuntu和其他Linux操作系统上的安装过程和注意点大致相同,但是如果读者和笔者也选择在CentOS上安装Ceph,那么请使用CentOS7.X版本,因为这个版本是Ceph官方推荐推荐的,更重要的是不再支持CentOS6.X。  2-1。准备  在本文的演示中,我们将按照下表安装一个三节点的Ceph分布式文件系统,并绑定一个文件系统客户端来读写文件。节点IP地址角色描述vmnode1172.16.71.182MDN,MDS,OSDvmnode2172.16.71.183MDN,MDS,OSDvmnode3172.16.71.184MDN,MDS,OSDclient172.16.71.1Client看不懂没关系,我们来讲解这些功能角色的作用在后续的安装介绍中。Ceph的安装准备工作比较繁琐。如果每个节点都是全新的操作系统,那么这些节点至少要经历创建用户、设置用户无密码登录权限、更改Ceph下载仓库、更新软件仓库等工作。完成准备动作。过程中经常会出现一些错误,需要在安装过程中耐心解决。下面开始Ceph安装前的准备工作。  2-1-1。关于用户  无论是测试环境还是正式环境,都不建议使用root账号安装Ceph。所以第一步,我们需要专门创建一个用户和用户组,并赋予这个用户管理员权限。我们创建一个用户组ceph和一个专门运行Ceph各个模块的用户。用户名也叫ceph  [...]#groupaddceph  [...]#useraddceph-gceph  […]#passwdceph  //改成你想要的密码  ......123456123456  记得给用户设置root权限,就是添加相关的配置信息:  ...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~]$chmod600./authorized_keys  //将authorized_keys复制到你即将登录的操作系统中,注意用户家目录对应12345671234567  。无密码登录的设置过程我就不细说了,因为是很基础的ssh设置。主要原则是保证authorized_keys文件的公钥记录信息与本文件在多个节点间的一致性。如果后续有新的节点加入到Ceph集群中,也承担了MDSFollower的角色,那么也需要设置这个新节点到各个节点的互免密码登录功能。  2-1-2。关于Ceph源码和扩展组件  Ceph官网下载速度极慢。其实这也不能怪Ceph,道理大家都懂,哈哈。一种方法是设置国外代理服务。有免费的,但是好用的还是要付费的。另外一个好消息是Ceph有国内的镜像,比如163的和阿里云的。据笔者观察,163的镜像同步比阿里云的更及时。比如rpm-hammer/ceph-deploy-1.5.37已经在163的镜像下载了,但是aliyun的镜像最高版本只有ceph-deploy-1.5。36.国内镜像可以通过设置如下环境变量使用(这个过程不会影响后面的任何安装步骤):  #你也可以换成其他国内Ceph镜像  exportCEPH_DEPLOY_REPO_URL  exportCEPH_DEPLOY_GPG_URL  另外,Ceph的安装过程还需要相当多的第三方组件依赖,其中一些在CentOSyum.repoBase等官方源中是没有的(比如LevelDB),所以读者可能会遇到各种依赖异常,并提示先安装XXX第三方组件(如提示先安装liblevel.so)。虽然我们后面会介绍的Ceph辅助部署工具,Ceph-deploy的本质是通过yum命令来安装管理组件,但是由于CentOS官方源码yum.repoBase没有一些第三方组件需要被依赖,所以一旦遇到类似的组件依赖问题,安装过程将无法自动继续。为了解决这个问题,本例中推荐引入CentOS的第三方扩展源Epel。  #Epel扩展源的介绍这里只是介绍一下,网上的资料很多。这里是一个“当前可用”(不保证多年可用)的安装地址,以及安装后生成的repo配置片段(本例中的第三方扩展源匹配CentOS7.X操作系统)。  http://dl.fedoraproject.org/p...  #repo文件的名称是epel.repo  [epel]  name=ExtraPackagesforEnterpriseLinux7-$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官方源不冲突,可以降低扩展源的优先级。当然,读者也可以通过rpm命令手动解决Ceph安装过程中提示的组件依赖问题。笔者试了试,深深体会到什么叫生不如死。..  设置好仓库后,需要更新仓库缓存,如下:  […]$yummakecache  […]$yumupdate1212  2-1-3关于物理磁盘  Ceph是一个分布式文件系统。既然是文件系统,不管它的上层怎么设计,怎么划分,总要实现数据的持久化存储。因此,Ceph需要对块存储设备进行操作(块存储的介绍请参考本主题前几篇文章),Ceph要求块存储设备的文件系统必须是XFS、BTRFS或EXT4,并且必须有一个独立的挂载点。  2-2。正式安装  Ceph可以通过两种方式安装。第一种是使用Ceph官方提供的Ceph-deploy(部署工具)进行安装。这样,我们需要先yumCeph-deploy。然后使用Ceph-deploy提供的各种命令来安装Ceph的各个节点,不过好处也很明显——Ceph的安装过程基本上是半自动的,除了一些操作系统级别的问题需要解决(比如asuser某目录的读写权限设置错误,比如防火墙的端口没有打开等)整个过程比较顺利。另一种是手动安装。除非你的操作系统有特殊的应用场景,或者有需要特殊保护的组件需要独立设置,否则推荐使用前一种Ceph-deploy方式。  2-2-1。安装Ceph-Deploy和Ceph软件本身  首先安装ceph-deploy软件本身。请注意,此软件不是ceph工作的一部分,它只是一个增加便利性的工具。  ......  [...]$yum-yinstallceph-deploy  //NTP时钟同步服务  […]$yuminstall-yntpntpdatentp-doc  //使用亚洲公共时间同步节点进行时间同步  […]$ntpdate0.asia.pool.ntp.org  ......12345671234567  只需要在某个节点上安装ceph-deploy,但需要在每个节点上安装并同步NTP服务。节点的物理时钟是同步的。接下来,我们使用ceph-deploy工具在每个将参与Ceph分布式文件系统的节点上安装Ceph软件。注意,仅仅安装软件并不意味着这些节点完成后就可以承担相应的工作职责。下面的命令只需要在安装了ceph-deploy的节点上执行,ceph-deploy会帮助技术人员使用yum命令在每个指定的节点上安装ceph软件。然后使用以下命令在上述各节点上正式安装Ceph软件:  [ceph@vmnode1~]$ceph-deployinstallvmnode1vmnode2vmnode3  //命令格式为:  ceph-deployinstall{ceph-node}[{ceph-node}...]123123  在安装Ceph软件的过程中,有一定概率会出现各种警告信息。一些警告消息可以忽略,而另一些则必须处理。这些问题一般分为几类:镜像源和下载问题、依赖问题、权限问题。如何处理这些问题,除了要有一定的把玩linux系统的经验外,最主要的还是要细心,切忌急躁。  2-2-2。安装CephMonitor  MON是Monitor的缩写,字面意思是监控、监视。是的,它的作用就是监控、管理、协调整个分布式系统环境中其他OSD/PG、Client、MDS角色的工作,保证整个分布式环境中数据的一致性。注意,为了保证整个Ceph分布式文件系统在某个节点出现故障时仍能稳定工作,我们必须设置多个MON角色。例如本例中,在参与Ceph分布式系统的三个节点上都安装了MON角色:  //重命名表示新的MON节点  [ceph@vmnode1~]$ceph-deploynewvmnode1vmnode2vmnode3  //命令格式为:  ceph-deploynew{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  72.host16=.71.182,172.183.71.17。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中的重要配置项  osdpooldefaultsize=2  osdpooldefaultminsize=2  maxopenfiles=655350  cephxclusterrequiresignatures=false  cephxservicerequiresignatures=false  ......123456789123456789  然后使用如下命令在conf文件中配置的MON节点上启动MON服务(前提是这些节点已经成功安装了Ceph软件):  #开始初始化运行mon节点。  [ceph@vmnode1~]$ceph-deploymoncreate-initial  #如果需要指定一些自定义的配置参数,可以使用如下格式(命令有详细的帮助信息)启动  [ceph@vmnode1~]$ceph-deploy--overwrite-conf--clustercephmoncreate-initial12341234  每一个Ceph分布式系统都会有一个名字,如果在创建MON时没有给出这个名字,则默认为“ceph”。完成以上步骤后,ceph-deploy工具会在当前运行命令的目录下生成几个文件。这些文件非常重要,请不要擅自修改。在后续的安装过程中,ceph-deploy工具会根据需要将这些文件复制到对应角色对应的目录下。