分布式存储Ceph集群的部署详解

如果在你部署的时候报错了,不妨到这里看看。ceph部署常见错误总结

1.环境及准备

5台虚拟机,每台1核1G内存。三个node节点需要提前添加一块空磁盘

===========================================================
    主机名             ip                    role
    admin            192.168.13.128          admin
    node1            192.168.13.139          mon / mgr / osd 
    node2            192.168.13.140          osd
    node3            192.168.13.142          osd
    client           192.168.13.143          
===========================================================

首先我们需要给每个node节点添加一个不少于5G的磁盘(关机状态下才能添加),可以用lsblk命令查看一下
在这里插入图片描述

1.开启网络关闭防火墙,selinux,iptables(所有节点在root用户下)
# systemctl disable firewalld && setenforce 0
# iptables -F   #清空
2.修改主机名/互相解析(所有节点,root用户)
[root@client ~]# vim /etc/hosts
192.168.13.128  admin
192.168.13.139  node1
192.168.13.140  node2
192.168.13.142  node3
192.168.13.143  client
3.创建用户(所有节点,root用户)
在所有节点上执行如下操作:
1)创建用户名:cephu,设置密码:
# useradd cephu
# echo 1 | passwd --stdin cephu   #我这里设置为1
更改用户 yjssjm 的密码 。
passwd:所有的身份验证令牌已经成功更新。
 
2)修改visudo文件,否则提示cephu不再sudoer列表中的错误。
# visudo    #进入配置文件
在root ALL=(ALL) ALL下面添加:
cephu  ALL=(ALL) ALL
3)切换至cephu用户,为该用户增加root权限:
# su - cephu
$ echo "cephu ALL=(root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephu  #然后填写root密码
$ sudo  chmod 0440 /etc/sudoers.d/cephu

以上命令是所有虚拟机都要执行的,切记。
下面的命令我会给提示,而且每条命令前面都有主机名和用户,一定要看仔细了

4.实现ssh无密码登录(admin节点)
1)cephu用户下,生成秘钥: 
[cephu@admin ~]$ ssh-keygen
2)cephu用户下,把生成的密钥拷贝到各Ceph节点:
[cephu@admin ~]$ ssh-copy-id cephu@node1
[cephu@admin ~]$ ssh-copy-id cephu@node2
[cephu@admin ~]$ ssh-copy-id cephu@node3
3)root用户下,添加~/.ssh/config配置文件,并进行如下设置:
[cephu@client ~]$ exit #退出cephu用户
[root@client ~]# mkdir ~/.ssh/     #有这个目录就不用创建了
[root@client ~]# vim ~/.ssh/config  #创建配置文件并添加以下内容
Host node1
Hostname node1
User cephu

Host node2
Hostname node2
User cephu

Host node3
Hostname node3
User cephu

5.添加下载源,安装ceph-deploy(admin节点,root用户)
1)添加ceph源:
[root@admin ~]# vim /etc/yum.repos.d/ceph.repo  #yum仓库
添加以下内容
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-hammer/el7/noarch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

2)更新源,安装ceph-deploy:
[root@admin ~]# yum makecache
[root@admin ~]# yum update    
[root@admin ~]# vim /etc/yum.conf   #建立缓存,目的是下载失败的话,再次下载会从失败的地方开始
修改keepcache为1
keepcache=1        
[root@admin ~]# yum -y install ceph-deploy 
6.设置TTY(所有节点)
注意:此设置由官方文档指出,但是并未在这里找不到此配置行,不用做此步
# sudo visudo   
找到 Defaults requiretty 注释掉
7.同步时间  安装ntp(所有节点)
选择任何一台机器当ntp时间服务器,其他的节点当时间服务器的客户端跟服务器同步时间
我们选择admin节点
[root@admin ~]# yum install -y ntp     
[root@admin ~]# vim /etc/ntp.conf 
找到server开头的那四行,把那4行server行注释掉,填写以下两行
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.127.1.0     # local clock
fudge  127.127.1.0 stratum 10

[root@client ~]# systemctl start ntpd    #启动服务
[root@client ~]# systemctl status ntpd  //确认打开NTP服务
其他所有节点(cephu用户):
$ sudo yum install ntpdate  -y  #来同步ntp
$ sudo ntpdate 192.168.13.128   #装有ntp服务的ip

2.ceph集群的部署

没有特别说明以下所有操作均是在admin节点,cephu用户下执行

1 创建ceph操作目录:
[cephu@admin ~]$ su - cephu
[cephu@admin ~]$ mkdir my-cluster  #切记不可用sudo创建
[cephu@admin ~]$ cd my-cluster       #之后,所有ceph-deploy命令操作必须在该目录下执行

