首页 > 其他分享 >ceph

ceph

时间:2022-12-24 22:22:06浏览次数:37  
标签:deploy -- ceph cluster mon cephadmin

*/5 * * * * /usr/sbin/netdate time.aliyun.com &> /dev/null && hwclock -w &> /dev/null

apt install -y apt-transport-https ca-certificates curl software-properties-common

导入key

wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -

添加源

echo "deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic main" >> /etc/apt/sources.list

ceph管理节点上创建

创建 ceph 集群部署用户 cephadmin cephadmin #部署和管理ceph集群的普通用户 ceph 用户是安装ceph后自动创建的,用于启动ceph-mon/ceph-mgr等进程 cephadm #ceph v15版本开始的一个部署工具   ceph 集群安装完成后会自动创建 ceph 用户(ceph 集群默认会使用 ceph 用户运行各服务进程,如 ceph-osd 等),因此推荐 使用除了 ceph 用户之外的比如 cephuser、cephadmin 这样的普通用户去部署和 管理 ceph 集群   cephadmin 仅用于通过 ceph-deploy 部署和管理 ceph 集群的时候使用,比如首次初始 化集群和部署集群、添加节点、删除节点等,ceph 集群在 node 节点、mgr 等节点会使用 ceph 用户启动服务进程。   groupadd -r -g 2088 cephadmin && useradd -r -m -s /bin/bash -u 2088 -g 2088 cephadmin && echo cephadmin:123456 | chpasswd 活得sudo权限 echo "cephadmin ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

su - cephadmin
ssh-keygen

ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]

 

sudo vim /etc/hosts

10.4.7.133 ceph-deploy.example.local ceph-deploy
10.4.7.134 ceph-mon1.example.local ceph-mon1
10.4.7.135 ceph-mon2.example.local ceph-mon2
10.4.7.136 ceph-mon3.example.local ceph-mon3
10.4.7.137 ceph-mgr1.example.local ceph-mgr1
10.4.7.138 ceph-mgr2.example.local ceph-mgr2
10.4.7.139 ceph-node1.example.local ceph-node1
10.4.7.140 ceph-node2.example.local ceph-node2
10.4.7.141 ceph-node3.example.local ceph-node3
10.4.7.142 ceph-node4.example.local ceph-node4

 

安装 ceph 部署工具   # apt install python-pip # pip2 install ceph-deploy  

# su - cephadmin
$ mkdir ceph-cluster

$ cd ceph-cluster/
$ ceph-deploy -h 检查

Ubuntu 各服务器需要单独安装 Python2: cephadmin@ceph-deploy:~/ceph-cluster$  sudo apt install python2.7 -y cephadmin@ceph-deploy:~/ceph-cluster$  sudo  (所有主机)

集群初始化:

 

 fsid集群id  可以指定  不指定自己会创建

网络

[--cluster-network CLUSTER_NETWORK]  内网访问 仅用于ceph集群做心跳检测  数据复制
[--public-network PUBLIC_NETWORK]

mon 集群中先启动

cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy new --cluster-network 192.168.1.0/24 --public-network 10.4.7.0/24 ceph-mon1.example.local ceph-mon2.example.local ceph-mon3.example.local 

 

初始化 ceph 存储节点 初始化时间:存储节点加到ceph之前   初始化 node 节点: cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy install --no-adjust-repos (不管理目标主机的repo文件)--nogpgcheck(不做校验) ceph-node1 ceph-node2 ceph-node3 ceph-node4 安装 ceph-mon 服务: ceph-mon节点 root@ceph-mon1:~# apt-cache madison ceph-mon root@ceph-mon1:~# apt install -y ceph-mon root@ceph-mon2:~# apt install -y ceph-mon root@ceph-mon3:~# apt install -y ceph-mon   ceph 集群添加 ceph-mon 服务: cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy mon create-initial   启动集群中的mon服务

 

