基于ceph-deploy部署Ceph集群

本文详细描述了如何在一个生产环境中部署Ceph集群,涉及网络配置、组件分离、硬件要求、操作系统准备、SSH免密登录设置、NTP同步以及Ceph的部署流程,包括创建存储池和客户端挂载RBD镜像等内容。
摘要由CSDN通过智能技术生成

 

Ceph生产环境推荐:
(1)存储集群全采用万兆网络
(2)集群网络(cluster-network,用于集群内部通讯)与公共网络(public-network,用于外部访问Ceph集群)分离
(3)mon、mds与osd分离部署在不同主机上(测试环境中可以让一台主机节点运行多个组件)
(4)OSD使用SATA亦可
(5)根据容量规划集群
(6)至强E5 2620 V3或以上CPU,64GB或更高内存
(7)集群主机分散部署,避免机柜的电源或者网络故障
column1column2角色
admin10.0.0.3admin(管理节点负责集群整体部署)、client
node0110.0.0.22mon、mgr、osd
node0210.0.0.59mon、mgr、osd
node0310.0.0.56mon、osd
client10.0.0.55client

一.环境准备

1.所有主机关闭和禁止防火墙

systemctl stop firewalld
sentenforce 0

2.根据规划设置主机名

hostname admin
hostname node01
hostname node02
hostname node03
hostname client

3.配置hosts解析,添加各自ip地址与主机名的映射关系

vim /etc/hosts
10.0.0.3 admin
10.0.0.22 node01
10.0.0.59 node02
10.0.0.56 node03
10.0.0.55 client

4.在所有节点上安装常用的软件和依赖包

yum -y install epel-release
yum -y install yum-plugin-priorities yum-utils ntpdate python-setuptools python-pip gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel zip unzip ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssh openssl-devel nss_ldap openldap openldap-devel openldap-clients openldap-servers libxslt-devel libevent-devel ntp libtool-ltdl bison libtool vim-enhanced python wget lsof iptraf strace lrzsz kernel-devel kernel-headers pam-devel tcl tk cmake ncurses-devel bison setuptool popt-devel net-snmp screen perl-devel pcre-devel net-snmp screen tcpdump rsync sysstat man iptables sudo libconfig git bind-utils tmux elinks numactl iftop bwm-ng net-tools expect snappy leveldb gdisk python-argparse gperftools-libs conntrack ipset jq libseccomp socat chrony sshpass

5.在admin管理节点上配置ssh免密登录所有节点

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
sshpass -p '1' ssh-copy-id -o StrictHostKeyChecking=no root@admin
sshpass -p '1' ssh-copy-id -o StrictHostKeyChecking=no root@node01
sshpass -p '1' ssh-copy-id -o StrictHostKeyChecking=no root@node02
sshpass -p '1' ssh-copy-id -o StrictHostKeyChecking=no root@node03


6.同步时间

systemctl restart chronyd
systemctl enable --now chronyd
systemctl status chronyd
timedatectl set-ntp true					#开启 NTP
timedatectl set-timezone Asia/Shanghai		#设置时区
chronyc -a makestep							#强制同步下系统时钟
timedatectl status							#查看时间同步状态
chronyc sources -v							#查看 ntp 源服务器信息
timedatectl set-local-rtc 0					#将当前的UTC时间写入硬件时钟

7.重启依赖于系统时间

timedatectl set-ntp true					#开启 NTP
timedatectl set-timezone Asia/Shanghai		#设置时区
chronyc -a makestep							#强制同步下系统时钟
timedatectl status							#查看时间同步状态
chronyc sources -v							#查看 ntp 源服务器信息
timedatectl set-local-rtc 0					#将当前的UTC时间写入硬件时钟

8.在所有节点上配置源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all && sudo yum makecache
yum update
删除local源
添加epel源
[epel]
name=扩展源
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
enabled=1
gpgcheck=0

9.重启所有主机

10.给所有node节点添加网卡和硬盘


修改node节点,添加网卡为外网网卡

echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan

lsblk


11.部署ceph集群

1>所有节点创建工作目录
mkdir -p /etc/ceph
2>在admin节点安装ceph-deploy部署工具
cd /etc/ceph
yum install -y ceph-deploy
ceph-deploy --version
3>在admin节点为其它节点安装Ceph软件包
ceph-deploy install --release nautilus node0{1..3} admin
4>生成初始配置
ceph-deploy new --public-network 10.0.0.0/24 --cluster-network 10.0.1.0/24 node01 node02 node03