2.2 创建集群:
[cephu@admin my-cluster]$ wget https://files.pythonhosted.org/packages/5f/ad/1fde06877a8d7d5c9b60eff7de2d452f639916ae1d48f0b8f97bf97e570a/distribute-0.7.3.zip
#下载需要的环境包
[cephu@admin my-cluster]$ uzip distribute-0.7.3.zip
[cephu@admin my-cluster]$ cd distribution-0.7.3/
[cephu@admin distribution-0.7.3]$ sudo python setup.py install
[cephu@admin distribution-0.7.3]$ cd my-cluster
[cephu@admin my-cluster]$ ceph-deploy new node1       #python环境不对会报错
创建成功会多出三个文件:ceph.conf, ceph.mon.keyring, and ceph-deploy-ceph.log
    
2.3 安装luminous(12.2.13): 
在node1,node2,node3三个节点上安装ceph和ceph-radosgw主包
方法1:利用官方脚本全自动安装
脚本会帮助node1,node2,node3创建epel源和ceph源,并且自动安装ceph和ceph-radosgw主包
[cephu@admin ~]$ ceph-deploy install --release luminous node1 node2 node3  
这一步实际上是给3个节点安装两个软件:如果ceph和ceph-radosgw安装不上,则采用方法2
测试是否安装完成:分别在node1 node2 node3中确认安装版本为12.2.13
$ ceph --version
 
方法2:手动部署安装 (node1,node2,node3节点cephu用户)
1)安装epel源
2)创建Ceph源,内容如下:
sudo vim /etc/yum.repos.d/ceph.repo      #配置ceph源
[Ceph]
name=Ceph packages for $basearch
baseurl=http://download.ceph.com/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://download.ceph.com/keys/release.asc
priority=1

[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://download.ceph.com/keys/release.asc
priority=1

[ceph-source]
name=Ceph source packages
baseurl=http://download.ceph.com/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://download.ceph.com/keys/release.asc
priority=1

3)分别在node1,node2,node3节点执行下面命令安装软件
可以完全手动安装,但需要yum的ceph缓存目录结构
$sudo vim /etc/yum.conf   #建立缓存
            keepcache=1
$sudo yum install ceph ceph-radosgw  -y    
如果因为速度慢导致安装失败可以按ctrl+c,利用它创建的yum缓存目录,手动把安装包下载下来保存到缓存目录/var/cache/yum/x86_64/Ceph/packages目录下
再次执行安装命令:
$sudo yum install ceph ceph-radosgw  -y
分别在node1 node2 node3中确认安装版本为12.2..13:
$ ceph --version
ceph version 12.2.13 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable)

4 初始化mon:
[cephu@admin my-cluster]$ ceph-deploy mon create-initial
5 赋予各个节点使用命令免用户名权限:
[cephu@admin my-cluster]$ ceph-deploy admin node1 node2 node3
6 安装ceph-mgr:只有luminous才有,为使用dashboard做准备
[cephu@admin my-cluster]$ ceph-deploy mgr create node1   
7 添加osd:
    注意:各个节点上提供存储空间的磁盘大小不能太小,最好5G以上
[cephu@admin my-cluster]$ ceph-deploy osd create --data /dev/sdb node1
[cephu@admin my-cluster]$ ceph-deploy osd create --data /dev/sdb node2
[cephu@admin my-cluster]$ ceph-deploy osd create --data /dev/sdb node3
    命令中/dev/sdb是在各个节点上为osd准备的空闲磁盘(无需分区格式化,如果有分区需要指定具体分区),通过如下命令查看:
[cephu@admin my-cluster]$ ssh node1 lsblk -f    
    最后通过如下命令查看集群状态:
[cephu@admin my-cluster]$ ssh node1 sudo ceph -s
    如果显示health_ok,3个osd up就成功了

ceph集群搭建完成

在这里插入图片描述
在这里插入图片描述

3.可视化界面的搭建

把ceph-mgr和ceph-mon安装在同一个主机上,最好只有一个ceph-mgr

su - cephu 进入该用户 (用户已经是cephu的就不用了)
1.创建管理域秘钥:
[cephu@node1 ~]$ sudo ceph auth get-or-create mgr.node1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'
2.开启 ceph-mgr 管理域:
[cephu@node1 ~]$ sudo ceph-mgr -i node1
3.查看ceph的状态:
[cephu@node1 ~]$ sudo ceph status
  确认mgr的状态为active

在这里插入图片描述

4.打开dashboard模块:
[cephu@node1 ~]$ sudo ceph mgr module enable dashboard
5.绑定开启dashboard模块的ceph-mgr节点的ip地址:
[cephu@node1 ~]$ sudo ceph config-key set mgr/dashboard/node1/server_addr 192.168.13.139
#ip地址为mgr节点的ip地址
6.页面登录:
浏览器地址栏输入:mgr地址:7000
  可视化界面完成