分发 admin 秘钥: 在 ceph-deploy 节点把配置文件和 admin 密钥拷贝至 Ceph 集群需要执行 ceph 管理命令的 节点,从而不需要后期通过 ceph 命令对 ceph 集群进行管理配置的时候每次都需要指定 ceph-mon 节点地址和 ceph.client.admin.keyring 文件,另外各 ceph-mon 节点也需要同步 ceph 的集群配置文件与认证文件。 如果在 ceph-deploy 节点管理集群:   #先安装 ceph 的公共组件 cephadmin@ceph-deploy:~/ceph-cluster$ sudo apt install ceph-common  

 

 admin  推送配置文件  和认证文件  后面的是推送到的主机

cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy admin ceph-node1 ceph-node2 ceph-node3 ceph-node4

推送给本机

cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy admin ceph-deploy

认证文件权限有问题

认证文件的属主和属组为了安全考虑,默认设置为了 root 用户和 root 组,如果需要 ceph 用户也能执行 ceph 命令,那么就需要对 ceph 用户进行授权,

 

允许用户有读写权限  那个节点执行命令   那个节点执行

cephadmin@ceph-deploy:~$ sudo setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring

cephadmin账号已经可以执行命令 了

cephadmin@ceph-deploy:~/ceph-cluster$ ceph -s 查看集群状态

 

 

 root@ceph-node1:~# setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring

root@ceph-node2:~# setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring

root@ceph-node3:~# setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring

root@ceph-node4:~# setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring

 

部署 ceph-mgr 节点: root@ceph-mgr1:~# apt-cache madison ceph-mgr root@ceph-mgr1:~# apt install -y  ceph-mgr   root@ceph-mgr2:~# apt install -y ceph-mgr   cephadmin@ceph-deploy:~$ ceph-deploy mgr create ceph-mgr1

mgr进程启动了

#需要禁用非安全模式通信

 

动态配置;cephadmin@ceph-deploy:~/ceph-cluster$ ceph config set mon  auth_allow_insecure_global_id_reclaim false (重启后也有效)

 

查看版本

 

 查看磁盘

cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy disk list ceph-node1

cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy disk list ceph-node2
cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy disk list ceph-node3
cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy disk list ceph-node4

 

使用 ceph-deploy disk zap 擦除各 ceph node 的 ceph 数据磁盘: ceph-node1 ceph-node2 ceph-node3 的存储节点磁盘擦除过程如下: cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy disk zap ceph-node1 /dev/sdb

 

 cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy disk zap ceph-node2 /dev/sdb

cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy disk zap ceph-node3 /dev/sdb

cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy disk zap ceph-node4 /dev/sdb

添加 OSD:   集群重启 osd会自动重启 数据分类保存方式:

提升性能  可以换成ssd  nvme 

cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy osd --help

添加 OSD cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy osd create ceph-node1 --data /dev/sdb ceph-node1

 这里有个对应关系

osd ID:0   ceph-node1:/dev/sdb

 

ceph-deploy osd create ceph-node2 --data /dev/sdb

ceph-deploy osd create ceph-node3 --data /dev/sdb

ceph-deploy osd create ceph-node4 --data /dev/sdb

 

从 RADOS 移除 OSD: Ceph 集群中的一个 OSD 是一个 node 节点的服务进程且对应于一个物理磁盘设备,是一个 专用的守护进程。在某 OSD 设备出现故障,或管理员出于管理之需确实要移除特定的 OSD 设备时,需要先停止相关的守护进程,而后再进行移除操作。对于 Luminous 及其之后的版 本来说,停止和移除命令的格式分别如下所示: 1. 停用设备:ceph osd out {osd-num} 2. 停止进程:sudo systemctl stop ceph-osd@{osd-num} 3. 移除设备:ceph osd purge {id} --yes-i-really-mean-it 若类似如下的 OSD 的配置信息存在于 ceph.conf 配置文件中,管理员在删除 OSD 之后手 动将其删除

 cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd out --help

