分布式存储ceph部署
部署luminous(ceph12.2.10的版本代号)
配置dashboard
客户端使用rbd
======================================
部署环境
系统版本:centos7.5 x86_64 server
ceph版本:ceph 12.2.10(luminous)
硬件配置:5台vm,1核1G内存,每台node角色的机器至少挂载1块为osd准备的空闲盘
主机名 ip role
admin 192.168.101.100 admin
node1 192.168.101.101 mon / mgr / osd
node2 192.168.101.102 osd
client 192.168.101.103
======================================
1 准备工作
1.1 开启网络(所有节点,root用户)
1.2 修改主机名/互相解析(所有节点,root用户)
1.3 创建用户(所有节点,root用户) 在所有节点上执行如下操作:
1)创建用户名:cephu,设置密码:
# useradd cephu
# passwd cephu
2)修改visudo文件,否则提示cephu不再sudoer列表中的错误。
命令行输入visudo,在root ALL=(ALL) ALL下面添加:
cephu ALL=(ALL) ALL
3)切换至cephu用户,为该用户增加root权限:
$ echo "cephu ALL=(root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephu
$ sudo chmod 0440 /etc/sudoers.d/cephu
1.4 实现ssh无密码登录(admin节点)
1)cephu用户下,生成秘钥:
$ ssh-keygen
2)cephu用户下,把生成的密钥拷贝到各Ceph节点:
$ ssh-copy-id cephu@node1
$ ssh-copy-id cephu@node2
3)root用户下,添加~/.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用户)
1)添加ceph源:
#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
2)更新源,安装ceph-deploy:
# sudo yum makecache
# sudo yum update
# vim /etc/yum.conf
keepcache=1
# sudo yum install ceph-deploy -y
1.6 设置TTY(所有节点)
注意:此设置由官方文档指出,但是并未在这里找不到此配置行,不用做此步
# sudo visudo 找到 Defaults requiretty 注释掉
1.7 关闭selinux(所有节点)
1.8 设置时间同步
sudo yum -y install ntpdate
sudo ntpdate ntp1.aliyun.com
2 部署ceph集群
没有特别说明以下所有操作均是在admin节点,cephu用户下执行
2.1 创建ceph操作目录:
$ mkdir my-cluster //切记不可用sudo创建
$ cd my-cluster //之后,所有ceph-deploy命令操作必须在该目录下执行
2.2 创建集群:
$ ceph-deploy new node1
创建成功会有三个文件:ceph.conf, ceph.mon.keyring, and a log file
2.3 安装luminous(12.2.9):
目标:在node1,node2,node3三个节点上安装ceph和ceph-radosgw主包
方法1:利用官方脚本全自动安装
脚本会帮助node1,node2,node3创建epel源和ceph源,并且自动安装ceph和ceph-radosgw主包
$ ceph-deploy install --release luminous node1 node2 node3
这一步实际上是给3个节点安装两个软件:如果ceph和ceph-radosgw安装不上,则采用方法2
测试是否安装完成:分别在node1 node2 node3中确认安装版本为12.2.9
$ ceph --version
方法2:手动部署安装
1)安装epel源
2)创建Ceph源,内容如下:
[Ceph]
name=Ceph packages for $basearch
baseurl=http://download.ceph.com/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://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=https://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=https://download.ceph.com/keys/release.asc
priority=1
3)分别在node1,node2,node3节点执行下面命令安装软件
可以完全手动安装,但需要yum的ceph缓存目录结构
$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.1:
$ ceph --version
2.4 初始化mon:
$ ceph-deploy mon create-initial
2.5 赋予各个节点使用命令免用户名权限:
$ ceph-deploy admin node1 node2 node3
2.6 安装ceph-mgr:只有luminous才有,为使用dashboard做准备
$ ceph-deploy mgr create node1
2.7 添加osd:
注意:各个节点上提供存储空间的磁盘大小不能太小,最好5G以上
$ ceph-deploy osd create --data /dev/sdb node1(12.2.10版本是这条命令,分开给各节点安装)
$ ceph-deploy osd create --data /dev/sdb node2
$ ceph-deploy osd create --data /dev/sdb node3
命令中/dev/sdb是在各个节点上为osd准备的空闲磁盘(无需分区格式化,如果有分区需要指定具体分区),通过如下命令查看:
$ ssh node1 lsblk -f
最后通过如下命令查看集群状态:
$ ssh node1 sudo ceph -s
如果显示health_ok,3个osd up就成功了
3 Dashboard的配置:在node1上操作
把ceph-mgr和ceph-mon安装在同一个主机上,最好只有一个ceph-mgr
3.1 创建管理域秘钥:
$ sudo ceph auth get-or-create mgr.node1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'
3.2 开启 ceph-mgr 管理域:
$ sudo ceph-mgr -i node1
3.3 查看ceph的状态:
$ sudo ceph status
确认mgr的状态为active
3.4 打开dashboard模块:
$ sudo ceph mgr module enable dashboard
3.5 绑定开启dashboard模块的ceph-mgr节点的ip地址:
$ sudo ceph config-key set mgr/dashboard/node1/server_addr 192.168..101.101 #ip地址为mgr节点的ip地址
3.6 web登录:
浏览器地址栏输入:
mgr地址:7000
======================================
4 配置客户端使用rbd:
创建块设备之前需要创建存储池,存储池相关命令需要在mon节点执行
4.1 创建存储池:
$ sudo ceph osd pool create rbd 128 128
4.2 初始化存储池:
$ sudo rbd pool init rbd
4.3 准备客户端client:
另备一台主机,系统centos7用来作为client。主机名为client,ip:192.168.101.103。修改hosts文件实现和admin节点的主机名互通。
1)升级client内核到4.x,方法在子目录中
Centos7升级内核
更新前,内核版本为:
#uname -r
3.10.0-327.10.1.el7.x86_64
升级方法
导入key:
#rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
安装elrepo的yum源:
#rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
4.4查看可用的系统内核包
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
安装内核:
#yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml
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
查看默认启动顺序
#awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (4.4.4-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-327.10.1.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-c52097a1078c403da03b8eddeac5080b) 7 (Core)
默认启动的顺序是从0开始,新内核是从头插入(目前位置在0,而4.4.4的是在1),所以需要选择0。
#grub2-set-default 0
然后reboot重启,使用新的内核,下面是重启后使用的内核版本:
4.5、删除旧的内核
#yum remove kernel
2)为client安装ceph:
参考2.3 在做2.3之前先在client上做1.3的三步
还要做着一步 否则报错 #yum -y install python-setuptools
3)关闭防护墙和selinux
4)在admin节点赋予client使用命令免用户名权限:
$ ceph-deploy admin client
5)修改client下该文件的读权限:
$ sudo chmod +r /etc/ceph/ceph.client.admin.keyring
6)修改client下的ceph配置文件:这一步是为了解决映射镜像时出错问题
$ sudo vi /etc/ceph/ceph.conf 在global section下添加:
rbd_default_features = 1
4.4 client节点创建块设备镜像:单位是M,这里是4个G
$ rbd create foo --size 4096
4.5 client节点映射镜像到主机:
$ sudo rbd map foo --name client.admin
4.6 client节点格式化块设备:
$ sudo mkfs.ext4 -m 0 /dev/rbd/rbd/foo
4.7 client节点mount块设备:
$ sudo mkdir /mnt/ceph-block-device
$ sudo mount /dev/rbd/rbd/foo /mnt/ceph-block-device
$ cd /mnt/ceph-block-device