基础概念

目前Ceph官方提供三种部署Ceph集群的方法,分别是ceph-deploy,cephadm和手动安装

  • ceph-deploy
一个集群自动化部署工具,使用较久,成熟稳定,被很多自动化工具所集成,可用于生产部署
  • cephadm
从Octopus开始提供的新集群部署工具,支持通过图形界面或者命令行界面添加节点,目前不建议用于生产环境,有兴趣可以尝试
  • manual
手动部署,一步步部署Ceph集群,支持较多定制化和了解部署细节,安装难度较大,但可以清晰掌握安装部署的细节

这里我们采用成熟、简单的ceph-deploy实现Ceph集群的部署

ceph-deploy的基础架构


查看ip: ip addr查看网关: ip route show查看DNS: cat /etc/resolv.conf

注:大家可以根据自己的环境修改上面的网段

公共网络&集群网络

  • 公共网配置用于明确地为公共网定义IP地址和子网(ceph默认所有主机都运行于公共网)。

  • 集群网络的作用:处理OSD心跳、对象复制、恢复流量

OSD为客户端处理数据复制,产生的网络负载会影响到客户端和ceph集群的通讯,故为性能和安全考虑,需要配置集群网络与公共网络相互独立

本文复用了Public网络和Cluster网络

集群中的角色

  • admin-node
需要一个安装管理节点,安装节点负责集群整体部署,这里用cephnode-01为admin-node和Ceph-Mon节点;
  • mon
monitor节点,即是Ceph的监视管理节点,承担Ceph集群重要的管理任务一般需要3或5个节点,此处部署简单的一个Monitor节点
  • osd
OSD即Object Storage Daemon,实际负责数据存储的节点3个节点上分别有1块20G的磁盘充当OSD角色

注:生产环境如果有多个节点也可以继续横向扩容;如果磁盘容量不够也可以根据使用需求进行纵向扩容

安装3节点Ceph集群

  • 硬件环境
虚拟机,2core+4G+20G磁盘
  • 操作系统
cat /proc/version

CentOS Linux 7.9.2009 Core
  • 部署版本
ceph-deploy 2.0.1

集群规划


系统初始化

注:如果没有特殊说明,本小节所有操作需要在所有节点上执行本文档的初始化操作

配置主机名

hostnamectl set-hostname cephnode-01hostnamectl set-hostname cephnode-02hostnamectl set-hostname cephnode-03

在每台机器的 /etc/hosts 文件中添加主机名和 IP 的对应关系

cat >> /etc/hosts <<EOF# Ceph Cluster Network192.168.168.138  cephnode-01192.168.168.137  cephnode-02192.168.168.132  cephnode-03

# Ceph Public Network192.168.168.138  cephnode-01192.168.168.137  cephnode-02192.168.168.132  cephnode-03EOF

然后退出,重新登录 root 账号,可以看到主机名生效

添加节点SSH互信

ssh-keygen -t rsassh-copy-id root@cephnode-01ssh-copy-id root@cephnode-02ssh-copy-id root@cephnode-03

关闭防火墙

systemctl stop firewalldsystemctl disable firewalldiptables -F && iptables -X && iptables -F -t nat && iptables -X -t natiptables -P FORWARD ACCEPT

注:关闭防火墙,清理防火墙规则,设置默认转发策略

关闭swap分区

swapoff -ased -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

关闭SELinux

setenforce 0sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

配置EPEL源

配置yum源,由于网络环境因素,因此将yum源统一配置到国内阿里云,加快rpm的安装配置,需要配置CentOS的基础源、EPEL源和Ceph源

# 删除默认yum源并配置阿里yum源rm -f /etc/yum.repos.d/*.repowget http://mirrors.aliyun.com/repo/Centos-7.repo  -P /etc/yum.repos.d/# 安装EPEL源wget http://mirrors.aliyun.com/repo/epel-7.repo -P /etc/yum.repos.d/

配置Ceph源

cat > /etc/yum.repos.d/ceph.repo <<EOF[noarch] name=Ceph noarch baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/ enabled=1 gpgcheck=0 

[x86_64] name=Ceph x86_64 baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/ enabled=1 gpgcheck=0EOF

安装依赖包

安装Ceph-deploy部署工具,默认EPEL源提供的ceph-deploy版本是1.5,务必确保安装版本为2.0.1或之上版本,否则安装过程中会有很多问题

