admin

手动部署Ceph octopus集群

admin 运维技术 2022-11-08 418浏览 0

手动部署Ceph octopus集群

基础配置

三台环境为centos7.9,以下配置需要在每台机器上执行

配置hosts解析

cat>>/etc/hosts<<EOF
192.168.2.16node1
192.168.2.19node2
192.168.2.18node3
EOF

关闭防火墙和selinux

systemctlstopfirewalld&&systemctldisablefirewalld
setenforce0&&sed-i's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/config

分别在三个节点设置主机名

hostnamectlset-hostnamenode1
hostnamectlset-hostnamenode2
hostnamectlset-hostnamenode3

配置主机时间同步

systemctlrestartchronyd.service&&systemctlenablechronyd.service

使用yum安装

安装yum-plugin-priorities

yuminstallyum-plugin-priorities

安装依赖包

yuminstallsnappyleveldbgdiskpython-argparsegperftools-libsepel-release

添加ceph仓库

建议使用阿里的源,国外的太慢了

vim/etc/yum.repos.d/ceph.repo
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-15.2.8/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-15.2.8/el7/noarch/
gpgcheck=0

安装ceph

yuminstallceph-y

部署monitor节点

所有 Ceph 群集至少需要一个monitor,并且至少需要与存储在群集上的对象副本一样多的 OSD。引导初始mon是部署 Ceph 存储群集的第一步,这里我直接在node1、node2、node3创建三个mon。

在node1添加monitor

为集群生成唯一的fsid,fsid是群集的唯一标识符,代表 Ceph 存储群集主要用于 Ceph 文件系统的文件系统 ID

uuidgen

创建ceph配置文件,将生成的fsid添加到配置文件中

vim/etc/ceph/ceph.repo
[global]
fsid=9c079a1f-6fc2-4c59-bd4d-e8bc232d33a4

为群集创建keyring并生成monitor keyring。monitor通过密钥相互通信。必须生成具有monitor密钥的keyring,并在引导初始monitor时提供keyring。

ceph-authtool--create-keyring/tmp/ceph.mon.keyring--gen-key-nmon.--capmon'allow*'

生成管理员keyring,生成用户并将用户添加到client.admin keyring中。要使用 CLI 工具,必须有一个用户,并且还必须将用户添加到monitor keyring。

ceph-authtool--create-keyring/etc/ceph/ceph.client.admin.keyring--gen-key-nclient.admin--capmon'allow*'--caposd'allow*'--capmds'allow*'--capmgr'allow*'

生成引导 osd 密钥,生成用户并将用户添加到client.bootstrap-osd keyring中。

ceph-authtool--create-keyring/var/lib/ceph/bootstrap-osd/ceph.keyring--gen-key-nclient.bootstrap-osd--capmon'profilebootstrap-osd'--capmgr'allowr'

将生成的键添加到 ceph.mon.keyring

ceph-authtool/tmp/ceph.mon.keyring--import-keyring/etc/ceph/ceph.client.admin.keyring
ceph-authtool/tmp/ceph.mon.keyring--import-keyring/var/lib/ceph/bootstrap-osd/ceph.keyring

更改 ceph.mon.keyring的所有者。

chownceph:ceph/tmp/ceph.mon.keyring

使用主机名、主机 IP 地址和 FSID 生成monitor映射。将其保存为 :/tmp/monmap

monmaptool--create--addnode1192.168.2.16--addnode2192.168.2.19--addnode3192.168.2.18--fsid9c079a1f-6fc2-4c59-bd4d-e8bc232d33a4/tmp/monmap

查看生成的monitor映射文件

monmaptool--print/tmp/monmap

手动部署Ceph octopus集群

在monitor主机上创建默认数据目录,目录名是{cluster-name}-{hostname}格式

mkdir/var/lib/ceph/mon/ceph-node1
chmod777-R/var/lib/ceph/mon/ceph-node3

在node1节点对monitor进行初始化

ceph-mon--mkfs-inode1--monmap/tmp/monmap--keyring/tmp/ceph.mon.keyring

可以查看数据目录生成的文件

