ceph集群部署

部署环境

系统版本:centos7.5 x86_64 server
ceph版本:ceph 12.2.10(luminous)
硬件配置:5台虚拟机,1核1G内存,每台node角色的机器至少挂载1块为osd准备的空闲盘
IP 主机名 role
192.168.0.102 admin admin
192.168.0.105 node1 mon / mgr / osd
192.168.0.107 node2 osd
192.168.0.109 node3 osd
192.168.0.108 client
三个node节点要有两个磁盘

image.png

1、准备工作

1.1关闭防火墙和SELinux(五台虚拟机都要做)

[root@localhost ~]# systemctl stop firewalld && setenforce 0

1.2修改主机名并设置互相解析(五台虚拟机都要做)

#修改主机名(所有虚拟机)
[root@localhost ~]# hostnamectl set-hostname admin
[root@localhost ~]# hostnamectl set-hostname node1
[root@localhost ~]# hostnamectl set-hostname node2
[root@localhost ~]# hostnamectl set-hostname node3
[root@client ~]#  hostnamectl set-hostname client
#设置互相解析(所有虚拟机)
# vim /etc/hosts       添加解析
192.168.0.102 admin
192.168.0.105 node1
192.168.0.107 node2
192.168.0.109 node3
192.168.0.108 client

1.3创建用户(五台虚拟机都要做)

(1)创建用户并设置密码
# useradd cephu
# echo 123 | passwd --stdin cephu
(2)修改visudo文件,否则提示cephu不再sudoer列表中的错误。
# visudo
image.png
(3)切换至cephu用户,为该用户增加root权限:
# su - cephu
$ echo "cephu ALL=(root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephu
$ sudo  chmod 0440 /etc/sudoers.d/cephu
image.png

1.4实现免密登录(admin)

cephu用户下

#生成密钥
[cephu@admin ~]$ ssh-keygen
#把生成的密钥拷贝到node节点
[cephu@admin ~]$ ssh-copy-id cephu@node1
[cephu@admin ~]$ ssh-copy-id cephu@node2
[cephu@admin ~]$ ssh-copy-id cephu@node3

root用户下:

#添加~/.ssh/config配置文件,并进行如下设置
[root@admin ~]# mkdir ~/.ssh
[root@admin ~]# vim .ssh/config
Host node1
Hostname node1
User cephu

Host node2
Hostname node2
User cephu

Host node3
Hostname node3
User cephu

1.5 添加下载源,安装ceph-deploy(admin节点,root用户)

#添加ceph源
[root@admin ~]# vim /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
#更新源,安装ceph-deploy:
[root@admin ~]# yum clean all    清理缓存
[root@admin ~]# yum makecache fast
[root@admin ~]# yum update
[root@admin ~]# vim /etc/yum.conf
image.png
[root@admin ~]# yum install ceph-deploy -y

1.6 安装ntp

选择任何一台机器当ntp时间服务器,其他的节点当时间服务器的客户端跟服务器同步时间
admin上:

[root@admin ~]# yum -y install ntp
[root@admin ~]# vim /etc/ntp.conf
server 127.127.1.0
fudge  127.127.1.0 stratum 10
image.png
[root@admin ~]# systemctl start ntpd
[root@admin ~]# systemctl status ntpd    #看ntp服务是否启动

其他虚拟机:

[root@client ~]# yum -y install ntpdate
[root@client ~]# ntpdate admin
16 Apr 21:41:18 ntpdate[10777]: adjust time server 192.168.0.102 offset 0.355461 sec

2、部署ceph集群

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

2.1 创建ceph操作目录

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

2.2 创建集群

[cephu@admin my-cluster]$ ceph-deploy new node1
image.png

这时候我们要重新安装python的distribution:

[cephu@admin distribute-0.7.3]$ wget https://files.pythonhosted.org/packages/5f/ad/1fde06877a8d7d5c9b60eff7de2d452f639916ae1d48f0b8f97bf97e570a/distribute-0.7.3.zip
[cephu@admin distribute-0.7.3]$ unzip distribute-0.7.3.zip
[cephu@admin my-cluster]$ cd distribute-0.7.3
[cephu@admin distribute-0.7.3]$ sudo python setup.py install

然后

[cephu@admin distribute-0.7.3]$ cd ..
[cephu@admin my-cluster]$ ceph-deploy new node1
image.png
[cephu@admin my-cluster]$ ls
ceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring  distribute-0.7.3  distribute-0.7.3.zip
创建成功会有三个文件:ceph.conf, ceph.mon.keyring, and a log file

2.3 安装luminous(12.2.13)

目标:在node1,node2,node3三个节点上安装ceph和ceph-radosgw主包

方法1:
[cephu@admin my-cluster]$ sudo yum -y install epel-release     #安装epel源
[cephu@admin my-cluster]$ ceph-deploy install --release luminous node1 node2 node3
#这一步实际上是给3个节点安装两个软件:如果ceph和ceph-radosgw安装不上,则采用方法2

