设为首页 收藏本站
查看: 3050|回复: 0

[经验分享] ceph集群部署

[复制链接]

尚未签到

发表于 2019-2-1 13:54:13 | 显示全部楼层 |阅读模式
  最近在学习 kubernetes 过程中,想实现 pod 数据的持久化。在调研的过程中,发现 ceph 在最近几年发展火热,也有很多案例落地企业。在选型方面,个人更加倾向于社区火热的项目,GlusterFS、Ceph 都在考虑的范围之内,但是由于 GlusterFS 只提供对象存储和文件系统存储,而 Ceph 则提供对象存储、块存储以及文件系统存储。怀着对新事物的向往,果断选择 Ceph 来实现 Ceph 块存储对接 kubernetes 来实现 pod 的数据持久化。
  Red Hat Ceph所具备的强大功能可以改变您公司(或组织)的IT基础架构和管理海量数据的能力,特别是对于像RHEL OSP这样的云计算平台。Red Hat Ceph具有非常好的可扩展性——数以千计的客户端可以访问PB级到EB级甚至更多的数据。
  http://docs.ceph.com/docs/master/start/quick-ceph-deploy/#starting-over
  1  Ceph基础介绍
  Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。在虚拟化领域里,比较常用到的是Ceph的块设备存储,比如在OpenStack项目里,Ceph的块设备存储可以对接OpenStack的cinder后端存储、Glance的镜像存储和虚拟机的数据存储,比较直观的是Ceph集群可以提供一个raw格式的块存储来作为虚拟机实例的硬盘。
  Ceph相比其它存储的优势点在于它不单单是存储,同时还充分利用了存储节点上的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的良好设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且随着规模的扩大性能并不会受到影响。
   一、初始 Ceph
  1.1 了解什么是块存储/对象存储/文件系统存储?


  直接进入主题,ceph 目前提供对象存储(RADOSGW)、块存储RDB以及 CephFS 文件系统这 3 种功能。对于这3种功能介绍,分别如下:
        1.对象存储,也就是通常意义的键值存储,其接口就是简单的GET、PUT、DEL 和其他扩展,代表主要有 Swift 、S3 以及 Gluster 等;
      2.块存储,这种接口通常以 QEMU Driver 或者 Kernel Module 的方式存在,这种接口需要实现 Linux 的 Block Device 的接口或者 QEMU 提供的 Block Driver 接口,如 Sheepdog,AWS 的 EBS,青云的云硬盘和阿里云的盘古系统,还有 Ceph 的 RBD(RBD是Ceph面向块存储的接口)。在常见的存储中 DAS、SAN 提供的也是块存储;
    3.文件存储,通常意义是支持 POSIX 接口,它跟传统的文件系统如 Ext4 是一个类型的,但区别在于分布式存储提供了并行化的能力,如 Ceph 的 CephFS (CephFS是Ceph面向文件存储的接口),但是有时候又会把 GlusterFS ,HDFS 这种非POSIX接口的类文件存储接口归入此类。当然 NFS、NAS也是属于文件系统存储;
  2  Ceph的核心组件
  Ceph的核心组件包括Ceph OSD、Ceph Monitor和Ceph MDS。
  Ceph是一个分布式存储,可以提供对象存储、块存储和文件存储,其中对象存储和块存储可以很好地和各大云平台集成。一个Ceph集群中有Monitor节点、MDS节点(可选,用于文件存储)、至少两个OSD守护进程。
  Ceph OSD:OSD守护进程,用于存储数据、处理数据拷贝、恢复、回滚、均衡,并通过心跳程序向Monitor提供部分监控信息。一个Ceph集群中至少需要两个OSD守护进程。
  Monitor:维护集群的状态映射信息,包括monitor、OSD、Placement Group(PG)。还维护了Monitor、OSD和PG的状态改变历史信息。
  MDS:存储Ceph文件系统的元数据。
