ceph 集群部署(cephadm)


方法1: (ansible)

ceph-ansible使用Ansible部署和管理Ceph集群。
(1)ceph-ansible被广泛部署。
(2)ceph-ansible未与Nautlius和Octopus中引入的新的Orchestrator API集成在一起,意味着更新的管理功能和仪表板集成不可用。

方法2:(ceph-deploy)

不再积极维护ceph-deploy。未在Nautilus之前的Ceph版本上进行测试。它不支持RHEL8,CentOS 8或更新的操作系统。

方法3:(cephadm)

版本说明:
ceph版本: Octopus / v15.2.1
安装方式: cephadm
系统版本: Centos8.1
python: python3

节点规划:

主机名 ip 角色
cmaster 10.1.1.12 monitor,mgr,rgw,mds,osd
cnode1 10.1.1.13 monitor,mgr,rgw,mds,osd
cnode2 10.1.1.14 monitor,mgr,rgw,mds,osd

节点说明:

monitor:Ceph监视管理节点,承担Ceph集群重要的管理任务,一般需要3或5个节点。
mgr: Ceph 集群管理节点(manager),为外界提供统一的入口。
rgw: Ceph对象网关,是一种服务,使客户端能够利用标准对象存储API来访问Ceph集群
mds:Ceph元数据服务器,MetaData Server,主要保存的文件系统服务的元数据,使用文件存储时才需要该组件
osd:Ceph存储节点Object Storage Daemon,实际负责数据存储的节点

初始化环境:

hostnamectl set-hostname masterhostnamectl set-hostname cnode1hostnamectl set-hostname cnode2
各节点配置hosts:
cat >> /etc/hosts <<EOF
10.1.1.12 cmaster
10.1.1.13 cnode1
10.1.1.14 cnode2可选命令:for i in {2..3};do scp /etc/hosts root@10.1.1.1$i:/etc/hosts
基础配置:
#关闭防火墙和selinux
systemctl disable --now firewalld
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
#配置时间同步
yum install -y chrony
systemctl enable --now chronyd
配置yum源:
#epel源
yum install -y epel-release  (epel-release-8-8.el8.noarch.rpm)
#阿里云ceph源,该源指定了ceph安装版本
cat >/etc/yum.repos.d/ceph.repo <<EOF
[Ceph]
name=Ceph packages for \$basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-octopus/el8/\$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-octopus/el8/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-octopus/el8/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
EOF

ssh免密配置:

ssh-keygen
...一路Enter
ssh-copy-id root@cmaster  //会有一次密码输入
ssh-copy-id root@cnode1
ssh-copy-id root@cnode2

安装docker :(所有节点操作,包括新增)

#配置阿里云yum源
dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#安装containerd.io
dnf install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm
dnf install -y  https://download.docker.com/linux/centos/8/x86_64/stable/Packages/containerd.io-1.3.7-3.1.el8.x86_64.rpm  --allowerasing#安装docker-ce
dnf install -y docker-ce#配置docker镜像加速
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://uyah70su.mirror.aliyuncs.com"]
}
EOF#启动docker服务
systemctl enable --now docker

安装cephadm:

下载cephadm脚本: (只在主节点操作)
mkdir my-cluster //没要求,我自己为了方便建的文件夹
cd my-cluster
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm  -o cephadm
或者:
curl https://raw.githubusercontent.com/ceph/ceph/v15.2.1/src/cephadm/cephadm -o cephadm
chmod +x cephadm
//**//下载出错:配置/etc/hosts 文件--—> 199.232.28.133 raw.githubusercontent.com安装python3:(所有节点执行)
yum install python3 -y配置ceph存储库  :(或指定版本)
./cephadm add-repo --release octopus或./cephadm add-repo --version 15.2.1安装适当软件包:
./cephadm install ceph-common  ceph  //可能出现编码格式错误./cephadm install修改编码(可选)1. export LANGUAGE=en_US.UTF-82. export LANG=en_US.UTF-8