# 更新yum源yum update -y# 安装工具包、python-setuptools一定要安装、不然会报错的yum install -y chrony conntrack ipset jq iptables curl sysstat libseccomp wget socat git python-setuptools

# 安装ceph-deploy部署工具yum install ceph-deploy -y#校验版本ceph-deploy --version

配置系统时间

timedatectl set-timezone Asia/Shanghai

配置时钟同步

timedatectl status

注:System clock synchronized: yes,表示时钟已同步; NTP service: active,表示开启了时钟同步服务

写入硬件时钟

# 将当前的 UTC 时间写入硬件时钟timedatectl set-local-rtc 0

# 重启依赖于系统时间的服务systemctl restart rsyslog systemctl restart crond

关闭无关服务

systemctl stop postfix && systemctl disable postfix

执行完上面所有的操作之后我们就可以重启所有主机了

syncreboot

部署Ceph集群

Ceph-deploy部署过程中会生成一些集群初始化配置文件和key后续扩容的时候也需要使用到因此,建议在admin-node上创建一个单独的目录后续操作都进入到该目录中进行操作以创建的ceph-admin为例这里在/root/下面创建一个ceph-admin目录

mkdir -p ceph-admin# 后续所有的操作均需要在ceph-admin目录下面完成cd ceph-admin

安装Ceph所需的安装包

安装过程中可以使用ceph-deploy install提供的安装方式这个命令会自动安装EPEL源,重新设定Ceph源这里我们已经设置到国内源了因此采用手动安装Ceph安装包方式为了保障后续的安装在三个节点上将Ceph的安装包都部署上,在三个节点上分别执行下面的命令即可

yum install ceph-mon ceph-radosgw ceph-mds ceph-mgr ceph-osd ceph-common -y

创建一个Ceph Cluster集群

需要指定cluster-network(集群内部通讯)和public-network(外部访问Ceph集群)

ceph-deploy new --cluster-network 192.168.168.0/24 --public-network 192.168.168.0/24 cephnode-01

通过上面的输出可以看到new初始化集群过程中会生成ssh key密钥,ceph.conf配置文件,ceph.mon.keyring认证管理密钥配置cluster network和pubic network此时查看目录下的文件可以看到如下内容

初始化monitor节点

ceph-deploy mon create-initial

可能出现的异常


安装好ceph之后 会生成/var/run/ceph/ceph-mon.cephnode-01.asok这个文件

执行这个命令的时候ceph --cluster=ceph --admin-daemon /var/run/ceph/ceph-mon.cephnode-01.asok mon_status

如果找不到这个文件就会报这个错误

此时要确认主机名和/etc/hosts配置的名称是否一致
初始化完毕后会自动生成以下几个文件,这些文件用于后续和Ceph认证交互使用

初始化完成之后我们将admin的认证密钥拷贝到其他节点上便于ceph命令行可以通过keyring和ceph集群进行交互

ceph-deploy --overwrite-conf admin cephnode-01 cephnode-02 cephnode-03

查看集群状态

Ceph集群已经建立起来当前的Ceph集群包含一个monitor节点通过 ceph -s 我们可以查看当前ceph集群的状态但是此时并没有任何的OSD节点,因此无法往集群中写数据等操作

从上面的截图我们可以看到、目前集群中目前还没有OSD节点因此没法存储数据,接下来开始往集群中添加OSD节点在前面我们说过每个节点上都有1块20G的磁盘/dev/sda

下篇文章将介绍下下如何将磁盘加入到集群中作为OSD节点以及其他操作的过程