ls /etc/ceph
ceph.conf					#ceph的配置文件
ceph-deploy-ceph.log		#monitor的日志
ceph.mon.keyring			#monitor的密钥环文件
5>在admin节点初始化mon节点
ceph-deploy mon create node01 node02 node03			#创建 mon 节点,由于 monitor 使用 Paxos 算法,其高可用集群节点数量要求为大于等于 3 的奇数台
ceph-deploy --overwrite-conf mon create-initial		#配置初始化 mon 节点,并向所有节点同步配置

ceph-deploy gatherkeys node01						#可选操作,向 node01 节点收集所有密钥
6>扩容mon节点
ceph-deploy mon add  node01
7>在admin节点处理ceph集群的节点
ceph-deploy --overwrite-conf config push node01 node02 node03		#向所有 mon 节点同步配置,确保所有 mon 节点上的 ceph.conf 内容必须一致

ceph-deploy admin node01 node02 node03			#本质就是把 ceph.client.admin.keyring 集群认证文件拷贝到各个节点
8>在admin节点上部署osd存储节点
ceph-deploy disk zap node01 /dev/sdb
ceph-deploy disk zap node02 /dev/sdb
ceph-deploy disk zap node03 /dev/sdb

ceph-deploy --overwrite-conf osd create node01 --data /dev/sdb
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdb
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdb
9>在admin节点扩容osd节点
ceph-deploy --overwrite-conf osd create node01 --data /dev/sdc
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdc
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdc
ceph-deploy --overwrite-conf osd create node01 --data /dev/sdd
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdd
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdd
10>部署mgr节点
#mgr至少要有两个节点来进行工作
ceph-deploy mgr create node01 node02

#禁用不安全模式:
ceph config set mon auth_allow_insecure_global_id_reclaim false
11>扩容mgr节点
ceph-deploy mgr create node01
ceph-deploy mgr create node02
ceph-deploy mgr create node03

ceph-deploy --overwrite-conf osd create node01 --data /dev/sdc
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdc
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdc

ceph-deploy --overwrite-conf osd create node01 --data /dev/sdd
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdd
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdd
12>在节点上开启监控模块
yum install -y ceph-mgr-dashboard

在节点上开启dashboard模块,禁用ssl连接,并配置dashboard监听的地址和端口

#开启 dashboard 模块
ceph mgr module enable dashboard --force

#禁用 dashboard 的 ssl 功能
ceph config set mgr mgr/dashboard/ssl false

#配置 dashboard 监听的地址和端口
ceph config set mgr mgr/dashboard/server_addr 0.0.0.0
ceph config set mgr mgr/dashboard/server_port 8000

#重启 dashboard
ceph mgr module disable dashboard
ceph mgr module enable dashboard --force

#确认访问 dashboard 的 url
ceph mgr services
13>浏览器验证访问
http://节点IP地址:8000,账号密码为admin/123


12.创建一个存储池

创建 Ceph 块存储系统 RBD 接口

服务端操作

1>创建一个名为 rbd-demo 的专门用于 RBD 的存储池
ceph osd pool create rbd-demo 64 64
2>将存储池转换为 RBD 模式
ceph osd pool application enable rbd-demo rbd
3>初始化存储池
rbd pool init -p rbd-demo			# -p 等同于 --pool
4>创建镜像
rbd create -p rbd-demo --image rbd-demo1.img --size 1G

可简写为:
rbd create rbd-demo/rbd-demo2.img --size 1G
5>镜像管理
查看存储池下存在哪些镜像
[root@admin ceph]#rbd ls -l -p rbd-demo


#查看镜像的详细信息
[root@admin ceph]#rbd info -p rbd-demo --image rbd-demo1.img
rbd image 'rbd-demo1.img':
	size 1 GiB in 256 objects
	order 22 (4 MiB objects)
	snapshot_count: 0
	id: 37447959d374
	block_name_prefix: rbd_data.37447959d374
	format: 2
	features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
	op_features: 
	flags: 
	create_timestamp: Sat Dec 16 21:59:19 2023
	access_timestamp: Sat Dec 16 21:59:19 2023
	modify_timestamp: Sat Dec 16 21:59:19 2023

修改镜像大小

rbd resize -p rbd-demo --image rbd-demo1.img --size 2G

#使用 resize 调整镜像大小,一般建议只增不减,如果是减少的话需要加选项 --allow-shrink

