文章目录
- 1.Ceph分布式存储集群安装方式
- 2.Ceph集群环境规划
- 3.基础环境配置
- 3.1.设置主机名以及SSH免密登录
- 3.2.配置Ceph yum源
- 4.部署Ceph分布式存储集群
- 4.1.安装Ceph-deploy自动化部署工具
- 4.2.初始化创建一个Ceph分布集群
- 4.3.在每个节点中部署Ceph集群所有的组件
- 4.4.部署并配置Monitor组件
- 4.4.1.初始化Ceph Monitor各节点形成集群模式
- 4.4.2.将生成的Monitor admin认证文件推送到集群各节点
- 4.5.部署配置Manager组件
- 4.6.部署配置OSD组件
- 4.7.在集群中部署MDS组件
- 4.8.在集群中部署RGW组件
- 4.9.查看集群状态
1.Ceph分布式存储集群安装方式
ceph-deploy:一个快速部署集群的工具,ceph-deploy不再维护,Ceph采用的是Nautilus版本,如果操作系统是CentOS8那么将不支持ceph-deploy方式的搭建。
Cephadm:使用容器和systemd安装和管理Ceph集群,目前比较流行的部署方式,部署Octopus版本的Ceph建议使用此方法。
ceph-ansible:使用Ansible部署和管理 Ceph 集群。
INSTALLATION (MANUAL):手动方式安装,了解部署Ceph的细节。
ROOK:部署和管理在Kubernetes中运行的Ceph集群,同时还支持通过Kubernetes API管理存储资源和配置,如果要与K8S集成,可以使用此种方式。
2.Ceph集群环境规划
由三个节点组成Ceph集群,每一个节点中添加两块网卡,一块网卡用于对外提供访问,一块网卡用于集群内部通信,每一个节点上暂时分别有2块网卡,后期做其他配置时再进行添加。
主机名 | Poblic通信IP | 服务 | 硬盘 |
---|---|---|---|
ceph-node-1 | 192.168.81.70 | monitor、osd | sda、sdb |
ceph-node-2 | 192.168.81.80 | monitor、osd | sda、sdb |
ceph-node-3 | 192.168.81.90 | monitor、osd | sda、sdb |
3.基础环境配置
3.1.设置主机名以及SSH免密登录
所有节点都按如下进行配置。
1)设置主机名并配置Hosts解析
[root@localhost ~]# hostnamectl set-hostname ceph-node-1
[root@localhost ~]# hostnamectl set-hostname ceph-node-2
[root@localhost ~]# hostnamectl set-hostname ceph-node-3# vim /etc/hosts
192.168.81.70 ceph-node-1
192.168.81.80 ceph-node-2
192.168.81.90 ceph-node-3
2)设置ssh免密登陆
# ssh-keygen
# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.81.70
# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.81.80
# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.81.90
3)关闭防火墙以及Selinux
# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# sed -ri '/^SELINUX/c SELINUX=disabled' /etc/sysconfig/selinux
# sed -ri '/^SELINUX/c SELINUX=disabled' /etc/selinux/config
4)设置ntp时间同步
在Ceph集群中非常注重时间信息,如果时间不同步,那么集群通信就可能会出现问题。
# yum -y install ntp
# crontab -e
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com
3.2.配置Ceph yum源
所有节点都需要配置。
1)使用阿里云镜像源
阿里云镜像源中提供了很多工具的yum源,地址:https://developer.aliyun.com/mirror/
2)配置Centos7的Base与Epel源
# mkdir /etc/yum.repos.d/back
# mv /etc/yum.repos.d/* /etc/yum.repos.d/back
# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3)配置Ceph的镜像源
需要分布配置noarch与x86_64的镜像源。
# vim /etc/yum.repos.d/ceph.repo
[noarch]
name=noarch
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/
enabled=1
gpgcheck=0[x86_64]
name=x86_64
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/
enabled=1
gpgcheck=0
4.部署Ceph分布式存储集群
4.1.安装Ceph-deploy自动化部署工具
我们的Ceph集群采用ceph-deploy的方式进行安装和部署,在集群中任意节点中安装ceph-deploy工具即可。
1.安装依赖的python软件
[root@ceph-node-1 ~]# yum -y install python-setuptools2.安装ceph-deploy
[root@ceph-node-1 ~]# yum -y install ceph-deploy3.查看ceph-deploy安装的版本
[root@ceph-node-1 ~]# ceph-deploy --version
2.0.1
4.2.初始化创建一个Ceph分布集群
这一步主要是用来生成集群配置文件和认证文件的。
1.创建一个目录存放部署各个组件的配置文件
[root@ceph-node-1 ~]# mkdir /data/ceph-deploy/2.创建一个ceph集群,集群节点数建议是奇数
[root@ceph-node-1 ceph-deploy]# ceph-deploy new --public-network 192.168.81.0/24 --cluster-network 192.168.81.0/24 ceph-node-1 ceph-node-2 ceph-node-3--public-network:指定公共网络地址,也就是对外提供服务的地址。
--cluster-network:指定集群内部使用的网络地址,集群连接通信通过这个网络进行通信。
3.查看ceph-deploy生成的集群配置文件
[root@ceph-node-1 ceph-deploy]# ll
总用量 12
-rw-r--r--. 1 root root 264 3月 30 21:06 ceph.conf #配置文件
-rw-r--r--. 1 root root 3038 3月 30 21:06 ceph-deploy-ceph.log #日志文件,可以查看monitor配置文件的生成过程
-rw-------. 1 root root 73 3月 30 21:06 ceph.mon.keyring #认证文件
#如果创建集群时没有指定参数,则可以在生成的文件中进行配置。
[root@ceph-node-1 ceph-deploy]# cat ceph.conf
[global]
fsid = 25c120bc-ac9e-440e-8120-89ba5c2b9dc9
public_network = 192.168.81.0/24
cluster_network = 192.168.81.0/24
mon_initial_members = ceph-node-1, ceph-node-2, ceph-node-3
mon_host = 192.168.81.250,192.168.81.220,192.168.81.160
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
4.3.在每个节点中部署Ceph集群所有的组件
1.安装ceph集群各组件
[root@ceph-node-1 ceph-deploy]# yum -y install ceph ceph-mon ceph-mgr ceph-radosgw ceph-mds
[root@ceph-node-2 ~]# yum -y install ceph ceph-mon ceph-mgr ceph-radosgw ceph-mds
[root@ceph-node-3 ~]# yum -y install ceph ceph-mon ceph-mgr ceph-radosgw ceph-mds2.安装完成后会在/var/lib/ceph生成文件
[root@ceph-node-1 ceph-deploy]# ll /var/lib/ceph/
总用量 0
drwxr-x---. 2 ceph ceph 6 6月 30 2021 bootstrap-mds
drwxr-x---. 2 ceph ceph 6 6月 30 2021 bootstrap-mgr
drwxr-x---. 2 ceph ceph 6 6月 30 2021 bootstrap-osd
drwxr-x---. 2 ceph ceph 6 6月 30 2021 bootstrap-rbd
drwxr-x---. 2 ceph ceph 6 6月 30 2021 bootstrap-rbd-mirror
drwxr-x---. 2 ceph ceph 6 6月 30 2021 bootstrap-rgw
drwxr-x---. 3 ceph ceph 20 3月 30 21:46 crash
drwxr-x---. 2 ceph ceph 6 6月 30 2021 mds
drwxr-x---. 2 ceph ceph 6 6月 30 2021 mgr
drwxr-x---. 3 ceph ceph 25 3月 30 21:52 mon
drwxr-x---. 2 ceph ceph 6 6月 30 2021 osd
drwxr-xr-x. 2 root root 6 6月 30 2021 radosgw
drwxr-x---. 2 ceph ceph 6 3月 30 21:53 tmp3.查看ceph的版本
[root@ceph-node-1 ceph-deploy]# ceph -v
ceph version 14.2.22 (ca74598065096e6fcbd8433c8779a2be0c889351) nautilus (stable)
4.4.部署并配置Monitor组件
4.4.1.初始化Ceph Monitor各节点形成集群模式
初始化Monitor组件需要先安装Monitor组件包,然后利用ceph-deploy工具根据生成的集群配置文件,初始化各个节点中的Monitor组件,形成集群模式,初始化完Monitor组件会在/etc/ceph目录中成一些配置文件和一些key文件,并启动Monitor组件。
1.初始化Monitor
[root@ceph-node-1 ceph-deploy]# ceph-deploy mon create-initial
#初始化的时候会对集群中所有的节点都进行操作2.查看生成的配置文件
#配置文件
[root@ceph-node-1 ceph-deploy]# ll /etc/ceph/
总用量 8
-rw-r--r--. 1 root root 264 3月 30 21:53 ceph.conf
-rw-r--r--. 1 root root 92 6月 30 2021 rbdmap
-rw-------. 1 root root 0 3月 30 21:52 tmpdpAGYU
#key文件
[root@ceph-node-1 ceph-deploy]# ll
总用量 48
-rw-------. 1 root root 113 3月 30 21:53 ceph.bootstrap-mds.keyring
-rw-------. 1 root root 113 3月 30 21:53 ceph.bootstrap-mgr.keyring
-rw-------. 1 root root 113 3月 30 21:53 ceph.bootstrap-osd.keyring
-rw-------. 1 root root 113 3月 30 21:53 ceph.bootstrap-rgw.keyring
-rw-------. 1 root root 151 3月 30 21:53 ceph.client.admin.keyring
-rw-r--r--. 1 root root 264 3月 30 21:06 ceph.conf
-rw-r--r--. 1 root root 18651 3月 30 21:53 ceph-deploy-ceph.log
-rw-------. 1 root root 73 3月 30 21:06 ceph.mon.keyring3.查看ceph进程,此时每个节点都会起到mon组件
[root@ceph-node-1 ceph-deploy]# ps aux | grep ceph
root 25265 0.0 0.4 189132 9172 ? Ss 21:46 0:00 /usr/bin/python2.7 /usr/bin/ceph-crash
ceph 26057 0.2 1.7 503888 33728 ? Ssl 21:53 0:00 /usr/bin/ceph-mon -f --cluster ceph --id ceph-node-1 --setuser ceph --setgroup ceph
4.4.2.将生成的Monitor admin认证文件推送到集群各节点
Monitor组件初始化完成后,还需要将ceph.client.admin.keyring
这个admin的认证文件推送到节点的/etc/ceph目录下,否则无法执行ceph
命令查看集群信息。
推送完成后再将ceph集群的不安全模式禁用,否则查看集群信息时会提示“mon允许不安全的global_id回收”。
1.推送admin认证文件
[root@ceph-node-1 ceph-deploy]# ceph-deploy admin ceph-node-1 ceph-node-2 ceph-node-3#如果现在想要在其他的节点中执行ceph命令,则可以将admin文件推送到其他的节点。2.查看推送过来的文件
[root@ceph-node-1 ceph-deploy]# ll /etc/ceph/
总用量 12
-rw-------. 1 root root 151 3月 30 22:00 ceph.client.admin.keyring
-rw-r--r--. 1 root root 264 3月 30 22:00 ceph.conf
-rw-r--r--. 1 root root 92 6月 30 2021 rbdmap
-rw-------. 1 root root 0 3月 30 21:52 tmpdpAGYU
3.禁用ceph的不安全模式
[root@ceph-node-1 ceph-deploy]# ceph config set mon auth_allow_insecure_global_id_reclaim false
#如果不关闭的话,查看集群信息的时候会提示mon is allowing insecure global_id reclaim4.查看ceph集群的信息
[root@ceph-node-1 ceph-deploy]# ceph -scluster:id: 25c120bc-ac9e-440e-8120-89ba5c2b9dc9 #集群的IDhealth: HEALTH_OK #集群的健康状态services:mon: 3 daemons, quorum ceph-node-1,ceph-node-2,ceph-node-3 (age 3m) #monitor组件的节点mgr: no daemons active #mgr节点,现在换没有mgrosd: 0 osds: 0 up, 0 in #osd节点data: #资源池信息pools: 0 pools, 0 pgsobjects: 0 objects, 0 Busage: 0 B used, 0 B / 0 B availpgs:
4.5.部署配置Manager组件
Manager组件是监控组件,在集群中所有的节点中部署。
**注意:**ceph-deploy命令生成的只是配置文件和启动该组件,执行该命令前需要实际的将ceph-mgr包安装好。
1.安装manager组件
[root@ceph-node-1 ceph-deploy]# ceph-deploy mgr create ceph-node-1 ceph-node-2 ceph-node-32.查看mgr组件启动的进程
[root@ceph-node-1 ceph-deploy]# ps aux | grep mgr
ceph 19530 11.7 6.5 1033180 121880 ? Ssl 11:39 0:01 /usr/bin/ceph-mgr -f --cluster ceph --id ceph-node-1 --setuser ceph --setgroup ceph3.再次查看集群的状态
[root@ceph-node-1 ceph-deploy]# ceph -scluster:id: 25c120bc-ac9e-440e-8120-89ba5c2b9dc9health: HEALTH_WARNOSD count 0 < osd_pool_default_size 3services:mon: 3 daemons, quorum ceph-node-3,ceph-node-2,ceph-node-1 (age 3m)mgr: ceph-node-1(active, since 36s), standbys: ceph-node-2, ceph-node-3 #可以看到mgr已经有三个节点了osd: 0 osds: 0 up, 0 indata:pools: 0 pools, 0 pgsobjects: 0 objects, 0 Busage: 0 B used, 0 B / 0 B availpgs:
4.6.部署配置OSD组件
OSD组件是真正存储数据的组件,需要与磁盘关联,每一个OSD组件需要关联至少一块磁盘。
OSD关联数据盘有两种方式:
--data
指定数据盘,数据直接落入盘中。--journal
配合ssd磁盘,首先将数据写入journal,然后在刷到磁盘里,起到一个加速的作用。
OSD组件在前面已经安装过了,下面来配置OSD,将服务器中的两块硬盘都加入到OSD集群中。
ceph-deploy工具一次只能将一个磁盘创建成OSD。
1.将ceph-node-1节点的/dev/sdb、/dev/sdc磁盘加入到osd中
[root@ceph-node-1 ceph-deploy]# ceph-deploy osd create ceph-node-1 --data /dev/sdb
[root@ceph-node-1 ceph-deploy]# ceph-deploy osd create ceph-node-1 --data /dev/sdc2.将ceph-node-2节点的/dev/sdb、/dev/sdc磁盘加入到osd中
[root@ceph-node-1 ceph-deploy]# ceph-deploy osd create ceph-node-2 --data /dev/sdb
[root@ceph-node-1 ceph-deploy]# ceph-deploy osd create ceph-node-2 --data /dev/sdc3.将ceph-node-3节点的/dev/sdb、/dev/sdc磁盘加入到osd中
[root@ceph-node-1 ceph-deploy]# ceph-deploy osd create ceph-node-3 --data /dev/sdb
[root@ceph-node-1 ceph-deploy]# ceph-deploy osd create ceph-node-3 --data /dev/sdc
OSD创建过程中,会自动配置指定的磁盘,并且启动OSD程序。
4.集群创建完OSD之后再次查看集群的状态
[root@ceph-node-1 ceph-deploy]# ceph -scluster:id: 25c120bc-ac9e-440e-8120-89ba5c2b9dc9health: HEALTH_OKservices:mon: 3 daemons, quorum ceph-node-3,ceph-node-2,ceph-node-1 (age 15m)mgr: ceph-node-1(active, since 12m), standbys: ceph-node-2, ceph-node-3osd: 6 osds: 6 up (since 66s), 6 in (since 66s) #显示集群中当下有3个OSDdata:pools: 0 pools, 0 pgsobjects: 0 objects, 0 Busage: 6.0 GiB used, 54 GiB / 60 GiB availpgs: 5.查看OSD的详细信息
[root@ceph-node-1 ceph-deploy]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.05878 root default
-3 0.01959 host ceph-node-1 0 hdd 0.00980 osd.0 up 1.00000 1.00000 4 hdd 0.00980 osd.4 up 1.00000 1.00000
-5 0.01959 host ceph-node-2 1 hdd 0.00980 osd.1 up 1.00000 1.00000 5 hdd 0.00980 osd.5 up 1.00000 1.00000
-7 0.01959 host ceph-node-3 2 hdd 0.00980 osd.2 up 1.00000 1.00000 3 hdd 0.00980 osd.3 up 1.00000 1.00000 #会显示出每一个节点中的OSD信息
4.7.在集群中部署MDS组件
事先一定要将MDS组件在集群中安装好,然后使用ceph-deploy工具配置MDS组件。
[root@ceph-node-1 ceph-deploy]# ceph-deploy mds create ceph-node-1 ceph-node-2 ceph-node-3
[root@ceph-node-1 ceph-deploy]# ceph -scluster:id: 25c120bc-ac9e-440e-8120-89ba5c2b9dc9health: HEALTH_OKservices:mon: 3 daemons, quorum ceph-node-3,ceph-node-2,ceph-node-1 (age 2h)mgr: ceph-node-1(active, since 2h), standbys: ceph-node-2, ceph-node-3mds: 3 up:standby #MDS组件准备就绪osd: 6 osds: 6 up (since 2h), 6 in (since 2h)data:pools: 0 pools, 0 pgsobjects: 0 objects, 0 Busage: 6.0 GiB used, 54 GiB / 60 GiB availpgs:
4.8.在集群中部署RGW组件
部署好的RGW组件都有单独的访问地址,可以配置Keepalived+nginx/haproxy形成高可用集群。
[root@ceph-node-1 ceph-deploy]# ceph-deploy rgw create ceph-node-1 ceph-node-2 ceph-node-3
4.9.查看集群状态
到此为止Ceph集群搭建完毕。