2021-11-10如何快速部署Ceph分布式高可用集群相关推荐

  1. 部署Ceph分布式高可用集群中篇

    前言 如何快速部署Ceph分布式高可用集群 Ceph分布式存储底层实现原理 上文介绍了ceph的原理以及ceph的部署(部署了一个mon角色)本文继续介绍下ceph的部署 部署OSD 查看磁盘使用情况 ...

  2. docker 如何加入kubernetes_使用 Kind 在 5 分钟内快速部署一个 Kubernetes 高可用集群...

    什么是 Kind Kind(Kubernetes in Docker) 是一个Kubernetes孵化项目,Kind是一套开箱即用的Kubernetes环境搭建方案.顾名思义,就是将Kubernete ...

  3. Centos 7 部署 OpenStack_Rocky版高可用集群3-1

    Centos 7 部署 OpenStack_Rocky版高可用集群3-1 文章目录 Centos 7 部署 OpenStack_Rocky版高可用集群3-1 1.前期准备 1.1 软硬件准备 1.1. ...

  4. Redis 集群搭建(三):Docker 部署 Redis + Sentinel 高可用集群

    Redis 集群搭建(三):Docker 部署 Redis + Sentinel 高可用集群 前言 建议 官方译文 什么是 Sentinel? Sentinel 优点 Redis 配置文件 maste ...

  5. k8s 手动恢复redis 集群_二进制手动部署k8s-1.14高可用集群(二、集群部署)

    1. CA证书(任意节点) 1.1 安装cfssl cfssl是非常好用的CA工具,我们用它来生成证书和秘钥文件 安装过程比较简单,如下: # 下载 $ mkdir -p ~/bin $ wget h ...

  6. Java后台架构-分布式-高可用-集群-负载均衡-正向代理和反向代理

    双 11 即将来临,本文以设计淘宝网的后台架构为例,介绍从一百个并发到千万级并发情况下服务端的架构的14次演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知. 文章最 ...

  7. Kubernetes 部署一套高可用集群(二进制,v1.18)上

    生产环境K8S平台规划 服务器硬件配置推荐 官方提供三种部署方式 为Etcd和APISever自签SSL证书 Etcd数据库集群署 部署Master组件 部署Node组件 部署K8S集群网络 部署集群 ...

  8. Hbase完全分布式高可用集群安装配置

    1.准备安装软件 OS:centos7 Hadoop:hadoop-2.7.3 HBase:hbase-1.2.6 JDK:jdk-8u121-linux-x64 集群机器: 主机 IP地址 系统 软 ...

  9. Memcache 分布式高可用集群介绍

    分布式缓存需考虑如下三点: 1.缓存本身的水平线性扩展的问题. 2.缓存大病罚下的本身性能问题. 3.避免缓存的单点鼓掌问题. 分布式缓存存在的问题: 1.内存本身的管理问题.内存的分配,管理和回收机 ...

最新文章

  1. Uploadify 上传插件引起Chrome崩溃解决方法
  2. 腾讯TEG校招群聊天记录曝光,速来围观!
  3. tp 5.0 mysql 事物
  4. js工作笔记004---加载数据延迟导致的不确定问题的解决_setTimeout和window_onload
  5. jquery ui tabs
  6. 能打开java文件的软件有哪些_使用JAVA打开本地应用程序相关的文件
  7. 解决Ubuntu系统找不到进程,但是GPU显存占满问题
  8. 201约花鸟画 考c语言试题,全国计算机二级C语言上机100题..doc
  9. 小学生十大计算机专业书排行,小学教辅十大排行榜2018 小学教辅书那些比较好...
  10. python为csv文件添加表头_csv大文件分割以及添加表头
  11. 数字信号和模拟信号抗干扰能力分析
  12. php guzzlehttp,PHP 使用 Guzzle 发送 HTTP 请求
  13. Android高效率编码-第三方SDK详解系列(一)——百度地图,绘制,覆盖物,导航,定位,细腻分解!...
  14. thinkphp5 关联预载入怎么用
  15. Springboot疫苗接种管理系统-JAVA.JSP【计算机毕业设计、源码、开题报告】
  16. 嵌入式学习——周总结
  17. 手把手教你读财报----银行业---第十一课
  18. 2021年危险化学品生产单位安全生产管理人员考试及危险化学品生产单位安全生产管理人员新版试题
  19. 《诗经·击鼓》:男人赌性命,女人赌身家
  20. oracle数据库学习(自用)

热门文章

  1. 临界区设计太大或太小有何缺点_冷库风冷冷凝器和水冷冷凝器区别及优缺点比较...
  2. 前端进阶之防抖与节流是什么?
  3. 日志,错误日志,成功日志,日志是个好东西。
  4. mysql now的时间问题
  5. 13.SpringMVC核心技术-异常处理
  6. 关于在虚拟机上进行wp7的开发
  7. php面试中的经典问题
  8. VirtualBox下安装MacOS11
  9. 网络诈骗是大数据的“原罪”吗
  10. predis操作大全