C/C++教程

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

本文主要是介绍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端验证:  

 

 

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

 

 

 

 

这篇关于Ubuntu18.04上部署Ceph(基于debian-pacific)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!