引导新集群:

您需要知道用于集群的第一个监视器守护程序的IP地址。
如果有多个网络和接口,要确保选择任何可供访问Ceph群集的主机访问的网络和接口。

mkdir -p /etc/ceph
cephadm bootstrap --mon-ip 10.1.1.12##### 命令特点:在本地主机上为新集群创建监视和管理器守护程序。
为Ceph集群生成一个新的SSH密钥,并将其添加到root用户的/root/.ssh/authorized_keys文件中。
将与新集群进行通信所需的最小配置文件编写为/etc/ceph/ceph.conf。
将client.admin管理密钥的副本写入/etc/ceph/ceph.client.admin.keyring。
将公用密钥的副本写入 /etc/ceph/ceph.pub。
启动ceph:
该命令在安装了所有Ceph软件包的容器中启动bash shell
cephadm shell
添加新主机到集群:

在新主机的根用户authorized_keys文件中安装群集的公共SSH密钥 :

ssh-copy-id -f -i /etc/ceph/ceph.pub root@*<new-host>*
例如:
ssh-copy-id -f -i /etc/ceph/ceph.pub root@cnode1
ssh-copy-id -f -i /etc/ceph/ceph.pub root@cnode2

告诉Ceph,新节点是集群的一部分:

ceph orch host add *newhost*
例如
ceph orch host add cnode1
ceph orch host add cnode2第一次部署新节点时直接用上边的命令即可:
但是之后的节点新增有可能上述命令出错:
ceph orch host add cnode3 10.1.1.x  //后边跟上对应的IP
部署监视器

如果存在监视器使用的特定IP子网,则可以使用以下命令以CIDR格式(例如10.1.1.0/24)配置该IP子网:

ceph config set mon public_network *<mon-cidr-network>*
例如:
ceph config set mon public_network 10.1.1.0/24

要将监视器部署在一组特定的主机上

# ceph orch apply mon *<number-of-monitors>*
# ceph orch apply mon cmaster,cnode1,cnode2 //确保在此列表中包括第一台(引导)主机。
以下可选

可以通过使用主机标签来控制运行监视器的主机。要将mon标签设置为适当的主机:

ceph orch host label add *<hostname>* mon
例如:
ceph orch host label add cmaster mon
ceph orch host label add cnode1 mon
ceph orch host label add cnode2 mon
要查看当前的主机和标签:
ceph orch host ls

告诉cephadm根据标签部署监视器:

ceph orch apply mon label:mon

可以为每个监视器和控件明确地指定IP地址或CIDR网络。要禁用自动监视器部署:

ceph orch apply mon --unmanaged

要部署其他监视器:

ceph orch apply mon "cmaster,cnode1,cnode2"
# ceph orch daemon add mon *<host1:ip-or-network1> [<host1:ip-or-network-2>...]*
例如,要在newhost1IP地址上部署第二台监视器,10.1.2.123并newhost2在网络中部署第三台监视器10.1.2.0/24:
# ceph orch apply mon --unmanaged
# ceph orch daemon add mon newhost1:10.1.1.123
# ceph orch daemon add mon newhost2:10.1.1.0/24
该命令可能会造成混淆。因此,建议使用YAML规范。
每个“ ceph orch apply mon”命令都将取代之前的命令。
这意味着要将监视器应用于多个主机时,必须使用正确的基于逗号分隔列表的语法
如果使用的语法不正确,那么ceph将无法进行工作。例如:
# ceph orch apply mon cmaster
# ceph orch apply mon cnode1
# ceph orch apply mon cnode2这样只会导致一个主机上应用了监视器:主机3。
(第一个命令在host1上创建一个监视器。然后第二个命令在host1上创建一个监视器,然后在host2上创建一个监视器。然后第三个命令在host2上创建一个监视器,然后在host3上创建一个监视器。在这种情况下,此时,在host3上只有一个监视器。)为了确保将监视器应用于这三个主机,请运行以下命令:
# ceph orch apply mon "cmaster,cnode1,cnode2"
而不是使用“ ceph orch apply mon”命令,而是运行以下命令:
# ceph orch apply -i file.yaml
这是一个示例file.yaml文件:
service_type: mon
placement:hosts:- cmaster- cnode1- cnode2

