阅读 292

Ubuntu18.04上部署Ceph(基于debian-pacific)

Ceph基础:

1.Ceph 是一个开源的分布式存储系统,同时支持对象存储、块设备、文件系统.
2.ceph 是一个对象(object)式存储系统,它把每一个待管理的数据流(文件等数据)切分为一到多个固定大小(默认 4 兆)的对象数据,并以其为原子单元(原子是构成元素的最小单元)完成数据的读写。
3.对象数据的底层存储服务是由多个存储主机(host)组成的存储集群,该集群也被称之为RADOS(reliable automatic distributed object store)存储集群,即可靠的、自动化的、分布式的对象存储系统。
4.librados 是 RADOS 存储集群的 API,支持 C/C++/JAVA/python/ruby/php/go等编程语言客户端。
 
 
Ceph涉及组件以及作用:
 

        1. Ceph监视器(ceph-mon):用于维护集群状态映射(maintains maps of the cluster state),比如 ceph 集群中有多少存储池、每个存储池有多少 PG 以及存储池和 PG的映射关系等,monitor map, manager map, the OSD map, the MDS map, and theCRUSH map,这些映射是 Ceph 守护程序相互协调所需的关键群集状态,此外监视器还负责管理守护程序和客户端之间的身份验证(认证使用 cephX 协议)。通常至少需要三个监视器才能实现冗余和高可用性

    2. Ceph管理器(ceph-mgr):ceph manager守护进程负责跟踪运行时指标和ceph集群当前的状态,包括存储利用率,当前性能指标和系统负载等,ceph-mgr还托管一些python模块,以实现基于web的ceph仪表盘和rest api,通常要实现高可用至少需要2个ceph-mgr进程,通常ceph-mon和ceph-mgr个数相同,1个ceph-mon同节点会伴随1个ceph-mgr守护进程。

    3. Ceph对象存储(ceph-osd):提供存储数据,操作系统上的一个磁盘就是一个 OSD 守护程序,OSD 用于处理 ceph集群数据复制,恢复,重新平衡,并通过检查其他 Ceph OSD 守护程序的心跳来向 Ceph监视器和管理器提供一些监视信息。通常至少需要 3 个 Ceph OSD 才能实现冗余和高可用性。

    4. Ceph元数据服务(ceph-mds):Ceph MDS为ceph文件系统存储元数据,注意Ceph块设备和对象存储不用mds存储元数据,Ceph MDS允许POSIX文件系统用户执行基本命令,而不会将压力都集中到Ceph OSD集群上,通常mds可以选择部署至少2个节点,可以和其他组件一起也可以分开。

 

基于以上,本次部署采用Ubuntu 18.04.5-server版本,Ceph采用pacific版

环境准备:计划采用9台虚拟机机分开部署,1台用于部署,3台监视,2台管理,最后3台存储节点,2个网段,一个用cluster,一个用于public

Cluster网段:172.16.1.0/24

Public网段: 192.168.79.0/24

 

具体规划如下:

 

 

基础配置:(这里可以先初始化一台模板,配置完后在克隆):

 

1.更换源,这里采用清华镜像地址:

 wget -q -O- ‘https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc‘ | apt-key add -
 
Ubuntu18.04.x:
 
cat /etc/apt/sources.list
 
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe
multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe
multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe
multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic main
# echo "deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic main"
>> /etc/apt/sources.list 
 
更换完成后,执行apt-get update && apt-get upgrade

 

 

2.时间同步:

apt update

apt install chrony -y

 vim /etc/chrony/chrony.conf
# 修改为阿?云时钟同步服务器
# 公?
server ntp.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp1.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp2.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp3.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp4.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp5.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp6.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp7.aliyun.com minpoll 4 maxpoll 10 iburst
# 重启服务
systemctl restart chrony
systemctl status chrony
systemctl enable chrony
# 查看时钟同步状态
 timedatectl status
# 写?系统时钟
hwclock -w
# 重启服务器
 reboot
 
3.更改IP地址
 

 

 配置完成后,执行netplan apply 

4.添加一个Ceph账户并给与权限,后期OSD挂载可能涉及