手动部署Ceph octopus集群

编辑ceph配置文件

[global]
fsid=9c079a1f-6fc2-4c59-bd4d-e8bc232d33a4
moninitialmembers=node1,node2,node3
monhost=192.168.2.16,192.168.2.19,192.168.2.18
monclockdriftallowed=.5
authclusterrequired=cephx
authservicerequired=cephx
authclientrequired=cephx
osdpooldefaultsize=3//创建pool的时候默认pool是3副本
osdpooldefaultminsize=2//pool最少可写的副本数为2
osdpooldefaultpgnum=8
osdpooldefaultpgpnum=8
osdcrushchooseleaftype=0

将配置文件拷贝到其他节点

scp/etc/ceph/ceph.confnode2:/etc/ceph/ceph.conf
scp/etc/ceph/ceph.confnode3:/etc/ceph/ceph.conf

将mon keyring,mon map及admin keyring拷贝到其他节点

scp/tmp/ceph.mon.keyringnode2:/tmp/ceph.mon.keyring
scp/etc/ceph/ceph.client.admin.keyringnode2:/etc/ceph/ceph.client.admin.keyring
scp/tmp/monmapnode2:/tmp/monmap
scp/tmp/ceph.mon.keyringnode3:/tmp/ceph.mon.keyring
scp/etc/ceph/ceph.client.admin.keyringnode3:/etc/ceph/ceph.client.admin.keyring
scp/tmp/monmapnode3:/tmp/monmap

在node2、node3上添加monitor

分别在这两个节点创建数据目录

mkdir/var/lib/ceph/mon/ceph-node2
chmod777-R/var/lib/ceph/mon/ceph-node2
mkdir/var/lib/ceph/mon/ceph-node3
chmod777-R/var/lib/ceph/mon/ceph-node3

分别在这两个节点对monitor进行初始化

ceph-mon--mkfs-inode2--monmap/tmp/monmap--keyring/tmp/ceph.mon.keyring
ceph-mon--mkfs-inode3--monmap/tmp/monmap--keyring/tmp/ceph.mon.keyring

分别在三个节点启动ceph-mon服务

systemctlstartceph-mon@node1&&systemctlenableceph-mon@node1
systemctlstartceph-mon@node2&&systemctlenableceph-mon@node2
systemctlstartceph-mon@node3&&systemctlenableceph-mon@node3

手动部署Ceph octopus集群

image.png

  • 可以看到提示3 monitors have not enabled msgr2"

执行以下命令恢复正常

cephmonenable-msgr2

手动部署Ceph octopus集群

image.png

创建MGR

在运行ceph-mon守护程序的每个节点上,还应该设置一个ceph-mgr守护程序。

创建密钥目录

所有mgr节点都要执行

sudo-ucephmkdir/var/lib/ceph/mgr/ceph-`hostname-s`
cd/var/lib/ceph/mgr/ceph-`hostname-s`

创建身份验证密钥

cephauthget-or-createmgr.`hostname-s`mon'allowprofilemgr'osd'allow*'mds'allow*'>keyring

启动mgr守护进程

systemctlenableceph-mgr@`hostname-s`&&systemctlstartceph-mgr@`hostname-s`

看样子状态有点异常,在所有节点执行下面的命令之后重启机器即可解决

  • Module ‘restful’ has failed dependency: No module named ‘pecan’
pip3installpecanwerkzeug

手动部署Ceph octopus集群

image.png

部署osd

Ceph提供了该ceph-volume实用程序,该实用程序可以准备逻辑卷,磁盘或分区以供Ceph使用。该ceph-volume实用程序通过增加索引来创建OSD ID。

创建osd

在node1执行

ceph-volumelvmcreate--data/dev/sdb

上面的创建过程可以分为两个阶段(准备和激活):

ceph-volumelvmprepare--data/dev/sdb
查看osdfsid
ceph-volumelvmlist
ceph-volumelvmactivate{ID}{FSID}

当创建完osd之后,我们发现osd服务已经起来了

手动部署Ceph octopus集群

当我们在node2、node3节点执行此命令的时候报错了,发现缺少密钥文件