部署osd:

存储设备清单可以显示为:
ceph orch device ls
可用存储设备的条件:
设备必须没有分区。
设备不得具有任何LVM状态。
不得安装设备。
该设备不得包含文件系统。
该设备不得包含Ceph BlueStore OSD。
设备必须大于5 GB。
创建osd的方法:
告诉Ceph使用任何可用和未使用的存储设备:
ceph orch apply osd --all-available-devices
1. ceph orch daemon add osd *<host>*:*<device-path>*
例如:
从特定主机上的特定设备创建OSD:ceph orch daemon add osd cmaster:/dev/sdbceph orch daemon add osd cnode1:/dev/sdbceph orch daemon add osd cnode2:/dev/sdb
2. 使用yaml文件定义设备的类型,型号,大小,等信息。完成创建ceph orch apply osd -i spec.yml (进行)
删除OSD节点:(安全)
1.停止osd进程
ceph osd stop x  //(x 可以通过ceph osd ls 查看)
停止osd的进程,这个是通知集群这个osd进程不在了,不提供服务了,因为本身没权重,就不会影响到整体的分布,也就没有迁移
2.将节点状态标记为out
ceph osd out osd.x
停止到osd的进程,这个是通知集群这个osd不再映射数据了,不提供服务了,因为本身没权重,就不会影响到整体的分布,也就没有迁移
3. 从crush中移除节点
ceph osd crush remove osd.x
这个是从crush中删除,
4. 删除节点
ceph osd rm osd.x
这个是从集群里面删除这个节点的记录ls
5. 删除节点认证(不删除编号会占住)
ceph auth del osd.x
这个是从认证当中去删除这个节点的信息**注意**
比如卸载了node3的某osd,(osd.x 即: node:/dev/sdb),在node3上执行以下操作,可以后继续使用node3:/dev/sdb1. lvremove /dev/ceph-3f728c86-8002-47ab-b74a-d00f4cf0fdd2/osd-block-08c6dc02-85d1-4da2-8f71-5499c115cd3c  // dev 后的参数可以通过lsblk查看
2. vgremove  ceph-3f728c86-8002-47ab-b74a-d00f4cf0fdd2
部署mds:(cephFS元数据守护程序)
ceph orch apply mds *<fs-name>* --placement="*<num-daemons>* [*<host1>* ...]"例如:
ceph orch apply mds myfs --placement="3 master node1 node2"
部署RGWS:
为特定领域和区域部署一组radosgw守护程序:
ceph orch apply rgw *<realm-name>* *<zone-name>* --placement="*<num-daemons>* [*<host1>* ...]"
例如:要 在myhost1和myhost2上部署两个服务于*<realm-name>*领域和*<zone-name>*区域的rgw守护程序:
# ceph orch apply rgw myorg us-east-1 --placement="2 cmaster cnode1 cnode2"说明:
myorg : 领域名  (realm-name)
us-east-1: 区域名 (zone-name)myrgwCephadm将等待运行正常的群集,并在部署rgw守护程序之前自动创建所提供的领域和区域(realm-name和zone-name不存在的情况)

可以使用以下radosgw-admin命令手动创建领域,区域组和区域:
(添加osd后下边的命令才会成功执行)

