一.Ceph组件

  • OSDs:存储设备
  • Monitors:集群监控组件
  • RBD:对象存储网关
  • MDSs:存放文件系统的元数据.(但对象存储和块存储设备是不需要使用该服务的)
  • Ceph版本镜像:ceph/daemon:latest-octopus 版本号:
      ceph version 15.2.13 (c44bc49e7a57a87d84dfff2a077a2058aa2172e2) octopus (stable)

二.在 3 台服务器进行如下初始化 

1.配置 hosts

cat >> /etc/hosts <<EOF
192.168.1.96 ceph1
192.168.1.97 ceph2
192.168.1.98 ceph3
EOF

每台主机的主机名需更改

cat >> /etc/hostname <<EOF
Ceph1
EOF

2.建立信任关系

#ssh-keygen免密登录

[root@ceph1 ]# ssh-keygen  -t rsa    -f ~/.ssh/id_rsa   -C "jyy"

#回车完成后, 将拷贝公钥

[root@ceph1 .ssh]# ssh-copy-id ceph2   #输入服务器密码

#验证服务器

[root@ceph1 .ssh]# ssh ceph2

3.磁盘初始化

#在作为cephFS服务端的主机上新挂载一块硬盘

[root@ceph1 ~]# fdisk -l

#现将其分区和格式化 (输入n,然后一路默认最后输入w,完成分区)

[root@ceph1 ~]# fdisk /dev/sdb

#然后格式化

[root@ceph1 ~]# mkfs.xfs -f /dev/sdb1

#然后挂载到目录

[root@ceph1 ~]# mkdir -p /data

在/etc/fstab 追加如下内容

[root@ceph1 ~]# cat >> /etc/fstab <<EOF
/dev/sdb1              /data             xfs    defaults        0 0
EOF

最后执行 mount /dev/sdb1 /data 挂载,使用 df -h 查看挂载情况