手动部署Ceph octopus集群

拷贝密钥文件

scp/var/lib/ceph/bootstrap-osd/ceph.keyringnode2:/var/lib/ceph/bootstrap-osd/ceph.keyring
scp/var/lib/ceph/bootstrap-osd/ceph.keyringnode3:/var/lib/ceph/bootstrap-osd/ceph.keyring

修改密钥属主属组

chownceph.ceph/var/lib/ceph/bootstrap-osd/ceph.keyring

分别在node2、node3创建osd

ceph-volumelvmcreate--data/dev/sdb

也可以分步执行

ceph-volumelvmprepare--data/dev/sdb
##获取osdid和osdfsid
ceph-volumelvmlist
##激活osd
ceph-volumelvmactivate{ID}{FSID}

最后状态是这样的

手动部署Ceph octopus集群

添加MDS

创建mds数据目录

mkdir-p/var/lib/ceph/mds/ceph-`hostname-s`
chown-Rceph.ceph/var/lib/ceph/mds/ceph-`hostname-s`

创建keyring

ceph-authtool--create-keyring/var/lib/ceph/mds/ceph-`hostname-s`/keyring--gen-key-nmds.`hostname-s`

导入keyring并设置权限

cephauthaddmds.`hostname-s`osd"allowrwx"mds"allow"mon"allowprofilemds"-i/var/lib/ceph/mds/ceph-`hostname-s`/keyring
chownceph:ceph/var/lib/ceph/mds/ceph-`hostname-s`/keyring

修改ceph.conf配置文件

cat>>/etc/ceph/ceph.conf<<EOF
[mds.node1]
host=node1

[mds.node2]
host=node2

[mds.node3]
host=node3
EOF

启动mds服务

systemctlenableceph-mds@`hostname-s`&&systemctlstartceph-mds@`hostname-s`

现在状态应该是这样的

手动部署Ceph octopus集群

对象存储RGW安装

RGW是Ceph对象存储网关服务RADOS Gateway的简称,是一套基于LIBRADOS接口封装而实现的FastCGI服务,对外提供RESTful风格的对象存储数据访问和管理接口。RGW基于HTTP协议标准,因此非常适用于Web类的互联网应用场景,用户通过使用SDK或者其他客户端工具,能够很方便地接入RGW进行图片、视频以及各类文件的上传或下载,并设置相应的访问权限,共享给其他用户。

安装radosgw

yuminstallceph-radosgw-y

创建rgw相关的资源池

资源池列表及部分资源池功能介绍如下。

  • .rgw:region和zone配置信息。
  • .rgw.root:region和zone配置信息。
  • .rgw.control:存放notify信息。
  • .rgw.gc:用于资源回收。
  • .rgw.buckets:存放数据。
  • .rgw.buckets.index:存放元数据信息。
  • .rgw.buckets.extra:存放元数据扩展信息。
  • .log:日志存放。
  • .intent-log:日志存放。
  • .usage:存放用户已用容量信息。
  • .users:存放用户信息。
  • .users.email:存放用户E-mail信息。
  • .users.swift:存放swift类型的账号信息。
  • .users.uid:存放用户信息。
cephosdpoolcreate.rgw88
cephosdpoolcreate.rgw.root88
cephosdpoolcreate.rgw.control88
cephosdpoolcreate.rgw.gc88
cephosdpoolcreate.rgw.buckets88
cephosdpoolcreate.rgw.buckets.index88
cephosdpoolcreate.rgw.buckets.extra88
cephosdpoolcreate.log88
cephosdpoolcreate.intent-log88
cephosdpoolcreate.usage88
cephosdpoolcreate.users88
cephosdpoolcreate.users.email88
cephosdpoolcreate.users.swift88
cephosdpoolcreate.users.uid88

创建过程会遇到这个报错,原因是每个osd默认最多只支持250个pg,这里有两种解决办法,一种是删除之前创建的pool,并新建pool时把pg设置小一点,另一种则是修改osd默认最大pg数,这里我用了第二种,修改完配置文件后,重启mon

  • Error ERANGE: pg_num 8 size 3 would mean 771 total pgs, which exceeds max 750 (mon_max_pg_per_osd 250 * num_in_osds 3)