# radosgw-admin realm create --rgw-realm=<realm-name> --default
radosgw-admin realm create --rgw-realm=myrgw --default# radosgw-admin zonegroup create --rgw-zonegroup=<zonegroup-name>  --master --default
radosgw-admin zonegroup create --rgw-zonegroup=myzg  --master --default# radosgw-admin zone create --rgw-zonegroup=<zonegroup-name> --rgw-zone=<zone-name> --master --default
radosgw-admin zone create --rgw-zonegroup=myzg --rgw-zone=myzone --master --default# radosgw-admin period update --rgw-realm=<realm-name> --commit
radosgw-admin period update --rgw-realm=myrgw --commit
为RGW开启dashborad

此处请看(s3客户端配置)

部署NF网络文件系统:
要部署NFS Ganesha网关,请执行以下操作:
# ceph orch apply nfs *<svc_id>* *<pool>* *<namespace>* --placement="*<num-daemons>* [*<host1>* ...]"
例如,同一个服务ID部署NFS FOO,将使用RADOS池NFS和命名空间NFS-NS,:
# ceph orch apply nfs foo nfs-ganesha nfs-ns
ceph fs 部署:
ceph fs volume create *myfs*   //自定义文件系统名此命令回自动创建cephfs_date 和 cephfs_matedata 两个池创建:
ceph osd pool create cephfs_data  <pg_num>  // 可指定pg 数,默认最高副本级,128pg
ceph osd pool create cephfs_metadata  <pg_num> //可指定pg数创建文件系统:
ceph fs new <fs_name> <metadata> <data>
例如:
ceph fs new myfs cephfs_metadata cephfs_data
ceph fs ls  //进行fs 的查看
在CEPHFS中使用擦除编码池:(官网内容,可选)
您可以将擦除编码池用作CephFS数据池,只要它们启用了覆盖即可,操作如下:
ceph osd pool set my_ec_pool allow_ec_overwrites true请注意,仅当将OSDS与BlueStore后端一起使用时,才支持EC覆盖。
挂载文件系统:
启用密钥挂载:
1. (osd节点执行)
mkdir /mnt/mycephfs
2. (cephadm 版本,在主节点执行)1) cat /etc/ceph/ceph.client.admin.keyring   //获取admin密钥,保存为admin.secret  ,也可以不保存2) vi admin.secret3) 挂载cephfs (cnode1,cnode2为osd节点)3.1: mount -t ceph cnode1:6789,cnode2:6789:/ /mnt/mycephfs -o name=admin,secretfile=/root/admin.secret或  (AQD5ZORZsJYbMhAAoGEw/H9SGMpEy1KOz0WsQQ==)第一步所得密钥3.2: mount -t ceph master:6789,node1:6789,node2:6789:/ /mnt/mycephfs -o name=admin,secret=AQD5ZORZsJYbMhAAoGEw/H9SGMpEy1KOz0WsQQ==
关闭密钥挂载:
mount -t ceph cnode1:6789:/ /mnt/mycephfs永久挂载:
添加以下内容到/etc/fstab
[{ipaddress}:{port}]:/ {mount}/{mountpoint} ceph [name=username,secret=secretkey|secretfile=/path/to/secretfile],[{mount.options}]
例如:
10.1.1.8:6789/ /mnt/mycephfs ceph name=admin,secretfile=/etc/ceph/admin.secret 0 2卸载文件系统:
umount /mnt/mycephfs

