2021-11-10如何快速部署Ceph分布式高可用集群
基础概念
目前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分布式高可用集群相关推荐
- 部署Ceph分布式高可用集群中篇
前言 如何快速部署Ceph分布式高可用集群 Ceph分布式存储底层实现原理 上文介绍了ceph的原理以及ceph的部署(部署了一个mon角色)本文继续介绍下ceph的部署 部署OSD 查看磁盘使用情况 ...
- docker 如何加入kubernetes_使用 Kind 在 5 分钟内快速部署一个 Kubernetes 高可用集群...
什么是 Kind Kind(Kubernetes in Docker) 是一个Kubernetes孵化项目,Kind是一套开箱即用的Kubernetes环境搭建方案.顾名思义,就是将Kubernete ...
- Centos 7 部署 OpenStack_Rocky版高可用集群3-1
Centos 7 部署 OpenStack_Rocky版高可用集群3-1 文章目录 Centos 7 部署 OpenStack_Rocky版高可用集群3-1 1.前期准备 1.1 软硬件准备 1.1. ...
- Redis 集群搭建(三):Docker 部署 Redis + Sentinel 高可用集群
Redis 集群搭建(三):Docker 部署 Redis + Sentinel 高可用集群 前言 建议 官方译文 什么是 Sentinel? Sentinel 优点 Redis 配置文件 maste ...
- k8s 手动恢复redis 集群_二进制手动部署k8s-1.14高可用集群(二、集群部署)
1. CA证书(任意节点) 1.1 安装cfssl cfssl是非常好用的CA工具,我们用它来生成证书和秘钥文件 安装过程比较简单,如下: # 下载 $ mkdir -p ~/bin $ wget h ...
- Java后台架构-分布式-高可用-集群-负载均衡-正向代理和反向代理
双 11 即将来临,本文以设计淘宝网的后台架构为例,介绍从一百个并发到千万级并发情况下服务端的架构的14次演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知. 文章最 ...
- Kubernetes 部署一套高可用集群(二进制,v1.18)上
生产环境K8S平台规划 服务器硬件配置推荐 官方提供三种部署方式 为Etcd和APISever自签SSL证书 Etcd数据库集群署 部署Master组件 部署Node组件 部署K8S集群网络 部署集群 ...
- Hbase完全分布式高可用集群安装配置
1.准备安装软件 OS:centos7 Hadoop:hadoop-2.7.3 HBase:hbase-1.2.6 JDK:jdk-8u121-linux-x64 集群机器: 主机 IP地址 系统 软 ...
- Memcache 分布式高可用集群介绍
分布式缓存需考虑如下三点: 1.缓存本身的水平线性扩展的问题. 2.缓存大病罚下的本身性能问题. 3.避免缓存的单点鼓掌问题. 分布式缓存存在的问题: 1.内存本身的管理问题.内存的分配,管理和回收机 ...
最新文章
- Uploadify 上传插件引起Chrome崩溃解决方法
- 腾讯TEG校招群聊天记录曝光,速来围观!
- tp 5.0 mysql 事物
- js工作笔记004---加载数据延迟导致的不确定问题的解决_setTimeout和window_onload
- jquery ui tabs
- 能打开java文件的软件有哪些_使用JAVA打开本地应用程序相关的文件
- 解决Ubuntu系统找不到进程,但是GPU显存占满问题
- 201约花鸟画 考c语言试题,全国计算机二级C语言上机100题..doc
- 小学生十大计算机专业书排行,小学教辅十大排行榜2018 小学教辅书那些比较好...
- python为csv文件添加表头_csv大文件分割以及添加表头
- 数字信号和模拟信号抗干扰能力分析
- php guzzlehttp,PHP 使用 Guzzle 发送 HTTP 请求
- Android高效率编码-第三方SDK详解系列(一)——百度地图,绘制,覆盖物,导航,定位,细腻分解!...
- thinkphp5 关联预载入怎么用
- Springboot疫苗接种管理系统-JAVA.JSP【计算机毕业设计、源码、开题报告】
- 嵌入式学习——周总结
- 手把手教你读财报----银行业---第十一课
- 2021年危险化学品生产单位安全生产管理人员考试及危险化学品生产单位安全生产管理人员新版试题
- 《诗经·击鼓》:男人赌性命,女人赌身家
- oracle数据库学习(自用)