测试是否安装完成:分别在node1 node2 node3中确认安装版本
$ ceph --version

方法2:手动部署安装

在三个节点上:

  • 安装epel源
  • 创建Ceph源,内容如下:
[root@node3 ~]# vim /etc/yum.repos.d/ceph.repo
[Ceph]            #阿里源
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1

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

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
  • 分别在node1,node2,node3节点执行下面命令安装软件
    可以完全手动安装,但需要yum的ceph缓存目录结构
    [root@node3 ~]# yum install ceph ceph-radosgw -y
    如果因为速度慢导致安装失败可以按ctrl+c,利用它创建的yum缓存目录,手动把安装包下载下来保存到缓存目录/var/cache/yum/x86_64/Ceph/packages目录下

再次执行安装命令:
[root@node3 ~]# yum install ceph ceph-radosgw -y

分别在node1 node2 node3中确认安装版本为12.2.13:

$ ceph --version
ceph version 12.2.13 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable)

2.4 初始化mon

[cephu@admin my-cluster]$ ceph-deploy mon create-initial

2.5 赋予各个节点使用命令免用户名权限

[cephu@admin my-cluster]$ ceph-deploy admin node1 node2 node3

2.6 安装ceph-mgr:只在node1上面装,为使用dashboard做准备

[cephu@admin my-cluster]$ ceph-deploy mgr create node1

2.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

image.png

注:命令中/dev/sdb是在各个节点上为osd准备的空闲磁盘
通过如下命令查看:
[cephu@admin my-cluster]$ ssh node1 lsblk -f 在admin上
或:
[cephu@node1 ~]$ lsblk 在node1上

查看集群状态:
[cephu@admin my-cluster]$ ssh node1 sudo ceph -s

image.png

3 Dashboard的配置:在node1的cephu上用户操作

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

3.1 创建管理域秘钥

[cephu@node1 ~]$ sudo ceph auth get-or-create mgr.node1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'

image.png

3.2 开启 ceph-mgr 管理域:

[cephu@node1 ~]$ sudo ceph-mgr -i node1

3.3 查看ceph的状态:

[cephu@node1 ~]$ sudo ceph status

image.png

确认mgr的状态为active

3.4 打开dashboard模块:

[cephu@node1 ~]$ sudo ceph mgr module enable dashboard

3.5 绑定开启dashboard模块的ceph-mgr节点的ip地址

[cephu@node1 ~]$ sudo ceph config-key set mgr/dashboard/node1/server_addr 192.168.0.105     #ip地址为mgr节点的ip地址
set mgr/dashboard/node1/server_addr

3.6 web登录:

浏览器访问192.168.0.105:7000

image.png

4 配置客户端使用rbd:

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

4.1 创建存储池:

[cephu@node1 ~]$ sudo ceph osd pool create rbd 128 128
pool 'rbd' created

4.2 初始化存储池:

[cephu@node1 ~]$ sudo rbd pool init rbd

4.3 客户端client(192.168.0.108),cephu用户:

(1)升级client内核到4.x

更新前,内核版本为:

[cephu@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
image.png
#安装内核
[cephu@client ~]$ sudo yum --enablerepo=elrepo-kernel install  kernel-lt-devel kernel-lt
image.png
#查看默认启动顺序
[cephu@client ~]$ sudo 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-a2fd5fc957c44536a3fbf4e4894b0e36) 7 (Core)
#虽然4.4内核在0的位置,但是系统会默认使用上次启动使用的内核来启动,所以我们需要把4.4内核设置为默认
[cephu@client ~]$ sudo grub2-set-default 0

重启client

#查看重启后的内核版本
[cephu@client ~]$ uname -r
4.4.219-1.el7.elrepo.x86_64
#删除旧的内核
[cephu@client ~]$ sudo yum remove kernel
(2)为client安装ceph:
[root@client ~]# yum  -y install python-setuptools

安装luminous,参考2.3

(3)关闭防火墙和SELinux
(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 vim /etc/ceph/ceph.conf     #在global部分下添加:
rbd_default_features = 1
image.png

4.4 client节点创建块设备镜像:单位是M,这里是3个G

[cephu@client ~]$ rbd create foo --size 3072

4.5 client节点映射镜像到主机:

[cephu@client ~]$ sudo rbd map foo --name client.admin
如果出现如下错误:

image.png

[cephu@client ~]$ sudo ceph osd crush tunables hammer
adjusted tunables profile to hammer
然后重新执行映射命令
[cephu@client ~]$ sudo rbd map foo --name client.admin
/dev/rbd0

4.6 client节点格式化块设备:

[cephu@client ~]$ sudo mkfs.ext4 -m 0 /dev/rbd/rbd/foo

image.png

[cephu@client ~]$ lsblk
image.png

4.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
接下来就可以使用这块磁盘啦

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

推荐阅读更多精彩内容