测试上传与下载数据: 存取数据时,客户端必须首先连接至 RADOS 集群上某存储池,然后根据对象名称由相关的 CRUSH 规则完成数据对象寻址。于是,为了测试集群的数据存取功能,这里首先创建一个 用于测试的存储池 mypool,并设定其 PG 数量为 32 个。 $ ceph -h #一个更底层的客户端命令 $ rados -h #客户端命令   创建存储池

cephadmin@ceph-deploy:~/cep

cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd pool ls
device_health_metrics
mypool

h-cluster$ ceph osd pool create mypool 32 32
pool 'mypool' created

 

cephadmin@ceph-deploy:~/ceph-cluster$ ceph pg ls-by-pool mypool | awk '{print $1,$2,$15}'

每个pg有三个osd

 

 

当前的 ceph 环境还没还没有部署使用块存储和文件系统使用 ceph,也没有使用对象存储 的客户端,但是 ceph 的 rados 命令可以实现访问 ceph 对象存储的功能: 上传文件: 上传的存储池是mypool   上传后是msg1 cephadmin@ceph-deploy:~/ceph-cluster$ sudo rados put msg1 /var/log/syslog --pool=mypool

 列出文件

cephadmin@ceph-deploy:~/ceph-cluster$ rados ls --pool=mypool
msg1

查看mypool中msg1的信息

cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd map mypool msg1

osdmap e27 pool 'mypool' (2) object 'msg1' -> pg 2.c833d430 (2.10) -> up ([3,2,0], p3) acting ([3,2,0], p3)

下载到本地

cephadmin@ceph-deploy:~/ceph-cluster$ sudo rados get msg1 --pool=mypool /opt/my.txt

 

 删除文件

cephadmin@ceph-deploy:~/ceph-cluster$ sudo rados rm msg1 --pool=mypool

 

mon禁止删除存储池

直接删出不掉

如果把存储池删除会导致把存储池内的数据全部删除,因此 ceph 为了防止误删除存储池设置了两个机制来防止误删除操作。 第一个机制是 NODELETE 标志,需要设置为 false 但是默认就是 false 了。 第二个机制是集群范围的配置参数 mon allow pool delete,默认值为 false,即监视器不允许删除存储池,可以在特定场合使用 tell 指令临时设置为(true)允许删除,在删除指定的 pool之后再重新设置为 false。

 cephadmin@ceph-deploy:~/ceph-cluster$ ceph tell mon.* injectargs --mon-allow-pool-delete=true  允许删除

删除存储值  cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd pool rm mypool mypool --yes-i-really-really-mean-it

 

关掉允许删除

 

 

扩展 ceph 集群实现高可用: 主要是扩展 ceph 集群的 mon 节点以及 mgr 节点,以实现集群高可用。 mon要选举 所以是要计数 扩展 ceph-mon 节点: Ceph-mon 是原生具备自选举以实现高可用机制的 ceph 服务,节点数量通常是奇数。 apt install ceph-mon ceph-deploy mon add ceph-mon2 ceph-deploy mon add ceph-mon3 cephadmin@ceph-deploy:~/ceph-cluster$ ceph quorum_status cephadmin@ceph-deploy:~/ceph-cluster$ ceph quorum_status --format json-pretty 扩展 mgr 节点    mgr不用选举 root@ceph-mgr2:~# apt install ceph-mgr

cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy mgr create ceph-mgr2

查看状态  

 

 

:创建 RBD 创建存储池

cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd pool create myrbd1 64 64  64个pg  64个组合

myrdb存储池使用rbd功能
cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd pool application enable myrbd1 rbd

通过 RBD 命令对存储池初始化

存储池初始化

cephadmin@ceph-deploy:~/ceph-cluster$  rbd pool init -p myrbd1

挂载不是挂载到存储池  挂载是挂载到存储池里的镜像

创建镜像 需要指定大小  位置

cephadmin@ceph-deploy:~/ceph-cluster$ rbd create myimg1 --size 5G --pool myrbd1