rbd resize -p rbd-demo --image rbd-demo1.img --size 1G --allow-shrink

删除镜像

#直接删除镜像
rbd rm -p rbd-demo --image rbd-demo1.img
rbd remove rbd-demo/rbd-demo1.img

#推荐使用 trash 命令,这个命令删除是将镜像移动至回收站,如果想找回还可以恢复
rbd trash move rbd-demo/rbd-demo1.img

#查看存储池下存在哪些镜像
rbd ls -l -p rbd-demo

#查看回收站内容
rbd trash list -p rbd-demo
5fc98fe1f304 rbd-demo1.img

#还原镜像
rbd trash restore rbd-demo/5fc98fe1f304

#再次查看存储池下存在哪些镜像
rbd ls -l -p rbd-demo
6>Linux客户端使用

客户端使用 RBD 有两种方式:

●通过内核模块KRBD将镜像映射为系统本地块设备,通常设置文件一般为:/dev/rbd*
●另一种是通过librbd接口,通常KVM虚拟机使用这种接口。

本例主要是使用Linux客户端挂载RBD镜像为本地磁盘使用。开始之前需要在所需要客户端节点上面安装ceph-common软件包,因为客户端需要调用rbd命令将RBD镜像映射到本地当作一块普通硬盘使用。并还需要把ceph.conf配置文件和授权keyring文件复制到对应的节点。

在管理节点创建并授权一个用户可访问指定的 RBD 存储池

#示例,指定用户标识为client.osd-mount,对另对OSD有所有的权限,对Mon有只读的权限
ceph auth get-or-create client.osd-mount osd "allow * pool=rbd-demo" mon "allow r" > /etc/ceph/ceph.client.osd-mount.keyring


#修改RBD镜像特性,CentOS7默认情况下只支持layering和striping特性,需要将其它的特性关闭
rbd feature disable rbd-demo/rbd-demo1.img object-map,fast-diff,deep-flatten

#将用户的keyring文件和ceph.conf文件发送到客户端的/etc/ceph目录下**
cd /etc/ceph
scp ceph.client.osd-mount.keyring ceph.conf root@client:/etc/ceph

linux客户端操作

#安装 ceph-common 软件包
[root@client ceph]#yum install -y ceph-common

#执行客户端映射
[root@client ceph]#cd /etc/ceph
[root@client ceph]#rbd map rbd-demo/rbd-demo1.img --keyring /etc/ceph/ceph.client.osd-mount.keyring --user osd-mount

#查看映射
[root@client ceph]#rbd showmapped
[root@client ceph]#rbd device list

#断开映射
[root@client ceph]#rbd unmap rbd-demo/rbd-demo1.img

#格式化并挂载
[root@client ceph]#mkfs.xfs /dev/rbd0
[root@client ceph]#mkdir /data/rbd01 -p
[root@client ceph]# mount /dev/rbd0 /data/rbd01
[root@client ceph]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 898M     0  898M   0% /dev
tmpfs                    910M     0  910M   0% /dev/shm
tmpfs                    910M  9.6M  901M   2% /run
tmpfs                    910M     0  910M   0% /sys/fs/cgroup
/dev/mapper/centos-root   50G  2.4G   48G   5% /
/dev/mapper/centos-home   47G   33M   47G   1% /home
/dev/sda1               1014M  151M  864M  15% /boot
tmpfs                    182M     0  182M   0% /run/user/0
/dev/rbd0               1014M   33M  982M   4% /data/rbd01


#在线扩容
在管理节点调整镜像的大小
[root@admin ceph]# rbd resize rbd-demo/rbd-demo1.img --size 5G

在客户端刷新设备文件
[root@client ceph]#xfs_growfs /dev/rbd0		    #刷新xfs文件系统容量
[root@client ceph]#resize2fs /dev/rbd0			#刷新ext4类型文件系统容量

#查看扩容后的容量
[root@client ceph]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 898M     0  898M   0% /dev
tmpfs                    910M     0  910M   0% /dev/shm
tmpfs                    910M  9.6M  901M   2% /run
tmpfs                    910M     0  910M   0% /sys/fs/cgroup
/dev/mapper/centos-root   50G  2.4G   48G   5% /
/dev/mapper/centos-home   47G   33M   47G   1% /home
/dev/sda1               1014M  151M  864M  15% /boot
tmpfs                    182M     0  182M   0% /run/user/0
/dev/rbd0                5.0G   34M  5.0G   1% /data/rbd01
  • 26
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值