ceph (cephadm)集群部署相关推荐

  1. Ceph分布式集群部署

    一.手动搭建Ceph分布式存储 案例环境: 系统 IP地址 主机名(登录用户) 承载角色 Centos 7.4 64Bit 1708 192.168.100.101 dlp

  2. 部署ceph分布式存储集群

    部署ceph分布式存储集群 本次ceph分布式存储集群部署基于centos7.4操作系统环境且服务器或PC硬件应具备4个硬盘. 1 安装CentOS 7.4操作系统 1.1 制作安装U盘 (1)安装U ...

  3. Ceph v12.2 Luminous基于ubuntu16.04集群部署

    第一次接触ceph集群,感谢官方的指导文档和许多网友提供的教程,糊糊涂涂算是把集群部署起来了.由于Luminous12.2刚发布不久,部署起来跟旧版本还是有些许差别,所以以此做下笔记也给需要的人做下参 ...

  4. 通过Charmed Ceph 在 H3C UniServer R4950 G5 服务器上 部署独立的Ubuntu Ceph 存储集群

    摘要 本文档提供了一个独立Ceph集群的构架参考,部署及各种访问方法.本测试在4台H3C UniServer R4950 G5服务器上构建了一个独立的可扩展.可靠和容错的Ceph存储集群.可以同时对外 ...

  5. centos7 ceph 集群部署

    ceph 一种为优秀的性能.可靠性和可扩展性而设计的统一的.分布式文件系统 一.Ceph必备组件 OSD(Object Storage Device) Ceph OSD守护进程(Ceph OSD)的功 ...

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

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

  7. 「Ceph集群部署」多机离线部署

    存储系统:ceph-14.2.22 操作系统:ubuntu-server-18.04 集群组织架构 在ceph集群中,安装了ceph软件的并且部署了一系列ceph集群服务的主机被称之为ceph集群节点 ...

  8. centos 6.4 ceph 分布式集群文件系统部署 手记

    Centos 6.4 ceph 分布式集群文件系统部署 0,  部署环境       IP ADDR       HOSTNAME    rule     192.168.1.120  master- ...

  9. Openstack云平台脚本部署之Ceph存储集群配置(十四)

    目录 一.简介 二.部署脚本 三.参考文档 四.源码 五.系列文章 一.简介 Openstack的后端存储对接Ceph分布式统一存储,将Glance镜像.Nova虚拟机及快照.Cinder-Volum ...

最新文章

  1. 两个时间计算毫秒在线_SPL 的日期时间函数(下)
  2. Linux 和 Windows 平台不同的 UCS-2 编码
  3. 用扫地机器人楼下吵吗_扫地机器人到底好不好用?说说我两年的使用体验!
  4. 计算机专硕专业课单科分数线,计算机考研|这两所自划线,单科没过线也能复试?...
  5. 四大招让无处不在的工作空间成为可能?揭秘Ivanti 的战略布局
  6. 易宝典文章——玩转Office 365中的Exchange Online服务 之二十六 根据文本内容筛选群发邮件...
  7. 《R语言数据挖掘:实用项目解析》——1.11 apply原理
  8. 哪个计算机无法做到双屏显示,[工具/ PC]如何在计算机上实现双屏显示?
  9. python从入门到精通需要多久-Python从入门到精通
  10. ubuntu chrome下载地址
  11. javasocket编程例子,给大家安排上!
  12. android 安装apk -99,Android APK 安装适配
  13. 小程序父子组件间传值(微信/支付宝/钉钉)
  14. 网络TDR测试软件,高分辨率TDR测试以及应用
  15. 怎么订到特价机票(有可能比火车票还便宜哦)
  16. 旷视科技——身份验证、活体检测、人脸比对
  17. 设置IE浏览器的版本方式
  18. image-rendering 像素化图像像素(实验中)
  19. 如何用浏览器测试post请求
  20. 用pygame为大家燃放新年烟花

热门文章

  1. 消失与存续——应用交付行业的跌宕演进
  2. windows提权思路
  3. h3c linux驱动 wn612_产品技术-H3C WN612双频无线网卡(802.11n)-新华三集团-H3C
  4. AO3400-ASEMI低功耗长效应管AO3400
  5. 日常学习——记使用POI多线程写Excel数据(续)
  6. 使用Python 训练OpenCV Cascade分类器 - 1
  7. MySQL创建无符号整数(int)及取值范围
  8. 爬虫系列:某家小区房产信息及POI数据获取
  9. 嵌入式linux驱动开发教程
  10. Linux-常用的系统监控