编辑配置文件

vim/etc/ceph/ceph.conf
[global]
mon_max_pg_per_osd=1000

#重启mon
systemctlrestartceph-mon@`hostname-s`

可以使用rados lspools查看是否创建成功

手动部署Ceph octopus集群

新建RADOSGW用户和keyring

创建keyring

ceph-authtool--create-keyring/etc/ceph/ceph.client.radosgw.keyring
chownceph:ceph/etc/ceph/ceph.client.radosgw.keyring

生成ceph-radosgw服务对应的用户和key

ceph-authtool/etc/ceph/ceph.client.radosgw.keyring-nclient.rgw.node1--gen-key
ceph-authtool/etc/ceph/ceph.client.radosgw.keyring-nclient.rgw.node2--gen-key
ceph-authtool/etc/ceph/ceph.client.radosgw.keyring-nclient.rgw.node3--gen-key

添加用户访问权限

ceph-authtool-nclient.rgw.node1--caposd'allowrwx'--capmon'allowrwx'/etc/ceph/ceph.client.radosgw.keyring
ceph-authtool-nclient.rgw.node2--caposd'allowrwx'--capmon'allowrwx'/etc/ceph/ceph.client.radosgw.keyring
ceph-authtool-nclient.rgw.node3--caposd'allowrwx'--capmon'allowrwx'/etc/ceph/ceph.client.radosgw.keyring

将keyring导入集群中

ceph-k/etc/ceph/ceph.client.admin.keyringauthaddclient.rgw.node1-i/etc/ceph/ceph.client.radosgw.keyring
ceph-k/etc/ceph/ceph.client.admin.keyringauthaddclient.rgw.node2-i/etc/ceph/ceph.client.radosgw.keyring
ceph-k/etc/ceph/ceph.client.admin.keyringauthaddclient.rgw.node3-i/etc/ceph/ceph.client.radosgw.keyring

编辑配置文件

cat>>/etc/ceph/ceph.conf<<EOF
[client.rgw.node1]
host=node1
keyring=/etc/ceph/ceph.client.radosgw.keyring
logfile=/var/log/radosgw/client.radosgw.gateway.log
rgw_frontends=civetwebport=8080
[client.rgw.node2]
host=node2
keyring=/etc/ceph/ceph.client.radosgw.keyring
logfile=/var/log/radosgw/client.radosgw.gateway.log
rgw_frontends=civetwebport=8080
[client.rgw.node3]
host=node3
keyring=/etc/ceph/ceph.client.radosgw.keyring
logfile=/var/log/radosgw/client.radosgw.gateway.log
rgw_frontends=civetwebport=8080
EOF

创建日志目录

mkdir/var/log/radosgw
chownceph:ceph/var/log/radosgw

拷贝keyring、ceph.confceph.conf到node2、node3

scp/etc/ceph/ceph.client.radosgw.keyringnode2:/etc/ceph/ceph.client.radosgw.keyring
scp/etc/ceph/ceph.client.radosgw.keyringnode3:/etc/ceph/ceph.client.radosgw.keyring
scp/etc/ceph/ceph.confnode2:/etc/ceph/ceph.conf
scp/etc/ceph/ceph.confnode3:/etc/ceph/ceph.conf

在node2、node3部署RGW

修改keyring属主

chownceph:ceph/etc/ceph/ceph.client.radosgw.keyring

创建日志目录并授权

mkdir/var/log/radosgw
chownceph:ceph/var/log/radosgw

启动rgw服务

systemctlstartceph-radosgw@rgw.`hostname-s`&&systemctlenableceph-radosgw@rgw.`hostname-s`

查看ceph状态,发现有个小问题

手动部署Ceph octopus集群

使用ceph health detail查看详情,根据提示enable即可

手动部署Ceph octopus集群

使用curl访问服务

手动部署Ceph octopus集群

手动部署Ceph octopus集群

继续浏览有关 系统运维 的文章
发表评论