ceph 002 ceph架构 ceph数据存储过程 ceph集群安装
ceph 架构
rgw:实现对象存储 (web的url和swift,s3接口)
mon:集群的访问入口 (集群,同时工作,得同步信息。每个mon的ip不一样)
mgr:监控 信息收集 web 界面 (将信息,汇报给mon。主备)
osd:磁盘

数据存储过程

本质上的底层为对象存储
ceph接口 librados
ceph驱动 rados
上面封装了三种存储类型

一个文件被切分成多个对象
object默认4M oid 对象id
切分后就为二进制文件(object),单独存在无意义。下载的话得将二进制组合
对象被映射到osd上面
如果osd所在的主机坏了,那么这个文件的对象就缺失,就不完整
所以object会多存2份在其他的osd上面 (三副本,真正的容量/3)
如果一个文件很大1TB 你将它切成无数个4M,那么随着对象的增多,检索效率会变低
所以中间多了一层PGs 1-10 11-20 21-30 加快检索效率
对象映射的pg的算法叫hash算法
简单的hash算法
有100个组 对象id为54
54/100取余 余数为54,那么被放到54组里
归置组到osd
crush算法
三副本,那么归置组映射三个osd(在组出来的时候,映射关系就出来了。存文件之前就已经存在这个映射关系)
osd写一个成功(主osd),然后复制两个(备osd)
ceph 强一致性,确保三副本每一个写成功,才返回客户端
正常的话主提供读写,坏了,能自我修复,备osd先顶上


尽量将主osd放在ssd上

ceph搭建
安装方法
ceph-deploy centos7 centos8(不支持)
cephadm o版开始的部署工具 web界面 容器部署 (docker podman)
manual 纯手动
ceph-ansible ansible github

c-e 集群
serverg 可以加入集群的节点(扩容)
serverf 单节点集群
utility 镜像仓库 dns
classroom 资料与yum源
basion 路由转发 路由器
clienta 管理节点
clientb 另外一个集群的管理节点
正常情况 mon mgr osd 三个都单独部署
mon三台主机 mgr两台节点 osd数据节点
教师环境节点复用一个节点mon mgr osd都有
cephadm 一台做好,将其他节点加入进来
1 预准备,并执行ansible
cephadm-ansible 预部署,给你准备好前提条件 yum文件 时间同步 容器工具
[root@serverc ~]# yum -y install cephadm-ansible
[root@serverc ~]# cd /usr/share/cephadm-ansible/
[root@serverc cephadm-ansible]# ls
ansible.cfg cephadm-preflight.yml cephadm-purge-cluster.yml ceph-defaults
[root@serverc cephadm-ansible]#
写主机清单
[root@serverc cephadm-ansible]# cat hosts
clienta.lab.example.com
serverc.lab.example.com
serverd.lab.example.com
servere.lab.example.com
[root@serverc cephadm-ansible]# ansible-playbook -i hosts cephadm-preflight.yml \
> --extra-vars "ceph_origin="
--extra-vars "ceph_origin= 指定为空,不从红帽官网安装,从本地源装
- clienta.lab.example.com
- serverc.lab.example.com
- serverd.lab.example.com
- servere.lab.example.com
ceph会取主机名clienta这一部分
2 写配置文件
这个文件得自己写
vim ~/ceph/initial-config-primary-cluster.yaml
[root@serverc ~]# cat ceph/initial-config-primary-cluster.yaml
service_type: host
addr: 172.25.250.10
hostname: clienta.lab.example.com
---
service_type: host
addr: 172.25.250.12
hostname: serverc.lab.example.com
---
service_type: host
addr: 172.25.250.13
hostname: serverd.lab.example.com
---
service_type: host
addr: 172.25.250.14
hostname: servere.lab.example.com
---
service_type: mon
placement:
hosts:
- clienta.lab.example.com
- serverc.lab.example.com
- serverd.lab.example.com
- servere.lab.example.com
---
service_type: rgw
service_id: realm.zone
placement:
hosts:
- serverc.lab.example.com
- serverd.lab.example.com
---
service_type: mgr
placement:
hosts:
- clienta.lab.example.com
- serverc.lab.example.com
- serverd.lab.example.com
- servere.lab.example.com
---
service_type: osd
service_id: default_drive_group
placement:
host_pattern: 'server*'
data_devices:
paths:
- /dev/vdb
- /dev/vdc
- /dev/vdd
[root@serverc ceph]# ls
initial-config-primary-cluster.yaml
[root@serverc ceph]# pwd
/root/ceph
这个配置文件有相关ceph信息
可以更改,然后再次跑这个文件完成更新
3 使用配置文件跑cephadm