groupadd -r -g 2022 ceph && useradd -r -m-s /bin/bash -u 2022 -g 2022 ceph && echo ceph:123456 | chpasswd
echo "ceph   ALL=(ALL)    NOPASSWD: ALL" >> /etc/sudoers

 5.配置/etc/hosts主机解析

 

 

 在上面全部配置完成后,按规划地址克隆其他服务器,并更改IP

 

集群部署:

1.配置免秘钥登录

在 ceph-deploy 节点配置允许以非交互的方式登录到各节点
 
root@ceph-deploy:~# ssh-keygen -t rsa
root@ceph-deploy:~# ssh-copy-id 172.16.1.161
root@ceph-deploy:~# ssh-copy-id 172.16.1.162
略(这里可以写脚本,批量执行)
 
2.安装 ceph 部署工具:
 
root@ceph-deploy:~# apt-cache madison ceph-deploy
回显如下:
ceph-deploy | 2.0.1 | https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic/main amd64 Packages
ceph-deploy | 2.0.1 | https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic/main i386 Packages
ceph-deploy |1.5.38-0ubuntu1 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic/universe amd64 Packages
ceph-deploy | 1.5.38-0ubuntu | https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic/universe i386 Packages 

3.初始化 mon 节点:

[root@ceph-deploy ~]# mkdir ceph-cluster 
[root@ceph-deploy ~]# cd ceph-cluster/
 
初始化 mon 节点过程如下:
Ubuntu 各服务器需要单独安装 Python2:
root@ceph-mon1:~# apt install python2.7 -y
root@ceph-mon1:~# ln -sv /usr/bin/python2.7 /usr/bin/python2
 
完成后执行:ceph-deploy new --cluster-network 172.16.1.0/24 --public-network 192.168.79.0/24 ceph-mon1.example.com

验证初始化:

 

 

 

4.初始化 ceph 存储节点:

[ceph@ceph-deploy ceph-cluster]# ceph-deploy install --no-adjust-repos --nogpgcheck ceph-node1 ceph-node2 ceph-node3
 
5.配置 mon 节点并生成及同步秘钥(注意:在mon节点执行):
 
root@ceph-mon1:~# apt install ceph-mon
root@ceph-mon2:~# apt install ceph-mon
root@ceph-mon3:~# apt install ceph-mon
 

 

 

 

 

 

一路回车,3台mon节点一样操作

完成后,在deploy部署节点,执行

[root@ceph-deploy ceph-cluster]# ceph-deploy mon create-initial
 
在mon节点验证:
 

 

 

 
6.分发 admin 秘钥:
 
root@ceph-deploy:~# apt install ceph-common #先安装 ceph 的公共组件
root@ceph-node1:~# apt install ceph-common -y
root@ceph-node2:~# apt install ceph-common -y
root@ceph-node3:~# apt install ceph-common -y
root@ceph-node4:~# apt install ceph-common -y
 
root@ceph-deploy:/home/ceph/ceph-cluster#  ceph-deploy admin ceph-node1 ceph-node2 ceph-node3
 
如下图:

 

 

node节点验证:

 

 

 7.配置 manager 节点:

初始化 ceph-mgr 节点:
[root@ceph-mgr1 ~]#apt install ceph-mgr
 
2台mgr节点一样操作:
 
完成后执行:
 
[root@ceph-deploy ceph-cluster]# ceph-deploy mgr create ceph-mgr1
 

mgr节点验证:

 

 

8.ceph-deploy 管理 ceph 集群:

在 ceph-deploy 节点配置一下系统环境,以方便后期可以执行 ceph 管理命令。

 

root@ceph-deploy:~# apt install ceph-common
[root@ceph-deploy ceph-cluster]$ ceph-deploy admin ceph-deploy #推送正证书给自己 
 
执行:root@ceph-deploy:~/ceph-cluster# ceph -s
 
若显示有如下所示:
 
 

 

 

执行:root@ceph-deploy:~/ceph-cluster# ceph config set mon auth_allow_insecure_global_id_reclaim false

 

9:准备 OSD 节点:

擦除磁盘之前通过 deploy节点对 node 节点执行安装 ceph 基本运行环境
 
[root@ceph-deployceph-cluster]# ceph-deploy install --release pacific ceph-node1
[root@ceph-deployceph-cluster]# ceph-deploy install --release pacific ceph-node2
[root@ceph-deployceph-cluster]# ceph-deploy install --release pacific ceph-node3

 