cephadmin@ceph-deploy:~/ceph-cluster$ rbd create myimg2 --size 3G --pool myrbd1 --image-format 2 --image-feature layering

列出指定的 pool 中所有的 img

cephadmin@ceph-deploy:~/ceph-cluster$ rbd ls --pool myrbd1
myimg1
myimg2

查看指定 rdb 的信息 cephadmin@ceph-deploy:~/ceph-cluster$ rbd --image myimg1 --pool myrbd1 info cephadmin@ceph-deploy:~/ceph-cluster$ rbd --image myimg2 --pool myrbd1 info

 

 centos挂载ceph块存储

客户端使用块存储: 当前 ceph 状态: centos 系统客户端配置 yum 源及 ceph 认证文件 # yum install epel-release # yum install https://mirrors.aliyun.com/ceph/rpm-octopus/el7/noarch/ceph-release-1-1.el7.noarch.rpm  -y yum install ceph-common scp ceph.conf ceph.client.admin.keyring  [email protected]:/etc/ceph/  客户端格式化磁盘并挂载使用 mkfs.est4  /dev/rdb0 客户端文件删除后  快存储的副本就删掉了  但是ceph空间不释放 客户端执行 fstrim -v /data #/data 为挂载点, fstrim 命令来自于英文词组 “filesystem trim” 的缩写,其功能是回收文件系统中未使用的块资源。 # mount -t xfs -o discard /dev/rbd0 /data/ #主要用于 SSD,立即触发闲置的块回收  删除文件 空间立即释放     ceph radosgw(RGW)对象存储网关: RGW 提供的是 REST 风格的 API 接口,客户端通过 http 与其进行交互,完成数据的增删改 查等管理操作。 radosgw 用在需要使用 RESTful API 接口访问 ceph 数据的场合,因此在使用 RBD 即块存 储得场合或者使用 cephFS 的场合可以不用启用 radosgw 功能。 4.2.1:部署 radosgw 服务: 如果是在使用 radosgw 的场合,则以下命令将 ceph-mgr1 服务器部署为 RGW 主机: root@ceph-mgr1:~# apt-cache madison radosgw root@ceph-mgr1:~# apt install  radosgw cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy --overwrite-conf rgw create ceph-mgr1 监听7480

Ceph-FS 文件存储: https://docs.ceph.com/en/latest/cephfs/ Ceph FS 即 ceph filesystem,可以实现文件系统共享功能,客户端通过 ceph 协议挂载并使 用 ceph 集群作为数据存储服务器。Ceph FS 需要运行 Meta Data Services(MDS)服务,其守护进程为 ceph-mds,ceph-mds 进程管理与 cephFS 上存储的文件相关的元数据,并协调对 ceph 存储集群的访问。 如下图: 数据的元数据保存在单独的一个存储池 cephfs-metadata(名字可自定义),因此元数据也是 基于 3 副本提高可用性,另外使用专用的 MDS 服务器在内存缓存元数据信息以提高对客户 端的读写响应性能

 

部署 MDS 服务: 在指定的 ceph-mds 服务器部署 ceph-mds 服务,可以和其它服务器混用(如 ceph-mon、ceph-mgr)  root@ceph-mgr1:~# apt-cache madison ceph-mds root@ceph-mgr1:~# apt install  ceph-mds cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy mds create ceph-mgr1  验证 MDS 服务: MDS 服务目前还无法正常使用,需要为 MDS 创建存储池用于保存 MDS 的数据。

cephadmin@ceph-deploy:~/ceph-cluster$ ceph mds stat
1 up:standby

创建 CephFS metadata 和 data 存储池: 使用 CephFS 之前需要事先于集群中创建一个文件系统,并为其分别指定元数据和数据相关的存储池,如下命令将创建名为 mycephfs 的文件系统,它使用 cephfs-metadata 作为元数据存储池,使用 cephfs-data 为数据存储池:

cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd pool create cephfs-metadata 32 32
pool 'cephfs-metadata' created

cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd pool create cephfs-data 64 64
pool 'cephfs-data' created

创建 cephFS 并验证: cephadmin@ceph-deploy:~/ceph-cluster$ ceph fs new --help fs new <fs_name> <metadata> <data> [--force] [--allow-

cephadmin@ceph-deploy:~/ceph-cluster$ ceph fs new mycephfs cephfs-metadata cephfs-data
new fs with metadata pool 8 and data pool 9
cephadmin@ceph-deploy:~/ceph-cluster$ ceph fs ls

name: mycephfs, metadata pool: cephfs-metadata, data pools: [cephfs-data ]

#查看指定 cephFS 状态 cephadmin@ceph-deploy:~/ceph-cluster$ ceph fs status mycephfs 验证 cepfFS 服务状态

cephadmin@ceph-deploy:~/ceph-cluster$ ceph mds stat

mycephfs:1 {0=ceph-mgr1=up:active}

客户端挂载 cephFS

 

root@ceph-client:~# mount -t ceph 10.4.7.134:6789:/ /data -o name=admin,secret=AQCwt6VjoyRqChAAvoUnFFi4oGQ8y6aIZU9FpQ==

 这里的IP写mon的 可以写三个可以写一个

 

共享存储 ceph 会调用他

 

 

 

标签:deploy,--,ceph,cluster,mon,cephadmin
From: https://www.cnblogs.com/tshxawen/p/16999742.html

相关文章

  • ceph分布式存储安装(ceph-deploy)
    ceph学习ceph简介和特性ceph时一个多版本存储系统,它把每一个待管理的数据量切分为一到多个固定带下的对象数据,并以其为原子单元完成数据存取。对象数据的地处存储服务......
  • ceph集群部署
    ceph01 20.168.59.11ceph02 20.168.59.12ceph03 20.168.59.13在ceph01 节点上执行设置主机名# hostnamectl set-hostname ceph01 修改网卡 ens33 的......
  • ceph PG 故障状态
    PG故障状态Creating(创建中)在创建POOL时,需要指定PG的数量,此时PG的状态便处于creating,意思是Ceph正在创建PGPeering(互联中)peering的作用主要是在PG及其副本所在的O......
  • ceph - Nautilus 踩坑记
    RGW编译rgw_file_marker时报错错误信息同BUILD_ERROR.txt.解决方法:合入nautilus:test/ceph_test_librgw_file*:Removeduplicatenames#43491这个PR。......
  • ceph 因权重问题导致pgs active+clean+remapped 状态
    1.现象:  2.原因:是因为前期权重调整不合理导致,调整回来就正常了3.操作步骤:cephosdcrushreweightosd.20.98317  # osd位置、权重值  权重值计算=osd磁......
  • 概述Ceph的架构与配置规范
    在云计算时代,计算虚拟化、软件定义存储、软件定义网络是IaaS的三大基础支柱。目前在软件定义存储市场,很多厂商均有自己的产品。有的基于文件系统,有的基于块设备,有的基于对象......
  • ceph pg修复过程
    1.通过命令查看哪些pg状态不一致cephpgdump|grepinconsistent2.根据输出的pgid进行一致性检查cephpgscrub1.23instructingpg1.23onosd.5toscrub 3.深......
  • ceph运维操作
    1.官方文档https://docs.ceph.com/en/quincy/2.基本命令2.1查看ceph使用状态cephdf2.2指定mon查看状态ceph-s--mon-host192.168.88.102.3指定配置文件......
  • openstack ceph
    OpenStack集成ceph详细过程可以查看ceph官方文档:​​cephdocument​​OpenStackQueens版本,1台控制节点controller,1台计算节点compute;1.创建存储池Glance:Glance可以把镜像......
  • ceph openstack 集成
    前言为什么要集成ceph???ceph官网:https://docs.ceph.com/en/latest/关于ceph:https://blog.csdn.net/mingongge/article/details/100788388参考连接:https://blog.csdn.net/jmil......