关于安装可以查找帮助文档

[root@serverc ceph]# cephadm bootstrap --mon-ip=172.25.250.12 --apply-spec initial-config-primary-cluster.yaml --registry-url registry.lab.example.com --registry-username registry --registry-password redhat --initial-dashboard-password redhat --dashboard-password-noupdate --allow-fqdn-hostname
4 查验
[root@serverc ceph]# cephadm shell
调用容器,里面有所有ceph工具
[ceph: root@serverc /]# ceph -s
cluster:
id: e5f9d02c-140c-11ed-aa7b-52540000fa0c
health: HEALTH_OK
services:
mon: 4 daemons, quorum serverc.lab.example.com,servere,serverd,clienta (age 106s)
mgr: serverc.lab.example.com.eskdfx(active, since 4m), standbys: clienta.ecdris, serverd.wpncqk, servere.mguxgb
osd: 9 osds: 9 up (since 2m), 9 in (since 3m)
rgw: 2 daemons active (2 hosts, 1 zones)
data:
pools: 5 pools, 119 pgs
objects: 189 objects, 4.9 KiB
usage: 71 MiB used, 90 GiB / 90 GiB avail
pgs: 119 active+clean
progress:
[ceph: root@serverc /]#
开源ceph部署
三台节点centos7,最小化安装

