分布式存储Ceph集群的部署详解
如果在你部署的时候报错了,不妨到这里看看。ceph部署常见错误总结1.环境及准备5台虚拟机,每台1核1G内存。三个node节点需要提前添加一块空磁盘===========================================================主机名iproleadmin...
·
如果在你部署的时候报错了,不妨到这里看看。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
更多推荐
已为社区贡献11条内容
所有评论(0)