表 1. Ceph 术语
  名词
  解释
  RADOSGW
  对象网关守护进程。
  RBD
  块存储。
  CEPHFS
  文件存储。
  LIBRADOS
  和 RADOS 交互的基本库 librados。Ceph 通过原生协议和 RADOS 交互,Ceph 把这种功能封装进了 librados 库,这样你就能定制自己的客户端。
  RADOS
  存储集群
  OSD
  Object Storage Device。RADOS 的组件,用于存储资源
  Monitor
  监视器。RADOS 的组件,维护整个 Ceph 集群的全局状态。
  MDS
  Ceph 元数据服务器。为 Ceph 文件系统存储元数据。
[size=1.56]Ceph 常用命令
  [size=1.06]Ceph 客户端提供了非常丰富的命令用来操作块设备。在与容器对接过程中,我们需要创建块设备,删除块设备等功能,并且后续也需要针对这些功能提供相应的 REST API,方便通过 HTTP 请求的方式来操作块设备。所以这里对一些常用的命令进行说明,如表 2 所示。
表 2. Ceph 常用命令
  命令
  功能
  rbd create
  创建块设备映像
  rbd ls
  列出 rbd 存储池中的块设备
  rbd info
  查看块设备信息
  rbd diff
  可以统计 rbd 使用量
  rbd feature disable
  禁止掉块设备的某些特性
  rbd map
  映射块设备
  rbd remove
  删除块设备
  rbd resize
  更改块设备的大小
  查看各种Map的信息可以通过如下命令:ceph osd(mon、pg) dump
  环境说明
  主机名        IP地址                    角色
  node1        192.168.110.59    MON1+OSD1+MDS1+Deploy
  node2        192.168.110.62    MON2+OSD2
  node3        192.168.110.64    MON3+OSD3
  修改hosts(所有主机)
  vim /etc/hosts
  192.168.110.59  node1
  192.168.110.62  node2
  192.168.110.64  node3
  如果不写后面创建ceph会报错如下:(解析名一定要和主机名相同)

  关闭SeLinux(所有主机)
  sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  setenforce 0
  关闭防火墙(所有主机)
  systemctl disable firewalld
  systemctl stop firewalld
  配置NTP(所有主机)
  yum -y install ntp
  systemctl enable ntpd
  systemctl start ntpd
  systemctl disable chronyd
  ntpq -p
  添加Ceph的yum源(所有主机)
  yum clean all
  rm -rf /etc/yum.repos.d/*.repo
  wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  vim /etc/yum.repos.d/ceph.repo
  [Ceph]
  name=Ceph packages for $basearch
  baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/$basearch
  enabled=1
  gpgcheck=1
  type=rpm-md
  gpgkey=https://download.ceph.com/keys/release.asc
  [Ceph-noarch]
  name=Ceph noarch packages
  baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch
  enabled=1
  gpgcheck=1
  type=rpm-md
  gpgkey=https://download.ceph.com/keys/release.asc
  [ceph-source]
  name=Ceph source packages
  baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
  enabled=1
  gpgcheck=1
  type=rpm-md
  gpgkey=https://download.ceph.com/keys/release.asc
  yum makecache
  yum -y update
配置免密登陆(node1主机)
  ssh-keygen -t rsa -P ""
  ssh-copy-id 192.168.110.59
  ssh-copy-id 192.168.110.62
  ssh-copy-id 192.168.110.64
  在管理节点安装 ceph-deploy(node1)
  yum -y install ceph-deploy
  查看版本
  ceph-deploy --version
  在管理节点创建集群(node1)
  mkdir /etc/ceph
  cd /etc/ceph
  ceph-deploy new node1 node2 node3(hosts里的解析名和主机名一定要想相同,否则报错


  在管理节点上(node1),更改生成的 ceph 配置文件,添加以下内容
  vim ceph.conf
  #设置osd节点个数
  osd pool default size = 3
  #允许 ceph 集群删除 pool
  [mon]
  mon_allow_pool_delete = true
  在管理节点给所有节点安装ceph(node1)
  ceph-deploy  install node1 node2 node3
  配置初始monitor监视器,并收集秘钥(node1)
  ceph-deploy mon create-initial
  完成此过程后,您的本地目录应具有以下密钥环:

  •   ceph.client.admin.keyring
  •   ceph.bootstrap-mgr.keyring
  •   ceph.bootstrap-osd.keyring
  •   ceph.bootstrap-mds.keyring
  •   ceph.bootstrap-rgw.keyring
  •   ceph.bootstrap-rbd.keyring
  •   ceph.bootstrap-rbd-mirror.keyring
  注意 如果此过程失败并显示类似于“无法找到/etc/ceph/ceph.client.admin.keyring”的消息,请确保ceph.conf中为监控节点列出的IP是公共IP,而不是私有IP 。
  (node1)使用ceph-deploy将配置文件和管理密钥复制到您的管理节点和Ceph节点,这样您就可以使用ceph CLI而无需在每次执行命令时指定监视器地址和ceph.client.admin.keyring
  ceph-deploy admin  node1  node2  node3
  部署管理器守护程序: 仅适用于luminous+版本
  安装ceph-mgr(node1)
  ceph-deploy mgr create node1
  配置OSD(node1)
  创建OSD(node1)
  ceph-deploy osd create --data /dev/sdb node1
  ceph-deploy osd create --data /dev/sdb node2
  ceph-deploy osd create --data /dev/sdb node3
  注意 如果要在LVM卷上创建OSD,则参数 --data 必须volume_group/lv_name,而不是卷的块设备的路径。
  检查集群健康(node1)
  ceph health
  #返回简单信息
  ceph -s  = ceph status
  返回完整信息

扩展群集
  启动并运行基本群集后,下一步是展开群集。添加Ceph元数据服务器node1然后添加Ceph Monitor和Ceph Manager node2node3以提高可靠性和可用性。
添加元数据服务器:配置MDS服务(node1)
  要使用CephFS,您至少需要一个元数据服务器。执行以下操作以创建元数据服务器:
  ceph-deploy mds create node1
添加监视器
  Ceph存储集群需要至少运行一个Ceph Monitor和Ceph Manager。为了实现高可用性,Ceph存储集群通常运行多个Ceph监视器,因此单个Ceph监视器的故障不会导致Ceph存储集群崩溃。Ceph使用Paxos算法,该算法需要大多数监视器(即,大于N / 2,其中N是监视器的数量)才能形成法定人数。虽然这不是必需的,但监视器的数量往往更好。
  将两个Ceph监视器添加到您的群集:
  ceph-deploy mon add node2 node3
  一旦你添加了新的Ceph监视器,Ceph将开始同步监视器并形成一个法定人数。您可以通过执行以下操作来检查仲裁状态:
  ceph quorum_status --format json-pretty
  注意: 当您使用多个监视器运行Ceph时,您应该在每个监视器主机上安装和配置NTP, 确保监视器是NTP对等方。
添加管理员
  Ceph Manager守护进程以活动/备用模式运行。部署其他管理器守护程序可确保在一个守护程序或主机发生故障时,另一个守护程序或主机可以在不中断服务的情况下接管。
  要部署其他管理器守护程序:
  ceph-deploy mgr create node2 node3
  删除OSD(node1)
  ceph auth del osd.0
  ceph osd rm 0
  配置DashBoard
  创建域管理秘钥(node1)
  ceph auth get-or-create mgr.node1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'
  开启ceph-mgr管理域(node1)
  ceph-mgr -i node1
  打开dashboard模块(node1)
  ceph mgr module enable dashboard
  绑定开启dashboard模块的ceph-mgr节点的ip地址(node1主机)
  ceph config-key set mgr/dashboard/node1/server_addr 192.168.110.59
  访问Dashboard (任意主机)
  http://192.168.110.59:7000




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-670515-1-1.html 上篇帖子: ceph的读写性能测试 下篇帖子: Ceph 对象存储
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表