一、架构组件
Monitor(Mon):维护集群状态,包括集群成员关系和映射信息。
Object Storage Daemon(OSD):存储数据、处理数据复制、恢复、重平衡任务,是数据存储的核心。
Manager(Mgr):管理集群的监控、日志、元数据等扩展功能。
Metadata Server(MDS):用于Ceph文件系统(CephFS),管理文件系统元数据。
二、网络规划
三、基础配置
3.1配置网络
修改配置文件/etc/netplan/50-cloud-init.yaml文件
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
addresses:
– 192.168.100.151/24
gateway4: 192.168.100.254
nameservers:
addresses: [192.168.100.1]
运行命令启用配置sudo netplan apply
可使用sudo apt install network-manager安装网络配置工具,创建配置文件/etc/netplan/01-network-manager-all.yaml文件
network:
version: 2
renderer: NetworkManager
运行sudo nmtui命令启用图形化操作更简单,添加两个bond,并配置IP地址,配置完成后使用sudo systemctl restart NetworkManager重启网络服务,启用网络配置。
3.2修改主机名
三台主机分别修改主机名
sudo hostnamectl set-hostname ceph-node1
sudo hostnamectl set-hostname ceph-node2
sudo hostnamectl set-hostname ceph-node3
3.3修改hosts文件
三个节点都需要修改/etc/hosts文件,添加以下内容:
192.168.100.151 ceph-node1
192.168.100.152 ceph-node2
192.168.100.153 ceph-node3
10.0.0.151 ceph-node1
10.0.0.152 ceph-node2
10.0.0.153 ceph-node3
3.4配置时区
配置时区:sudo timedatectl set-timezone Asia/Shanghai
查看时区:timedatectl show
3.5配置时间同步
安装chrony:sudo apt install chrony
修改配置文件:sudo vi /etc/chrony/chrony.conf
添加:pool 192.168.100.2 iburst
启动时间服务:sudo systemctl enable chrony –now && sudo systemctl restart chrony
查看同步:chronyc tracking
3.6安装组件
更新:sudo apt-get update
安装组件:sudo apt install lvm2 python3 python3-pip
重启主机:sudo reboot
3.7安装docker
安装必要的软件包,以允许apt通过HTTPS使用仓库:
sudo apt-get install ca-certificates curl gnupg lsb-release
添加Docker的官方GPG密钥:
sudo curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add –
添加软件源
sudo add-apt-repository “deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable”
安装最新版本docker
sudo apt-get install docker-ce docker-ce-cli containerd.io
注:node1在4.2节中会自动安装docker,但不是最新版本,其他节点需要手动安装相同版本docker,所以不如在4.2之前统一安装相同版本docker。
四、集群安装
4.1安装初始化工具
在节点node1上安装cephadm工具:
sudo apt install -y cephadm ceph-common
4.2初始化集群
执行以下命令初始化ceph集群, 该命令会拉取cephadm对应版本的ceph组件容器镜像,然后并根据网络等初始化参数进行部署相关组件。
sudo cephadm bootstrap –mon-ip 192.168.100.151 –cluster-network 10.0.0.0/24 –allow-fqdn-hostname
工作流程说明:
1.在本地主机上拉取容器镜像,为新集群创建Monitor和Manager守护程序。
2.为Ceph集群生成新的SSH密钥,并将其添加到root用户的/root/.ssh/authorized_keys 文件中。
3.将公钥的副本写入/etc/ceph/ceph.pub。
4.将最小配置文件写入/etc/ceph/ceph.conf。需要此文件才能与Ceph守护进程通信。
5.将client.admin管理(特权)密钥的副本写入/etc/ceph/ceph.client.admin.keyring 。
6.将_admin标签添加到引导主机。默认情况下,任何具有此标签的主机都将获得 /etc/ceph/ceph.conf和/etc/ceph/ceph.client.admin.keyring的副本。
部署过程输出
$ sudo cephadm bootstrap –mon-ip 192.168.100.151 –cluster-network 10.0.0.0/24 –allow-fqdn-hostname
[sudo] password for joyou:
Verifying podman|docker is present…
Verifying lvm2 is present…
Verifying time synchronization is in place…
Unit chrony.service is enabled and running
Repeating the final host check…
docker (/usr/bin/docker) is present
systemctl is present
lvcreate is present
Unit chrony.service is enabled and running
Host looks OK
Cluster fsid: ad96ff08-944c-11ef-961c-8dae1dabdbb0
Verifying IP 192.168.100.151 port 3300 …
Verifying IP 192.168.100.151 port 6789 …
Mon IP `192.168.100.151` is in CIDR network `192.168.100.0/24`
Mon IP `192.168.100.151` is in CIDR network `192.168.100.0/24`
Pulling container image quay.io/ceph/ceph:v17…
Ceph version: ceph version 17.2.7 (b12291d110049b2f35e32e0de30d70e9a4c060d2) quincy (stable)
Extracting ceph user uid/gid from container image…
Creating initial keys…
Creating initial monmap…
Creating mon…
Waiting for mon to start…
Waiting for mon…
mon is available
Assimilating anything we can from ceph.conf…
Generating new minimal ceph.conf…
Restarting the monitor…
Setting mon public_network to 192.168.100.0/24
Setting cluster_network to 10.0.0.0/24
Wrote config to /etc/ceph/ceph.conf
Wrote keyring to /etc/ceph/ceph.client.admin.keyring
Creating mgr…
Verifying port 9283 …
Waiting for mgr to start…
Waiting for mgr…
mgr not available, waiting (1/15)…
mgr not available, waiting (2/15)…
mgr not available, waiting (3/15)…
mgr not available, waiting (4/15)…
mgr not available, waiting (5/15)…
mgr not available, waiting (6/15)…
mgr is available
Enabling cephadm module…
Waiting for the mgr to restart…
Waiting for mgr epoch 5…
mgr epoch 5 is available
Setting orchestrator backend to cephadm…
Generating ssh key…
Wrote public SSH key to /etc/ceph/ceph.pub
Adding key to root@localhost authorized_keys…
Adding host ceph-node1…
Deploying mon service with default placement…
Deploying mgr service with default placement…
Deploying crash service with default placement…
Deploying prometheus service with default placement…
Deploying grafana service with default placement…
Deploying node-exporter service with default placement…
Deploying alertmanager service with default placement…
Enabling the dashboard module…
Waiting for the mgr to restart…
Waiting for mgr epoch 9…
mgr epoch 9 is available
Generating a dashboard self-signed certificate…
Creating initial admin user…
Fetching dashboard port number…
Ceph Dashboard is now available at:
URL: https://ceph-node1:8443/
User: admin
Password: ncz9rjq8sf
Enabling client.admin keyring and conf on hosts with “admin” label
Saving cluster configuration to /var/lib/ceph/ad96ff08-944c-11ef-961c-8dae1dabdbb0/config directory
Enabling autotune for osd_memory_target
You can access the Ceph CLI as following in case of multi-cluster or non-default config:
sudo /usr/sbin/cephadm shell –fsid ad96ff08-944c-11ef-961c-8dae1dabdbb0 -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring
Or, if you are only running a single cluster on this host:
sudo /usr/sbin/cephadm shell
Please consider enabling telemetry to help improve Ceph:
ceph telemetry on
For more information see:
https://docs.ceph.com/docs/master/mgr/telemetry/
Bootstrap complete.
部署后,提示dashboard的登录地址和权限,记得保存。
Ceph Dashboard is now available at:
URL: https://ceph-node1:8443/
User: admin
Password: ncz9rjq8sf
4.3登陆管理页面
使用上一步结尾地址和用户名密码登陆管理页面
输入旧密码和新密码,点击Change Password修改密码
重新输入用户admin和新密码
扩展:
如果忘记了初始化密码, 也可以使用命令修改dashboard密码:
echo “admin@12345” | ceph dashboard ac-user-set-password admin -i –
输出:
{“username”: “admin”, “password”: “$2b$12$xoDkxE3.mCr6bThmUSrpJOiBcLRvGjPGLYIAYCQOz492jxdur18za”, “roles”: [“administrator”], “name”: null, “email”: null, “lastUpdate”: 1729498208, “enabled”: true, “pwdExpirationDate”: null, “pwdUpdateRequired”: false}
查看集群现有节点
$ sudo ceph orch host ls
[sudo] password for joyou:
HOST ADDR LABELS STATUS
ceph-node1 192.168.100.151 _admin
1 hosts in cluster
4.4配置免密登陆
三个节点启用root,并开启root的ssh功能
启用root用户
sudo passwd root,输入密码
进入root账户:su
打开root ssh权限
#sudo vi /etc/ssh/sshd_config
#PermitRootLogin prohibit-password
PermitRootLogin yes //此行为添加或修改
#sudo systemctl restart ssh
生成秘钥
#su
#ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <回车>
Enter passphrase (empty for no passphrase): <回车>
Enter same passphrase again: <回车>
复制秘钥到node1
#ssh-copy-id 192.168.100.151
说明:此步骤只需在node2和node3上执行。
为以后方便管理,可在三个节点互相执行,使三个节点全部免密登陆。
在node1执行
# cp /root/.ssh/authorized_keys /etc/ceph/ceph.pub
注:此步骤在ceph部署文档说明中自动执行,但在实际部署过程中未执行。
node1节点对其他节点进行ssh免密登录,在初始化后,cephadm会生成一对ssh密钥,存放在/etc/ceph/目录。执行以下命令,把秘钥放到其他节点上:
# ssh-copy-id -f -i /etc/ceph/ceph.pub ceph-node2
# ssh-copy-id -f -i /etc/ceph/ceph.pub ceph-node3
4.5添加其他节点
在管理页面,打开Cluster>Hosts页面,点击Add
输入节点名称和地址,点击Add Host
显示添加完成
此处需要等待一段时间,将在节点上自动安装ceph组件
查看节点
查看节点中的磁盘
扩展:
使用命令添加节点:ceph orch host add ceph-node3 192.168.100.153
使用命令删除节点:ceph orch host rm ceph-node3
4.6添加OSD设备
打开Cluster>OSDs页面,点击Create按钮
选择基于容量、带宽、性能的策略,点击Create OSDs
自动将物理磁盘添加为OSD
扩展:
使用命令将物理磁盘添加到ceph集群:
ceph orch daemon add osd ceph-node1:/dev/sdb,/dev/sdc
-
/dev/sdb设备被格式化为lvm格式
-
将一个设备规划成一个PV、VG和LV,命名格式是VG+LV
命令查看OSD状态:ceph osd tree
参数说明:
新版Ceph默认是使用bluestore引擎,osd格式化后挂载到主机的/var/lib/ceph/<Ceph_Cluster_ID>/osd.<OSD_ID>/目录中。 指定osd0路径,执行命令查看:
root@ceph-node1:~# ll /var/lib/ceph/38c60b7c-8c6f-11ef-8b92-c929f534b368/osd.0/
total 72
drwx—— 2 167 167 4096 Oct 18 14:13 ./
drwx—— 14 167 167 4096 Oct 18 14:13 ../
lrwxrwxrwx 1 167 167 93 Oct 18 14:13 block -> /dev/ceph-bdd67cca-30c4-4bb7-99b2-7e8b613f8e75/osd-block-3ff1a40f-8794-4241-b110-73438330491a
-rw——- 1 167 167 37 Oct 18 14:13 ceph_fsid
-rw——- 1 167 167 277 Oct 18 14:18 config
-rw——- 1 167 167 37 Oct 18 14:13 fsid
-rw——- 1 167 167 142 Oct 18 14:18 keyring
-rw——- 1 167 167 6 Oct 18 14:13 ready
-rw——- 1 167 167 3 Oct 18 14:13 require_osd_release
-rw——- 1 167 167 10 Oct 18 14:13 type
-rw——- 1 167 167 38 Oct 18 14:18 unit.configured
-rw——- 1 167 167 48 Oct 18 14:13 unit.created
-rw——- 1 167 167 90 Oct 18 14:13 unit.image
-rw——- 1 167 167 361 Oct 18 14:13 unit.meta
-rw——- 1 167 167 1644 Oct 18 14:13 unit.poststop
-rw——- 1 167 167 2827 Oct 18 14:13 unit.run
-rw——- 1 167 167 330 Oct 18 14:13 unit.stop
-rw——- 1 167 167 2 Oct 18 14:13 whoami
目录结构说明:
4.7查看集群状态
执行以下命令查看集群状态:ceph -s
输出如下:
cluster:
id: 38c60b7c-8c6f-11ef-8b92-c929f534b368
health: HEALTH_WARN
clock skew detected on mon.ceph-node2
services:
mon: 3 daemons, quorum ceph-node1,ceph-node3,ceph-node2 (age 75m)
mgr: ceph-node3.ctgktz(active, since 68m)
osd: 6 osds: 6 up (since 74m), 6 in (since 74m)
data:
pools: 1 pools, 1 pgs
objects: 2 objects, 449 KiB
# 集群可用容量大小共计60GB
usage: 1.7 GiB used, 58 GiB / 60 GiB avail
pgs: 1 active+clean
字段说明:
集群信息(Cluster Information)
服务状态(Services Information)
数据状态(Data Information)
五、存储配置
5.1文件系统
创建文件系统:
ceph fs volume create cephfs
注:cephfs是文件系统名称,创建完成后,会自动创建与其关联的cephfs.cephfs.data和cephfs.cephfs.meta池。
也可按常规流程先手动创建池,再创建文件系统
ceph osd pool create cephfs_metadata
ceph osd pool create cephfs_data
ceph fs new cephfs cephfs_metadata cephfs_data
注:存储池默认为3副本。
删除文件系统
关闭文件系统:ceph fs set cephfs down true
删除文件系统:ceph fs rm cephfs
删除池:
将允许删除设置为允许:ceph config set mon “mon_allow_pool_delete” true
删除池:ceph osd pool delete cephfs_data cephfs_data –yes-i-really-really-mean-it
注意:删除池命令中,池的名称要填写两遍。
创建子卷组:ceph fs subvolumegroup create cephfs volumegroup
注:cephfs为现有卷,volumegroup为子卷组
查看子卷组:ceph fs subvolumegroup ls cephfs
删除子卷组:ceph fs subvolumegroup rm cephfs volumegroup
创建子卷:ceph fs subvolume create cephfs cephfs_sub1 –group_name volumegroup
注:cephfs为现有卷,cephfs_sub1为子卷名,volumegroup为子卷组名
如果不加–group_name volumegroup,会在卷cephfs卷下创建子卷不在已有子卷组中,GUI显示为_nogroup。
查看子卷:ceph fs subvolume create cephfs cephfs_sub1 –group_name volumegroup
注:如果子卷不在子卷组中则不添加–group_name volumegroup
删除子卷:ceph fs subvolume rm cephfs cephfs_sub1 –group_name volumegroup
注:如果子卷不在子卷组中则不添加–group_name volumegroup
配置配额
打开File Systems>卷名>Directories页面,可在卷、子卷组、子卷设置配额,最大文件数量和最大容量。
创建快照
点击下方Create按钮
输入快照名称或默认,点击Create Snapshot按钮
完成快照创建
创建快照策略
启用快照策略功能:ceph mgr module enable snap_schedule
创建快照:ceph fs snap-schedule add / 1h <2024-11-08T17:00:00> <–fs cephfs>
说明:/为快照目录,1h为每1小时一个快照,<2024-11-08T17:00:00>可选开始时间,<–fs cephfs>多卷时添加
查看快照策略:ceph fs snap-schedule list /
删除快照策略:ceph fs snap-schedule remove / <1h> 多个快照时可选<1h>
启用快照策略:ceph fs snap-schedule activate / <1h> 多个快照时可选<1h>
挂载文件系统
使用mount挂载文件系统
安装客户端:apt install ceph-common
#mkdir -p -m 755 /etc/ceph
# scp -r [email protected]:/etc/ceph/ceph.conf /etc/ceph/
#chmod 644 /etc/ceph/ceph.conf
#scp -r [email protected]:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
#chmod 600 /etc/ceph/ceph.client.admin.keyring
# mount -t ceph [email protected]=/ /test
或者
mount -t ceph :/ /test -o name=admin
mount -t ceph :/ /test -o name=admin,fs=cephfs2
添加开机启动
编辑/etc/fstab
[email protected]=/ /test ceph mon_addr=192.168.0.1:6789,noatime,_netdev 0 0
使用ceph-fuse挂载文件系统
安装客户端:apt install ceph-fuse
#mkdir -p -m 755 /etc/ceph
# scp -r [email protected]:/etc/ceph/ceph.conf /etc/ceph/
#chmod 644 /etc/ceph/ceph.conf
#scp -r [email protected]:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
#chmod 600 /etc/ceph/ceph.client.admin.keyring
ceph-fuse -n client.admin /test
ceph-fuse –id admin -r /volume/volumegroup/cephfs_sub1 /test 挂载子目录
ceph-fuse –id admin –client_fs mycephfs2 /mnt/mycephfs2 挂载非默认文件系统
添加开机启动
编辑/etc/fstab
none /test fuse.ceph ceph.id=admin,_netdev,defaults 0 0
或挂载子目录
none /test fuse.ceph ceph.id=admin,ceph.client_mountpoint=/path/to/dir,_netdev,defaults 0 0
卸载和mount挂载一样
使用纯命令挂载
从MDS节点查看秘钥:cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
key = AQALuixnsnQmMBAA7qaQfyXUrhfoq7A11JWJKg==
caps mds = “allow *”
caps mgr = “allow *”
caps mon = “allow *”
caps osd = “allow *”
挂载ceph存储:
mount -t ceph 192.168.100.151:6789,192.168.100.152:6789,192.168.100.153:6789:/ /test -o name=admin,secret=AQALuixnsnQmMBAA7qaQfyXUrhfoq7A11JWJKg==
挂载子卷:
mount -t ceph 192.168.100.151:6789,192.168.100.152:6789,192.168.100.153:6789:/volumes/volumegroup/cephfs_sub1/8702888d-b6c8-435f-80f7-36c09333adec /test -o name=admin,secret=AQALuixnsnQmMBAA7qaQfyXUrhfoq7A11JWJKg==
NFS挂载
打开Cluster>Services页面,点击Create按钮,选择Type:nfs,输入id,Count:3,点击Create Servcie按钮
打开NFS页面,选择卷,选择路径,选择位置,点击Create NFS export按钮
安装客户端apt install nfs-common
挂载文件系统:mount -t nfs 192.168.100.151:/nfs /test
5.2块设备
创建块存储池
打开Pools>Pools List页面,点击Create
输入名称,选择Pool type:replicated,选择Application:rbd,点击下方Create Pool按钮
或者使用命令
创建池:ceph osd pool create blockpool \\blockpool为池的名字
初始化池:rbd pool init blockpool
注:存储池默认为3副本。
创建块设备用户
rbd默认使用ceph的admin用户,但建议创建低于管理员的用户使用。
ceph auth get-or-create client.qemu mon ‘profile rbd’ osd ‘profile rbd pool=vms, profile rbd-read-only pool=images’ mgr ‘profile rbd pool=images’
以创建一个ID为qemu的Ceph用户为例,该用户对池vms具有读写权限,对池images具有只读权限。
ceph auth get-or-create命令的输出是指定ceph用户ID的keyring,可以写入/etc/ceph/ceph.client.{ID}.keyring。
使用rbd命令是通过指定–id {id} argument when using the “rbd来指定用户,可选。
创建块设备镜像
在向节点添加块设备之前,必须在Ceph存储集群中为其创建镜像。
打开Block>Images页面,点击Create按钮
输入Name和Size,选择Pool,点击Create RBD按钮创建镜像
使用命令创建镜像:
rbd create –size 10240 blockpool/vm
在池blockpool中创建一个大小为1G的镜像名字为vm
所创建镜像都是精简制备的,GUI通过选择镜像,点击Edit可以修改镜像大小,也可通过命令修改大小:
rbd resize –size 2048 vm //增大到2G
rbd resize –size 2048 vm –allow-shrink //缩小到2G
通过选择镜像,可以删除Delete镜像,也可将其移动到回收站Move to Trash,并制定保留日期
如果删除到回收站,可在Trash页面,选择删除或恢复镜像
通过命令操作:
删除镜像:rbd rm blockpool/vm
删除到回收站:rbd trash mv blockpool/vm
从回收站恢复:rbd trash restore blockpool/2bf4474b0dc51 –image vm
从回收站删除:rbd trash rm blockpool/2bf4474b0dc51
创建镜像快照
在Bolck>Images页面,打开镜像,选择Snapshots页面,点击Create按钮
保持默认或修改快照名,点击Create RBD Snapshot创建快照
选择快照,可Rollback回滚快照,或复制重命名删除快照
通过命令执行快照操作:
创建快照:rbd snap create blockpool/vm@vm-snap1
列出快照:rbd snap ls blockpool/vm
回滚快照:rbd snap rollback blockpool/vm@vm-snap1
删除快照:rbd snap rm blockpool/vm@vm-snap1
删除所有快照:rbd snap purge blockpool/vm
克隆快照:
克隆将访问父快照,如果用户 无意中删除了父快照。为防止数据丢失,您必须 在克隆快照之前保护快照
选择快照,点击Protect
保护快照完成
选择快照,点击Clone
输入名称,点击Clone RBD
克隆快照完成
使用命令执行克隆快照:
保护快照:rbd snap protect blockpool/vm@vm-snap1
克隆快照:rbd snap clone blockpool/vm@vm-snap1 blockpool/vm1
取消快照保护:rbd snap unprotect blockpool/vm@vm-snap1
查看快照子项:rbd children blockpool/vm@vm-snap1
整合快照:rbd flatten blockpool/vm1
删除快照:blockpool/vm@vm-snap1
挂载块设备
安装客户端:apt install ceph-common
#mkdir -p -m 755 /etc/ceph
# scp -r [email protected]:/etc/ceph/ceph.conf /etc/ceph/
#chmod 644 /etc/ceph/ceph.conf
#scp -r [email protected]:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
#chmod 600 /etc/ceph/ceph.client.admin.keyrin
挂载镜像:rbd device map blockpool/vm –id admin
镜像挂载到/dev/rbd0
卸载镜像rbd device unmap /dev/rbd0
iSCSI挂载
打开Cluster>Services页面,点击Create按钮,选择type:iscsi,输入id,输入count:3,选择池,输入节点IP以逗号隔开,输入用户名密码,点击Create Service
打开Block>iSCSI页面,查看已添加iSCSI网关
打开Block>iSCSI>Targets页面,点击Create按钮
自动生成iqn或修改,Portals选择三个节点公共IP,选择镜像,点击Create Target按钮
在客户端安装iscsi客户端和multipath多路径软件
修改多路径配置文件/etc/multipath.conf
devices {
device {
vendor “LIO-ORG”
product “TCMU device”
hardware_handler “1 alua”
path_grouping_policy “failover”
path_selector “queue-length 0”
failback 60
path_checker tur
prio alua
prio_args exclusive_pref_bit
fast_io_fail_tmo 25
no_path_retry queue
}
}
重启多路径软件systemctl reload multipathd
发现目标门户:iscsiadm -m discovery -t st -p 192.168.100.151
登陆到目标:iscsiadm -m node -l
自动挂载:iscsiadm -m node -o update -n node.startup -v automatic
查看多路径识别:multipath -ll
5.3对象存储
添加网关服务
打开Cluster>Services页面,点击Create按钮,选择type:rgw,输入id,输入count:3,点击Create Service按钮
打开Object Gateway>Gateways页面,查看网关
添加用户
打开Object Gateway>Users页面,创建或编辑现有用户
点击Keys后面查看按钮
查看Access Key和Secret Key
创建桶
打开Object Gateway>Buckets页面,点击Create按钮,输入桶名称,选择用户,点击Create Bucket按钮创建桶