Heketi 提供了丰富的RESTful API 用来对于Glusterfs的volume进行管理。Heketi可以同时管理多个cluster,每个cluster由多个node组成,每个node都是一个物理机,准确的说是一个裸盘。然后每个裸有多个bricks,而volume就是多个bricks组成的,但是,一个volume不可以跨node组成。示意图如下所示。
Heketi 在Github上的地址:https://github.com/heketi
下文将要讲述在Redhat 7上安装Heketi, Glusterfs并进行相应配置。
1. 配置Gluster yum 源并且安装heketi & glusterfs
进入/etc/yum.repos.d/目录,新建gluster.repo(名字随便起,但是后缀必须是repo),添加如下内容到gluster.repo文件:
[gluster]
name = Gluster
baseurl = http://buildlogs.centos.org/centos/7/storage/x86_64/gluster-4.0/
gpgcheck = 0
enable = 1
保存文件,然后执行yum repolist 会看到如下内容
接着执行yum install heketi -y 和 yum install heketi-client -y,进行heketi和heketi-client的安装。检查是否安装成功,用heketi --version查看版本,如果有版本信息,那么证明安装成功。接下来需要开启heketi服务。
order1 :systemctl enable heketi
order2 : systemctl start heketi
此时如果发生start fail,在log中查看日志(/var/log/messages),会看到如下内容:
这是因为默认的配置文件有个错误,此时需要通过 find /etc -name "heketi.service" 命令,找到heketi.service文件,打开文件,内容显示如下:
刚安装完毕,上面标注那一行内容应该是“-config” 而不是“--config”,所以在前面多加一个”-“,然后保存文件。接着执行systemctl daemon-reload. 然后执行systemctl start heketi 命令启动heketi。然后用
systemctl status heketi,会看到如下内容
到此时此刻,证明heketi,安装成功。Gluster的安装就显的简单了。
yum install glusterfs-server (服务器端)yum install -y glusterfs-client(客户端)。接着执行gluster --version命令,确认gluster安装成功。
2. 利用heketi创建gluster集群并进行volume管理
heketi有两个文件比较重要,第一个是heketi.json,位于/etc/heketi 目录下,主要用来确定heketi端口以及cluster node管理方式的定义等;第二个topology.json(文件路径随意,但是需要记住路径,用途后面写),此文件用来描述heketi创建的cluster的topology模型。heketi就是根据这个文件来创建cluster topology进而创建node 和volume。
如下是heketi.json文件的内容:
第一张图是heketi的端口号,默认是8080,但是可以修改,修改完之后需要重启heketi才能生效。
下面这张图是比较重要的,heketi用来管理cluster的,下面的配置控制了cluster下的node的管理方式,有三种
:mock, ssh,kubernetes。mock,顾名思义就是测试,在这种模式下,可以对于自己的配置文件什么的进行检验,但是,但是,但是,重要的坑说三遍,如果处于此模式下,虽然你可以看到node添加成功,volume创建成功,但是这些volume是不可用的,无法挂载的。所以如果要在SVT或者PROD环境用的话,一定要用ssh或者kubernetes模式。下面只讲述ssh模式。
3 cluster topology的配置
在/etc/heketi,新建文件topology.json,写入如下内容
{
"clusters": [
{
"nodes": [
{
"node": {
"hostnames": {
"manage": [
"100.120.187.1"
],
"storage": [
"100.120.187.1"
]
},
"zone": 1
},
"devices": [
{
"name": "/dev/mapper/bcdisk1-disk1",
"destroydata": true
}
]
},
"node": {
"hostnames": {
"manage": [
"100.120.187.2"
],
"storage": [
"100.120.187.2"
]
},
"zone": 1
},
"devices": [
{
"name": "/dev/mapper/bcdisk1-disk1",
"destroydata": true
}
]
},
{
"node": {
"hostnames": {
"manage": [
"100.120.187.3"
],
"storage": [
"100.120.187.3"
]
},
"zone": 1
},
"devices": [
{
"name": "/dev/mapper/bcdisk1-disk1",
"destroydata": true
}
]
}
]
}
]
}
查阅了相关资料,用heketi模式,最少需要三个node,如上配置。如果少于三个节点,cluster能创建成功,但是在创建volume的时候会出现错误。topology文件添加成功后,开始创建cluster topology,执行命令:
heketi-cli topology load --json=topology.json。然后输入heketi-cli topology info,查看topology是否创建成功。如果成功会显示如下内容:
下面就可以创建指定size的volume来进行使用了,创建volume命令:
heketi-cli volume create --size=10 --clusters=
clusterid。其中clusterid可以通过heketi-cli cluster list命令来获取。创建的volume可以通过mount的方式使用。
至此,heketi已经完成heketi的安装以及volume的创建和使用。