[root@ceph1 ~]# mount /dev/sdb1 /data
[root@ceph1 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G  9.0M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root    50G  1.6G   49G    4% /
/dev/mapper/centos-home   46G   33M   46G    1% /home
/dev/sda1               1014M  151M  864M   15% /boot
tmpfs                    379M     0  379M    0% /run/user/0
/dev/sdb1                 79G   57M   75G    1% /data

4.安装 docker

略过

#私有镜像添加私有云mckj61.com

cat >> /etc/docker/daemon.json << EOF
{"registry-mirrors": ["https://wg8ooncv.mirror.aliyuncs.com"],"insecure-registries":["mckj61.com"]
}
EOF

#hosts域名解析

cat >> /etc/hosts <<EOF
192.168.1.95 mckj61.com
EOF

拉取ceph私有镜像

[root@ceph1 ~]# docker pull mckj61.com:octopus

5.创建目录

mkdir -p /data/ceph/{admin,etc,lib,logs}
chown -R 167:167 /data/ceph/  #docker内用户id是167,这里进行授权

6.内核优化

#调整内核参数

cat >> /etc/sysctl.conf << EOF
kernel.pid_max=4194303
vm.swappiness = 0
EOFsysctl -p

# read_ahead, 通过数据预读并且记载到随机访问内存方式提高磁盘读操作,根据一些Ceph的公开分享,8192是比较理想的值

echo "8192" > /sys/block/sda/queue/read_ahead_kb

# I/O Scheduler,关于I/O Scheculder的调整,简单说SSD要用noop,SATA/SAS使用deadline。

echo "deadline" > /sys/block/sdb/queue/schedulerecho "noop" > /sys/block/sdb/queue/scheduler

7.其他配置

把容器内的 ceph 命令 alias 到本地,方便使用,其他 ceph 相关命令也可以参考添加:

echo 'alias ceph="docker exec mon ceph"' >> /etc/profile
source /etc/profile

部署 ceph

Ps:以下操作均在 192.168.1.96(ceph1)上进行。

将6个shell脚本拷贝到/data/ceph/admin/

a.启动 mon

1.在主机ceph1上运行 start_mon.sh,成功启动后会生成配置数据。接着 ceph 主配置文件,在  追加如下内容:

cat >>/data/ceph/etc/ceph.conf <<EOF
# 容忍更多的时钟误差
mon clock drift allowed = 2
mon clock drift warn backoff = 30
# 允许删除pool
mon_allow_pool_delete = true
[mgr]
# 开启WEB仪表盘
mgr modules = dashboardEOF

2.拷贝所有数据(已包含脚本)到另外 2 台服务器:

scp -r /data/ceph ceph2:/data/
scp -r /data/ceph ceph3:/data/

3.通过远程 ssh,在ceph1主节点上依次启动 mon

bash /data/ceph/admin/start_mon.sh
ssh ceph2 bash /data/ceph/admin/start_mon.sh
ssh ceph3 bash /data/ceph/admin/start_mon.sh

4.查看集群状态 ceph -s

如果能够看到 ceph2 和 ceph3 则表示集群创建成功,此时应该是 HEALTH_WARN 状态,因为还没有创建 osd。

b.启动 OSD

在执行start_osd.sh脚本之前,首先需要在mon节点生成osd的密钥信息,不然直接运行启用会报错,命令如下:

[root@ceph1 ~]# docker exec -it mon ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring

在ceph1主节点上依次执行 start_osd.sh 脚本

bash /data/ceph/admin/start_osd.sh
ssh ceph2 bash /data/ceph/admin/start_osd.sh
ssh ceph3 bash /data/ceph/admin/start_osd.sh

全部 osd 都启动后,稍等片刻后执行 ceph -s 查看状态。

PS:osd的个数最好在奇数个。

c.启动 MGR

MGR 是 ceph 自带仪表盘监控

在ceph1主节点上依次执行start_mgr.sh

bash /data/ceph/admin/start_mgr.sh
ssh ceph2 bash /data/ceph/admin/start_mgr.sh
ssh ceph3 bash /data/ceph/admin/start_mgr.sh

d.启动 RGW

同样还是需要在mon节点生成rgw的密钥信息

[root@ceph1 ~]# docker exec -it mon ceph auth get client.bootstrap-rgw -o /var/lib/ceph/bootstrap-rgw/ceph.keyring

在ceph1主节点上依次执行start_rgw.sh

bash /data/ceph/admin/start_rgw.sh
ssh ceph2 bash /data/ceph/admin/start_rgw.sh
ssh ceph3 bash /data/ceph/admin/start_rgw.sh

e.启动 MDS

在ceph1主节点上依次执行start_mds.sh

bash /data/ceph/admin/start_mds.sh
ssh ceph2 bash /data/ceph/admin/start_mds.sh
ssh ceph3 bash /data/ceph/admin/start_mds.sh

f.启动 RBD

同样还是需要在mon节点生成rbd的密钥信息

[root@ceph1 ~]# docker exec -it mon ceph auth get client.bootstrap-rbd-mirror -o /var/lib/ceph/bootstrap-rbd-mirror/ceph.keyring

在ceph1主节点上依次执行start_rbd.sh

bash /data/ceph/admin/start_rbd.sh
ssh ceph2 bash /data/ceph/admin/start_rbd.sh
ssh ceph3 bash /data/ceph/admin/start_rbd.sh

四.安装Dashboard管理后台

首先确定主节点,通过ceph -s查看集群状态,找到mgr为active的那个节点

在主节点上执行:

开启dashboard功能

[root@ceph2 ~]# docker exec mgr ceph mgr module enable dashboard

创建证书

[root@ceph2 ~]# docker exec mgr ceph dashboard create-self-signed-cert

创建登陆用户与密码

[root@ceph2 ~]# docker exec mgr ceph dashboard ac-user-create root administrator -i passwdold

注:passwd加入明文密码。文件路径/etc/passwd.  新版ceph账号密码需要 -i <file-containing-password>

配置外部访问IP

[root@ceph2 ~]# docker exec mgr ceph config set mgr mgr/dashboard/server_addr 192.168.1.97

配置外部访问端口

[root@ceph2 ~]# docker exec mgr ceph config set mgr mgr/dashboard/server_port 8080

关闭https(如果没有证书或内网访问, 可以关闭)

[root@ceph2 ~]# docker exec mgr ceph config set mgr mgr/dashboard/ssl false

重启Mgr DashBoard服务

[root@ceph2 ~]# docker restart mgr

查看Mgr DashBoard服务信息

[root@ceph2 ~]# docker exec mgr ceph mgr services{"dashboard": "http://ceph2:8080/"
}

访问地址:http://192.168.1.97:8080/

五.创建FS文件系统

在主节点执行即可。

创建Data Pool

[root@ceph1 ~]# docker exec osd ceph osd pool create cephfs_data 128 128

创建Metadata Pool

[root@ceph1 ~]# docker exec osd ceph osd pool create cephfs_metadata 64 64

注意: 如果受mon_max_pg_per_osd限制, 不能设为128,可以调小点, 改为64。

创建CephFS

[root@ceph1 ~]# docker exec osd ceph fs new jyy cephfs_metadata cephfs_data

查看FS信息

[root@ceph1 ~]# ceph fs ls
name: jyy, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

六.查看整个集群信息

至此, 整个集群就已经搭建完毕, 通过ceph -s 命令, 可以查看整个集群信息,我们规划的所有节点都已创建成功并加入集群。

[root@ceph1 ~]# ceph -scluster:id:     0c3dfb1a-b868-4814-a3d4-eeae45072b2fhealth: HEALTH_ERRModule 'dashboard' has failed: Timeout('Port 8080 not free on 192.168.1.97.',)mons ceph1,ceph2,ceph3 are very low on available spaceservices:mon:        3 daemons, quorum ceph1,ceph2,ceph3 (age 5h)mgr:        ceph1(active, since 45h), standbys: ceph2, ceph3mds:        jyy:1 {0=ceph3=up:active} 2 up:standbyosd:        3 osds: 3 up (since 47h), 3 in (since 5w)rbd-mirror: 3 daemons active (24715, 74118, 77131)rgw:        3 daemons active (ceph1, ceph2, ceph3)task status:data:pools:   9 pools, 249 pgsobjects: 3.70k objects, 5.1 GiBusage:   18 GiB used, 282 GiB / 300 GiB availpgs:     249 active+cleanio:client:   23 KiB/s wr, 0 op/s rd, 3 op/s wr

