目标:通过三台主机搭建ceph分布式文件系统集群
1、首先在每台主机的hosts文件中定义节点
vim /etc/hosts文件
106.75.24.5 node1
106.75.22.219 node2
106.75.22.252 node3
将以上文件拷贝到另外两台主机上
2、设置ceph-node1到ceph-node2和ceph-node3的免密码登陆
执行如下命令:
ssh-keygen
ssh-copy-id root@node2
ssh-copy-id root@node3

3、在操作系统防火墙内启用Ceph monitor OSD和 MDS所需要的端口,在所有节点上执行如下命令
#firewall-cmd --zone=public --add-port=6789/tcp --permanent
#firewall-cmd --zone=public --add-port=6800-7100/tcp --permanent
#firewall-cmd --reload
#firewall-cmd --zone=public --list-all
4、在所有节点上禁用SELINUX:
setenforce 0
sed -i s'SELINUX.*=.*enforcing/SELINUX=disabled'/g /etc/selinux/config
5、在所有节点上安装并配置ntp服务:
yum install ntp ntpdate -y
ntpdate -u pool.ntp.org
systemctl restart ntpdate.service
systemctl restart ntpd.service
systemctl enable ntpd.service
systemctl enable ntpdate.service
6、在所有ceph节点上添加Ceph Giant版本库并更新yum:
rpm -Uhv http://download.ceph.com/rpm-giant/el7/noarch/ceph-release-1-0.el7.noarch.rpm
yum update -y
在node1上创建ceph集群
7、在ceph-node1上安装ceph,并配置它成为Ceph monitor 和OSD节点
#1 在ceph-node1上安装ceph-deploy
yum install ceph-deploy -y
#2通过ceph-node1上执行一下命令,用ceph-deploy创建一个ceph集群
mkdir /etc/ceph; cd /etc/ceph
** 1、执行ceph-deploy的安装**
yum install ceph-deploy -y
2、在node1上执行如下命令,来通过cepy-deploy创建一个ceph集群
ceph-deploy new node1
执行完成以后,在当前目录下生成了:
ceph.conf 和ceph.mon.keyring文件
3、node1上执行如下命令:使用ceph-deploy在所有节点上安装ceph二进制软件包:
ceph-deploy install node1 node2 node3
这里要经过一个漫长的过程:分别在node1 和 node2 node3上进行安装
如果中间有安装失败的节点,可以单独安装,比如node3节点安装失败,可以
ceph-deploy install node3
注意这个是在node1节点上执行安装node1
有时候会比较慢,看个人网络,搞了大半天终于安装成功了:



主要是网络慢,有一个包下载困难,如果通过ceph-deploy安装不成功就直接考虑手工安装:
官网手工安装教程
4、在node1上创建一个Ceph monitor:
执行如下命令:
ceph-deploy mon create-initial
出现如下错误:这是在我自己的云主机上出现的错误
[node1][INFO ] Running command: ceph --cluster=ceph --admin-daemon /var/run/ceph/ceph-mon.node1.asok mon_status
[node1][ERROR ] admin_socket: exception getting command descriptions: [Errno 2] No such file or directory
上面这个错误有待继续追究
下面是我在另外一套环境中继续尝试安装:没有任何困难,安装成功:/etc/ceph下面会生成如下文件:

5、安装完成以后对ceph执行健康检查

此时没有任何osds,所以显示 no osds
在node1上创建OSD
注意虚拟硬盘作为一个整个盘,不要挂载,因为执行osd安装时,会自动进行格式化和挂载,如果提前挂载了其他目录,会导致无法挂载新的磁盘,安装失败
1、虚拟硬盘首先进行格式化
不同文件格式的文件系统格式化方式不一样,以下是xfs格式化命令
mkfs.xfs -f /dev/vdc
格式化多个磁盘就执行多次
2、列出 node1上可用的磁盘
[root@node1 ceph]# ceph-deploy disk list node1
3、disk zap子命令删除现有分区表和磁盘内容,这一步一定要确认好选择的正确的磁盘名称
执行如下:比如我三个硬盘 /dev/vdc /dev/vdd /dev/vde
[root@node1 ceph]# ceph-deploy disk zap node1:/dev/vdc node1:/dev/vdd node1:/dev/vde
osd create子命令准备磁盘,即默认先用xfs文件系统格式化磁盘,然后会激活磁盘的第一第二分区,分别作为数据分区和日志分区:
4、以上操作以后开始创建osd,执行如下命令
ceph-deploy osd create node1:/dev/vdc node1:/dev/vdd node1:/dev/vde
5、执行完成以上操作以后,检查ceph的健康状况
执行
ceph -s

3up代表 3个可用 3in代表一共三个
6、可以看下ceph在安装过程中自动分区挂载
df

如上:/dev/vdc /dev/vdd /dev/vde 三块硬盘,每个硬盘分了一个区,每个分区都自动进行挂载 自动命名
如上对ceph健康状况进行检查的时候,可以看到ceph健康状况还处于warning状态,是因为monitor只有一个非高可用
扩展ceph集群
扩展monitor
1、为了保证高可用,首先扩展 monitor节点为三个:
在/etc/ceph/ceph.conf中设置公共网络地址
public network = 118.144.155.0/24
在节点2和节点3上创建monitor
ceph-deploy mon create node2
ceph-deploy mon create node3
执行 ceph -s 查看是否成功

扩展osd
目前osd都在node1上,所以ceph集群的健康状况为health_warn,在node2,node3上执行disk list 和diskzap,并在node2和node3上创建osd
#列出可用磁盘
ceph-deploy disk list node2 node3
#格式化node2上三个磁盘
[root@node1 ceph]# ceph-deploy disk zap node2:/dev/vdb node2:/dev/vdc node2:/dev/vdd
#格式化node3上三个磁盘
[root@node1 ceph]# ceph-deploy disk zap node3:/dev/vdb node3:/dev/vdc node3:/dev/vdd
#在node2创建osd
[root@node1 ceph]# ceph-deploy osd create node2:/dev/vdb node2:/dev/vdc node2:/dev/vdd
#在node3上创建osd
[root@node1 ceph]# ceph-deploy osd create node3:/dev/vdb node3:/dev/vdc node3:/dev/vdd
安装osd过程中出现如下错误:
[ceph_deploy.osd][ERROR ] Failed to execute command: ceph-disk -v prepare --cluster ceph --fs-type xfs -- /dev/vdc
解决之后显示9个osd,之前是8个:

上图中依然有一个问题: 9个osds只有3个可用,下面查这个问题
首先看哪三个节点不可用:执行如下命令
[root@node1 ceph]# ceph --cluster ceph osd tree

网友评论