部署环境
系统版本: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节点要有两个磁盘
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
(3)切换至cephu用户,为该用户增加root权限:
# su - cephu
$ echo "cephu ALL=(root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephu
$ sudo chmod 0440 /etc/sudoers.d/cephu
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
[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
[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
这时候我们要重新安装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
[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
注:命令中/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
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 *'
3.2 开启 ceph-mgr 管理域:
[cephu@node1 ~]$ sudo ceph-mgr -i node1
3.3 查看ceph的状态:
[cephu@node1 ~]$ sudo ceph status
确认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
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
#安装内核
[cephu@client ~]$ sudo yum --enablerepo=elrepo-kernel install kernel-lt-devel kernel-lt
#查看默认启动顺序
[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
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
如果出现如下错误:
[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
[cephu@client ~]$ lsblk
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
接下来就可以使用这块磁盘啦
客户端重起之后,设备需要重新作映射,不然可能会卡死