查看列出磁盘信息:

[root@ceph-deploy ceph-cluster]# ceph-deploy disk list ceph-node1 #列出远端存储 node1 节点的磁盘信息 

 

 

使用 ceph-deploy disk zap 擦除各 ceph node 的 ceph 数据磁盘:

[root@ceph-deploy ceph-cluster]#ceph-deploy disk zap ceph-node1 /dev/sdb
[root@ceph-deploy ceph-cluster]#ceph-deploy disk zap ceph-node1 /dev/sdc
[root@ceph-deploy ceph-cluster]#ceph-deploy disk zap ceph-node1 /dev/sdd

 

注:所有node节点执行同样操作

 

10.添加OSD

在部署节点执行:

ceph-deploy osd create ceph-node1 --data /dev/sdb
ceph-deploy osd create ceph-node1 --data /dev/sdc
ceph-deploy osd create ceph-node1 --data /dev/sdd

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

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

 

在node 节点验证:

 

 

 

11.扩容mod节点:

 

[root@ceph-deploy ceph-cluster]# ceph-deploy mon add ceph-mon2 
[root@ceph-deploy ceph-cluster]# ceph-deploy mon add ceph-mon3
 
12.扩容mgr节点:
 
[root@ceph-deploy ceph-cluster]# ceph-deploy mgr create ceph-mgr2
[root@ceph-deploy ceph-cluster]# ceph-deploy admin ceph-mgr2 #同步配置文件到ceph-mg2 节点 
 
13.最后验证:
 
 
 

 

 

至此,集群部署完成

 

 

客户端验证:

准备一台 centos的虚拟机,配置好Yum源,

在客户端安装 ceph-common:

执行:

yum install  https://mirrors.aliyun.com/ceph/rpm-octopus/el7/noarch/ceph-release-1-1.el7.noarch.rpm -y
yum install ceph-common
 
完成后,从ceph部署节点执行scp配合和验证文件
 
[root@ceph-deploy ceph-cluster]# scp ceph.conf ceph.client.admin.keyring root@172.16.1.XX:/etc/ceph/
 
 
 
Ceph集群块设备 RBD准备:
 
创建 RBD:
 
#ceph osd pool create myrbd1 64 64 #创建存储池,指定 pg 和 pgp 的数量,pgp 是对存在于 pg 的数据进行组合存储,pgp 通常等于 pg 的值
pool ‘myrdb1‘ created
# ceph osd pool --help
 
# ceph osd pool application enable myrbd1 rbd #对存储池启用 RBD 功能
enabled application ‘rbd‘ on pool ‘myrdb1‘
 
# rbd pool init -p myrbd1 #通过 RBD 命令对存储池初始化
 
创建并验证 img:
 
#rbd create myimg1 --size 5G --pool myrbd1
 
# rbd create myimg2 --size 3G --pool myrbd1 --image-format 2 --image-feature layering
后续步骤会使用 myimg2 ,由于 centos 系统内核较低无法挂载使用,因此只开启部分特
性。除了 layering 其他特性需要高版本内核支持
 
#rbd ls --pool myrbd1 #列出指定的 pool 中所有的 img
myimg1
myimg2 

 

 

 

完成上述操作后:

客户端映射 img:
 
在cenos上执行:
 
[root@ceph-client ceph]# rbd -p myrbd1 map myimg2
 
出现如下所示:
 
rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel
with "rbd feature disable myrdb1/myimg1 object-map fast-diff deep-flatten".
In some cases useful info is found in syslog - try "dmesg | tail".
rbd: map failed: (6) No such device or address
 
执行括号中的rbd feature disable myrdb1/myimg1 object-map fast-diff deep-flatten
 
再执行 lsblk查看

 

 已发现rbd0

创建一个挂载目录test,并对rbd0执行mkfs.xfs /dev/rdb0格式化 ,并挂载到test目录下

 

写入一个文件测试:

dd if=/dev/zero of=/test/ceph-test-file bs=1MB count=300
300+0 records in
300+0 records out
300000000 bytes (300 MB) copied, 3.49849 s, 85.8 MB/s 
 
 
 
最后到ceph端验证:
 

 

 

可以看到容量已经成功完成,完

 

 

 

 

 

原文:https://www.cnblogs.com/N56041/p/15158348.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