在这里插入图片描述

4.配置客户端使用rbd

创建块设备之前需要创建存储池,存储池相关命令需要在node1节点执行

1 创建存储池:
[cephu@node1 ~]$ sudo ceph osd pool create rbd 128 128
2 初始化存储池:
[cephu@node1 ~]$ sudo rbd pool init rbd

3 客户端client,root用户下:
1)升级client内核到4.x
更新前,内核版本为:
[root@client ~]# uname -r  
3.10.0-693.el7.x86_64
升级方法
导入key:  
[root@client ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org  
安装elrepo的yum源:  
[root@client ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
查看可用的系统内核包
[root@client ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

在这里插入图片描述
在这里插入图片描述

安装内核:
[root@client ~]# yum --enablerepo=elrepo-kernel install  kernel-lt-devel kernel-lt  #这条命令是安装4.4的系统内核
    #yum --enablerepo=elrepo-kernel install  kernel-ml-devel kernel-ml         #这条命令是安装5.6的系统内核

当前为4.4.4:
============================================================
 Package        架构                版本                       源                          大小
============================================================
正在安装:
kernel-ml   x86_64     4.4.4-1.el7.elrepo elrepo-kernel  38M
kernel-ml-devel x86_64 4.4.4-1.el7.elrepo elrepo-kernel  10M



查看默认启动顺序  
[root@client ~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg  
CentOS Linux (4.4.219-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-d8db1847f22b4aa78cb01e570f55dd9a) 7 (Core)

默认启动的顺序是从0开始,因为前一次启动是从3.10开始的,所以,会继续从3.10开始加载。新内核是从头插入(目前位置在0,而4.4.4的是在1),所以需要选择0。
[root@client ~]# grub2-set-default 0  
然后reboot重启,使用新的内核,下面是重启后使用的内核版本:
[root@client ~]# uname -r  
4.4.219-1.el7.elrepo.x86_64
删除旧的内核  
[root@client ~]# yum remove kernel  
2)为client安装ceph:
[root@client ~]# su - cephu
安装epel源
创建Ceph源,内容如下:
[cephu@client ~]$ sudo vim /etc/yum.repos.d/ceph.repo      #配置ceph源
[Ceph]
name=Ceph packages for $basearch
baseurl=http://download.ceph.com/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://download.ceph.com/keys/release.asc
priority=1

[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://download.ceph.com/keys/release.asc
priority=1

[ceph-source]
name=Ceph source packages
baseurl=http://download.ceph.com/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://download.ceph.com/keys/release.asc
priority=1

[cephu@client ~]$ sudo vim /etc/yum.conf   #建立缓存
            keepcache=1
[cephu@client ~]$ sudo yum -y install ceph ceph-radosgw  
[cephu@client ~]$ sudo yum  -y install python-setuptools
[cephu@client ~]$ ceph --version  #查看版本看看是否成功
ceph version 12.2.13 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable)

4)在admin节点赋予client使用命令免用户名权限:
[cephu@admin my-cluster]$ ceph-deploy admin client
5)修改client下该文件的读权限:
[cephu@client ~]$ sudo chmod +r /etc/ceph/ceph.client.admin.keyring
6)修改client下的ceph配置文件:这一步是为了解决映射镜像时出错问题
[cephu@client ~]$ sudo vi /etc/ceph/ceph.conf   
#在最后一行添加:
rbd_default_features = 1
4 client节点创建块设备镜像:单位是M,这里是4个G
[cephu@client ~]$ rbd create foo --size 4096 

5 client节点映射镜像到主机:
[cephu@client ~]$ sudo rbd map foo --name client.admin

6 client节点格式化块设备:
[cephu@client ~]$ sudo mkfs.ext4 -m 0 /dev/rbd/rbd/foo

7 client节点mount块设备:
[cephu@client ~]$ sudo mkdir /mnt/ceph-block-device    #挂载点
[cephu@client ~]$ sudo mount /dev/rbd/rbd/foo /mnt/ceph-block-device
[cephu@client ~]$ cd /mnt/ceph-block-device
客户端就可以使用来自三台虚拟机提供的30G大小的磁盘了

客户端重起之后,设备需要重新作映射,不然可能会卡死

[cephu@client ~]$ sudo rbd map foo --name client.admin
[cephu@client ~]$ sudo mkfs.ext4 -m 0 /dev/rbd/rbd/foo
[cephu@client ~]$ sudo mkdir /mnt/ceph-block-device    #挂载点
[cephu@client ~]$ sudo mount /dev/rbd/rbd/foo /mnt/ceph-block-device
[cephu@client ~]$ cd /mnt/ceph-block-device
发布了55 篇原创文章 · 获赞 150 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/baidu_38803985/article/details/105588315
今日推荐