问题1:
#禁用不安全模式!(health: HEALTH_WARN

mons are allowing insecure global_id reclaim)

解决方法:

[root@ceph1 ~]# docker exec -it mon ceph config set mon auth_allow_insecure_global_id_reclaim false

ceph v15.2.13版本[octopus]分布式集群部署相关推荐

  1. Hadoop3.3.4最新版本安装分布式集群部署

    Index of /dist/hadoop/commonhttps://archive.apache.org/dist/hadoop/common 集群规划: 注意: NameNode和Seconda ...

  2. K8S集群部署kube-Prometheus监控Ceph(版本octopus)集群、并实现告警。

    K8S集群部署kube-Prometheus监控Ceph(版本octopus)集群.并实现告警. 一.背景描述 公司K8S集群后端存储采用的是cephfs,测试环境经常性出现存储故障,虽然最后都解决了 ...

  3. redis 槽点重新分配 集群_5000+字硬核干货!Redis 分布式集群部署实战

    原理: Redis集群采用一致性哈希槽的方式将集群中每个主节点都分配一定的哈希槽,对写入的数据进行哈希后分配到某个主节点进行存储. 集群使用公式(CRC16 key)& 16384计算键key ...

  4. 17_clickhouse分布式集群部署

    23.ClickHouse分布式集群部署 23.1.集群部署 23.1.1.准备工作 节点规划: 主机名 IP地址 分片 副本 clickhouse1 192.168.106.103 shard1 副 ...

  5. minio分布式集群部署

    minio分布式集群部署 分布式 Minio 可以让你将多块硬盘或者多台服务器组成一个对象存储服务.由于硬盘分布在不同的节点上,分布式 Minio 避免了单点故障.MinioMinio分布式模式可以帮 ...

  6. 百度开源联邦学习框架 PaddleFL:简化大规模分布式集群部署

    百度开源联邦学习框架 PaddleFL:简化大规模分布式集群部署 作者 | 钰莹近两年,联邦学习技术发展迅速.作为分布式的机器学习范式,联邦学习能够有效解决数据孤岛问题,让参与方在不共享数据的基础上联 ...

  7. quartz分布式集群部署并且可视化配置job定时任务

    2019独角兽企业重金招聘Python工程师标准>>> 项目使用quartz框架完成了定时任务集群部署调度,并且对quartz进一步封装完成在web界面可动态配置定时任务.定时任务如 ...

  8. HBase完全分布式集群部署

    1.简介 HBase是一个分布式的.面向列的开源数据库,它不同于一般的关系数据库,是一个适合于非结构化数据存储的数据库.另一个不同的是HBase基于列的而不是基于行的模式.HBase使用和 BigTa ...

  9. 技术干货实战(4)- 分布式集群部署模式下Nginx如何实现用户登录Session共享(含详细配置与代码实战)

    原文链接:技术干货实战(4)- 分布式集群部署模式下Nginx如何实现用户登录Session共享(含详细配置与代码实战) 最近有小伙伴催更,让debug多写点技术干货,以便多学习.巩固一些技能:没办法 ...

最新文章

  1. 数学家的亿万商业王国:先后创建“验证码”和“多邻国”,20岁就被盖茨亲自挖去微软!...
  2. Android开发3g、wap、net的区别
  3. android java包_android SDk中常用的java包介绍
  4. Linux安装程序Anaconda分析
  5. JZ2440驱动开发之环境搭建
  6. container资源限制
  7. DllMain加载其他DLL造成的死锁问题及其解决办法
  8. 解决vue2+vue-cli3项目ie兼容问题
  9. Unity3D内容加密保护
  10. ubuntu 程序卡主解决方案
  11. 光纤模块和光纤收发器匹配问题
  12. 词法语法分析器EDG C++
  13. HDOJ 1066 题解
  14. 运动模糊 motion blur
  15. linux 查找文件命令
  16. 文件太大notepad 打不开怎么办
  17. 洛谷1781 宇宙总统
  18. 【华东师范大学自然科学版】一种面向双中台双链架构的内生性 数据安全交互协议研究——CSCD
  19. IM开发者的零基础通信技术入门(一):通信交换技术的百年发展史(上)
  20. 银行计算机招聘题库,2020山西银行招聘考试题库:计算机模拟试题(五)

热门文章

  1. MindMaster思维导图国内版更名“亿图脑图MindMaster”国产软件加速崛起!
  2. OVAL验证框架帮助文档
  3. Beagle填充之坑ERROR: REF field is not a sequence of A, C, T, G, or N characters at
  4. 数据结构c语言版第四章题库,严蔚敏《数据结构(c语言版)习题集》答案第四章 串...
  5. cobaltstrike 远控
  6. Java后端工程师必备书单(从Java基础到分布式)
  7. Docker - 应用镜像
  8. php开发cms漏洞,bagecms漏洞复现
  9. 参会指南丨CDEC 2019中国数字智能生态大会正确参会姿势
  10. 关于拿蓝桥杯省一这件事