1.基础配置
更改合适的主机名
例
hostnamectl set-hostname ceph01.example.com
配置网络可以互通且能通外网
配置hosts解析
[root@ceph01 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.92.11 ceph01.example.com ceph01
192.168.92.22 ceph02.example.com ceph02
192.168.92.33 ceph03.example.com ceph03
关闭selinux
setenforce 0
设置防火墙规则
[root@ceph01 ~]# firewall-cmd --permanent --add-service=ntp
success
[root@ceph01 ~]# firewall-cmd --reload
success
以上三台主机都要做
安装时间同步
yum -y install chrony
主同步节点
vim /etc/chrony.conf
local stratum 10
allow 192.168.0.0/16
systemctl restart chronyd
client节点
cat /etc/chrony.conf | grep iburst
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server ceph01.example.com iburst
systemctl restart chronyd
2.安装软件包
[root@ceph02 bin]# ls | grep python
python
python2
python2.7
安装wget取得阿里源
yum -y install wget
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
两个源二选一
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
安装python3
yum -y install python3
安装docker-ce
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ce.repo
# 将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
# Loading mirror speeds from cached hostfile
# Loaded plugins: branch, fastestmirror, langpacks
# docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
# docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
# docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
# Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]
设置docker 开机自启
systemctl enable docker
配置镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://lrppnyd2.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3.安装ceph集群
第一种方法
[root@ceph01 ~]# curl --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm
来自ceph官网
第二种
去github搜索ceph拿自己想要的版本
下载cephadm
[root@ceph01 ~]# chmod a+x cephadm
给权限
[root@ceph01 ~]# ./cephadm add-repo --release octopus
拉个o版仓库源源
[root@ceph01 ~]# ./cephadm install
Installing packages ['cephadm']...
[root@ceph01 ~]#
安装相关工具包
倘若有gpgkey的问题,关闭秘钥检查
以上三台主机都要做
在一个节点
[root@ceph01 ~]# cephadm bootstrap --mon-ip 192.168.92.11 --initial-dashboard-password redhat --dashboard-password
-noupdate --allow-fqdn-hostname
开始cephadm部署
因为有网,访问的到网络上的源,所以没有特别指定registry-url
4.查看结果
[root@ceph01 ~]# cephadm shell
Inferring fsid cb8f4abe-14a7-11ed-a76d-000c2939fb75
Inferring config /var/lib/ceph/cb8f4abe-14a7-11ed-a76d-000c2939fb75/mon.ceph01.example.com/config
Using recent ceph image quay.io/ceph/ceph@sha256:c3336a5b10b069b127d1a66ef97d489867fc9c2e4f379100e5a06f99f137a420
[ceph: root@ceph01 /]#
cephadm shell 会启动一个临时的容器,退出时关闭。
想在容器外访问节点,那得安装ceph软件包命令
yum -y install ceph-common
[ceph: root@ceph01 /]# ceph orch daemon add osd ceph01.example.com:/dev/sdb
Created osd(s) 0 on host 'ceph01.example.com'
[ceph: root@ceph01 /]# ceph orch daemon add osd ceph01.example.com:/dev/sdc
Created osd(s) 1 on host 'ceph01.example.com'
[ceph: root@ceph01 /]# ceph orch daemon add osd ceph01.example.com:/dev/sdd
Created osd(s) 2 on host 'ceph01.example.com'
注意此时在容器里
在容器里面操作主机之间免密登录
[ceph: root@ceph01 /]# ceph cephadm get-pub-key
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCysZgbSqzlN9UKGcIFprdLR/m9y5TYoFcckOXEZzFsA7o9zaWrfJYbkNyGSYbw8DSywYF1pcZu1QOiZ9DAG0XVotz/Gk4NqO9ewp6bPwxonShB5xGi63OZ0qhsgj0iV368FB7C7POM09kXCKueGlKyGXzOIX38k6yk2HHLN2Apx956qixJ+nuqOXpmK2a4dgkU98xE27ldlksxk+FlfSmI+ZuDscGQIZRpLhtLig6shrDMQzwjt+8UKdDMLFDyKkKBwqMwT1c0Av3z0EjQU8IUPOU50kbWNqAsJsq4Gq+kIZcSbeX/3Jnequ6znMwFqkB55Xr9XUWueEWIz14jX60ZX8Dma7+BBUAszH+VkK1hoBIU5xgVXA3rmZSZxLLGZswcB7pYhCO2mnrIACJjErJF4BlVv0zxh5QTchVq9m8Y+2H3sZdut5Umu0vfZhuMlYeTs8b5axUCEOwkwevV1t9QZiUdAw9iMBHGpNHKAO6R3bBdDZ8wpNUYFIvMuHccDr8= ceph-cb8f4abe-14a7-11ed-a76d-000c2939fb75
[ceph: root@ceph01 /]# ceph cephadm get-pub-key > ~/ceph.pub
ssh-copy-id -f -i ~/ceph.pub root@ceph02.example.com
ssh-copy-id -f -i ~/ceph.pub root@ceph03.example.com
增加节点
[ceph: root@ceph01 /]# ceph orch host add ceph02.example.com
Added host 'ceph02.example.com'
[ceph: root@ceph01 /]# ceph orch host add ceph03.example.com
Added host 'ceph03.example.com'
[ceph: root@ceph01 /]#
查看所有镜像
[ceph: root@ceph01 /]# ceph orch ps
NAME HOST STATUS REFRESHED AGE VERSION IMAGE NAME IMAGE ID CONTAINER ID
alertmanager.ceph01 ceph01.example.com running (24m) 2m ago 26m 0.20.0 quay.io/prometheus/alertmanager:v0.20.0 0881eb8f169f c396bb1811ca
crash.ceph01 ceph01.example.com running (26m) 2m ago 26m 15.2.16 quay.io/ceph/ceph:v15 296d7fe77d4e 2df23f92e960
grafana.ceph01 ceph01.example.com running (24m) 2m ago 25m 6.7.4 quay.io/ceph/ceph-grafana:6.7.4 557c83e11646 41a4d79bffdf
mgr.ceph01.example.com.wvuoii ceph01.example.com running (27m) 2m ago 27m 15.2.16 quay.io/ceph/ceph:v15 296d7fe77d4e 3c35496cc85b
mon.ceph01.example.com ceph01.example.com running (27m) 2m ago 28m 15.2.16 quay.io/ceph/ceph:v15 296d7fe77d4e e05f0ede5bf8
node-exporter.ceph01 ceph01.example.com running (22m) 2m ago 25m 0.18.1 quay.io/prometheus/node-exporter:v0.18.1 e5a616e4b9cf 74929a93b396
osd.0 ceph01.example.com running (12m) 2m ago 12m 15.2.16 quay.io/ceph/ceph:v15 296d7fe77d4e f7ada88e07aa
osd.1 ceph01.example.com running (11m) 2m ago 11m 15.2.16 quay.io/ceph/ceph:v15 296d7fe77d4e 286a0513c451
osd.2 ceph01.example.com running (10m) 2m ago 10m 15.2.16 quay.io/ceph/ceph:v15 296d7fe77d4e f65a9be01916
prometheus.ceph01 ceph01.example.com running (25m) 2m ago 25m 2.18.1 quay.io/prometheus/prometheus:v2.18.1 de242295e225 fbebcbe1b1cf
[ceph: root@ceph01 /]#
增加其他节点的osd
[ceph: root@ceph01 /]# ceph orch daemon add osd ceph02.example.com:/dev/sdb
Created osd(s) 3 on host 'ceph02.example.com'
[ceph: root@ceph01 /]# ceph orch daemon add osd ceph02.example.com:/dev/sdc
Created osd(s) 4 on host 'ceph02.example.com'
[ceph: root@ceph01 /]# ceph orch daemon add osd ceph02.example.com:/dev/sdd
Created osd(s) 5 on host 'ceph02.example.com'
[ceph: root@ceph01 /]#
[ceph: root@ceph01 /]# ceph orch daemon add osd ceph03.example.com:/dev/sdb
Created osd(s) 6 on host 'ceph03.example.com'
[ceph: root@ceph01 /]# ceph orch daemon add osd ceph03.example.com:/dev/sdc
Created osd(s) 7 on host 'ceph03.example.com'
[ceph: root@ceph01 /]# ceph orch daemon add osd ceph03.example.com:/dev/sdd
Created osd(s) 8 on host 'ceph03.example.com'
[ceph: root@ceph01 /]#
加入主机后,每个主机都应该有镜像docker ps 查看(其他hosts需要什么镜像就会自动下载什么)
查看
[ceph: root@ceph01 /]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.17537 root default
-3 0.05846 host ceph01
0 hdd 0.01949 osd.0 up 1.00000 1.00000
1 hdd 0.01949 osd.1 up 1.00000 1.00000
2 hdd 0.01949 osd.2 up 1.00000 1.00000
-5 0.05846 host ceph02
3 hdd 0.01949 osd.3 up 1.00000 1.00000
4 hdd 0.01949 osd.4 up 1.00000 1.00000
5 hdd 0.01949 osd.5 up 1.00000 1.00000
-7 0.05846 host ceph03
6 hdd 0.01949 osd.6 up 1.00000 1.00000
7 hdd 0.01949 osd.7 up 1.00000 1.00000
8 hdd 0.01949 osd.8 up 1.00000 1.00000
图形界面也可以查看,也比较好

[ceph: root@ceph01 /]# ceph orch device ls
Hostname Path Type Serial Size Health Ident Fault Available
ceph01.example.com /dev/sdb hdd 21.4G Unknown N/A N/A No
ceph01.example.com /dev/sdc hdd 21.4G Unknown N/A N/A No
ceph01.example.com /dev/sdd hdd 21.4G Unknown N/A N/A No
ceph02.example.com /dev/sdb hdd 21.4G Unknown N/A N/A No
ceph02.example.com /dev/sdc hdd 21.4G Unknown N/A N/A No
ceph02.example.com /dev/sdd hdd 21.4G Unknown N/A N/A No
ceph03.example.com /dev/sdb hdd 21.4G Unknown N/A N/A No
ceph03.example.com /dev/sdc hdd 21.4G Unknown N/A N/A No
ceph03.example.com /dev/sdd hdd 21.4G Unknown N/A N/A No
[ceph: root@ceph01 /]#
查看编排情况
[root@ceph01 ceph]# mv ceph.conf ~/
[root@ceph01 ceph]# ceph -s
Error initializing cluster client: ObjectNotFound('RADOS object not found (error calling conf_read_file)',)
就算有命令,没配置文件,也无法访问
[root@ceph01 ceph]# cat ceph.conf
# minimal ceph.conf for cb8f4abe-14a7-11ed-a76d-000c2939fb75
[global]
fsid = cb8f4abe-14a7-11ed-a76d-000c2939fb75
mon_host = [v2:192.168.92.11:3300/0,v1:192.168.92.11:6789/0]
配置文件里写着mon(入口地址,类似keystone)
ceph 002 ceph架构 ceph数据存储过程 ceph集群安装的更多相关文章
- HBase体系架构和集群安装
大家好,今天分享的是HBase体系架构和HBase集群安装.承接上两篇文章<HBase简介>和<HBase数据模型>,点击回顾这2篇文章,有助于更好地理解本文. 一.HBase ...
- 【架构师之路】集群/分布式环境下5种session处理策略
[架构师之路]集群/分布式环境下5种session处理策略 转自:http://www.cnblogs.com/jhli/p/6557929.html 在搭建完集群环境后,不得不考虑的一个问题就是 ...
- 大数据入门第五天——离线计算之hadoop(上)概述与集群安装
一.概述 根据之前的凡技术必登其官网的原则,我们当然先得找到它的官网:http://hadoop.apache.org/ 1.什么是hadoop 先看官网介绍: The Apache™ Hadoop® ...
- CentOS6安装各种大数据软件 第十章:Spark集群安装和部署
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- 庐山真面目之十二微服务架构基于Docker搭建Consul集群、Ocelot网关集群和IdentityServer版本实现
庐山真面目之十二微服务架构基于Docker搭建Consul集群.Ocelot网关集群和IdentityServer版本实现 一.简介 在第七篇文章<庐山真面目之七微服务架构Consul ...
- Redis架构之哨兵机制与集群
Redis架构之哨兵机制与集群 哨兵机制 1.介绍: Sentinel(哨兵)是redis高可用性解决方案:由一个或多个由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个 ...
- 朝花夕拾之--大数据平台CDH集群离线搭建
body { border: 1px solid #ddd; outline: 1300px solid #fff; margin: 16px auto; } body .markdown-body ...
- 大数据测试之hadoop集群配置和测试
大数据测试之hadoop集群配置和测试 一.准备(所有节点都需要做):系统:Ubuntu12.04java版本:JDK1.7SSH(ubuntu自带)三台在同一ip段的机器,设置为静态IP机器分配 ...
- 大数据技术之_19_Spark学习_01_Spark 基础解析 + Spark 概述 + Spark 集群安装 + 执行 Spark 程序
第1章 Spark 概述1.1 什么是 Spark1.2 Spark 特点1.3 Spark 的用户和用途第2章 Spark 集群安装2.1 集群角色2.2 机器准备2.3 下载 Spark 安装包2 ...
- 大数据入门第十七天——storm上游数据源 之kafka详解(一)入门与集群安装
一.概述 1.kafka是什么 根据标题可以有个概念:kafka是storm的上游数据源之一,也是一对经典的组合,就像郭德纲和于谦 根据官网:http://kafka.apache.org/intro ...
随机推荐
- 《iOS面试之道》-“串行队列的代码实战” 勘误
一.原书第一版154页开始讲解串行队列.并发队列.以及在Dispatch_Async.Dispatch_Sync下面的作用 最后一段代码: if(_q == NULL) { _q = dispatch ...
- jsp表单提交中的逻辑判断
针对于表单 通常情况下 我们都是表单提交 提交的路径为以下: 提交的按钮的type="submit" 当我们想在表单提交前增加一个逻辑判断 我们就需要把button中的typ ...
- 浅拷贝、深拷贝与序列化【初级Java必需理解的概念】
浅拷贝 首先创建两个类,方便理解浅拷贝 @Data class Student implements Cloneable{ //年龄和名字是基本属性 private int age; private ...
- 关于vue中image控件,onload事件里,event.target 为null的奇怪问题探讨
废话不多说(主要文笔比较差),直接上代码 一个简单的demo,如下 <img :src="orginalImgSrc" style="display: none;& ...
- OSI七层网络模型和TCP/IP四层模型
OSI七层网络模型 OSI: 开放系统互连参考模型是ISO制定的一个用于计算机或通信系统间互联的标准体系 OSI七层模型功能: 物理层: 七层模型的最底层,主要是物理介质传输媒介(网线或者无线),在不 ...
- Linux特殊权限之SBIT
简单点,说话的方式简单点: 用于修饰目录 其他用户x位替换成t 作用:目录属主在该目录下创建的文件只有该属主能删除
- 在Linux驱动中使用regmap
背景 在学习SPI的时候,看到了某个rtc驱动中用到了regmap,在学习了对应的原理以后,也记录一下如何使用. 介绍 在Linu 3.1开始,Linux引入了regmap来统一管理内核的I2C, S ...
- 在高通lk中添加自定义源文件
在高通lk中添加自定义源文件 背景 在lk开发中,需要添加一个自定义功能,但是又不希望代码污染无关的文件(把无关代码添加到某个源文件中是一种罪). 以添加一个aw9523b.c的驱动为例,在aboot ...
- Android7.0 配置JACK支持多用户同时编译
# Android7.0 配置JACK支持多用户同时编译 reference: https://blog.csdn.net/whorus1/article/details/80364772 https ...
- C语言的简单学习
C语言是编译型语言,先编译再运行,通常用gcc进行编译,于是安装了Ubuntu操作系统.至于编辑器,VS Code也能用,先sudo apt install build-essential gdb,再 ...