欢迎访问我的博客,你的支持,是我最大的动力!

部署 GlusterFS 及 Heketi

Linux 马从东 111℃ 评论
目录:
[显示]

Glusterfs是一个开源分布式文件系统,具有强大的横向扩展能力,可支持数PB存储容量和数千客户端,具有可扩展性、高性能、高可用性等特点。

GlusterFS 存储系统可为K8s集群提供PV动态供给

代码下载:
CentOS 8 :https://download.gluster.org/pub/gluster/glusterfs/LATEST/CentOS/
CentOS 7 :https://buildlogs.centos.org/centos/7/storage/x86_64/gluster-5/   最新为gluster-6

部署 glusterfs-server

在所有节点上执行:

# 查看有哪些版本
yum search centos-release-gluster
# 安装glaster-5的代码仓库
yum install centos-release-gluster
# 安装 glusterfs-server 5.3
yum install glusterfs-server
# 启动服务
systemctl start glusterd.service
systemctl enable glusterd.service
systemctl status glusterd

组建glusterfs集群
在任一节点执行发现其他节点的命令

# 在kube-master上
gluster peer probe kube-node1
gluster peer probe kube-node2

查看节点状态

# 在任意节点
gluster peer status
部署 Heketi

Heketi为管理GlusterFS存储卷提供了RESTful管理接口
Heketi能自动确定整个集群brick位置,并确保将brick及其副本放置在不同的故障域中;并支持任意数量的Gluster存储集群

有了Heketi,存储管理员不必再管理和配置brick、磁盘或可信存储池trusted pool。Heketi服务可管理所有硬件,并使其能按需分配存储
但,在Heketi中注册的任何磁盘都必须以原始格式提供,不能是创建过文件系统的磁盘分区

将Heketi服务部署于 kube-node2

# 安装 Heketi 8.0.0 来自 centos-gluster5仓库
yum install heketi heketi-client
# 配置Heketi用户能ssh密钥方式连接集群中各节点
id heketi
ssh-keygen -f /etc/heketi/heketi_key -t rsa -N ''
chown heketi:heketi /etc/heketi/heketi_key*
for host in kube-master kube-node1 kube-node2; do ssh-copy-id -i /etc/heketi/heketi_key.pub root@${host}; done
# 测试
ssh -i /etc/heketi/heketi_key root@kube-master
# 编辑 Heketi 配置文件 /etc/heketi/heketi.json
# 定义监听端口、认证及连接Gluster存储集群的方式

若要启用连接Heketi的认证,将 use_auth 设置为 true 并在 jwt{} 段中为用户设定相应的密码,用户名和密码都可以自定义
若启用了认证,在K8s集群中配置存储时要设置相应的认证信息
glusterfs{} 段用于指定接入Gluster集群的认证方式及认证信息

# 启动 Heketi 服务
systemctl enable heketi
systemctl start heketi
systemctl status heketi
# 测试访问
curl http://kube-node2:8080/hello
heketi-cli --server http://kube-node2:8080 cluster list
## 若启用了认证,则要使用heketi-cli命令进行测试
## heketi-cli --server http://<server:port> --user <user> --secret <secret> cluster list

注意,将gluster集群托管于heketi后,不能使用命令管理存储卷,以免与Heketi数据库中存储的信息不一致

设置 Heketi 系统拓扑

拓扑信息用于让Heketi确认可使用的节点、磁盘和集群,管理员必须自行确定节点故障域和节点集群
故障域,赋予节点的整数值,这组节点共享相同的交换机、电源等任何会导致它们同时失效的组件
节点集群,确定哪些节点构成一个集群,Heketi使用这些信息来确保跨故障域中创建副本,以提供数据冗余能力
Heketi支持多个Gluster集群

# 如下/etc/heketi/topology.json将三个节点定义在同一集群中,并指定各节点用于提供存储空间的磁盘设备

# 加载拓扑信息 生成集群 会生成集群ID
export HEKETI_CLI_SERVER=http://kube-node2:8080
heketi-cli topology load --json=/etc/heketi/topology.json
# 查看集群状态
heketi-cli cluster info 2945c46ca8cc46ba668897aed082c332
heketi-cli cluster list  # 获取集群ID
heketi-cli node list
# 测试
## 创建一个存储卷 1G
heketi-cli volume create --size=1 --replica=2
heketi-cli volume create --size=1  # 默认3副本
# 在glusterfs集群上查看volume
gluster volume info
heketi-cli volume list
heketi-cli volume info b6707b5bc37ef326c68ee723bd4acf09
# 删除卷
heketi-cli volume delete c4385546348848a0072fa64355a0e6d6

远程节点上挂载存储卷,需要安装GlusterFS和glusterfs-fuse程序,以提供对GlusterFS客户端驱动以及GlusterFS文件系统的运行

客户机依赖:
yum install glusterfs glusterfs-fuse attr
临时挂载:
mount -t glusterfs 192.168.1.110:/vol_17cfce78ddf6b2382167e0cff4a37d41 /mnt
umount /mnt
永久挂载:
echo "192.168.1.110:/vol_17cfce78ddf6b2382167e0cff4a37d41 /mnt glusterfs defaults,_netdev 0 0" >> /etc/fstab

在K8s中的使用,通过StorageClass实现PV动态供给:

2019-04-19 更新:
故障: heketi 无法启动
rm /var/lib/heketi/heketi.db 再重启
# 清除/dev/sdb上的lvm分区
删除 /dev/mapper下的映射 再重启 (不确定是否是这样)
# 格式化
mkfs.xfs /dev/sdb
# 生成裸设备
dd if=/dev/zero of=/dev/sdb bs=1k count=1
# 重新导入拓扑
heketi-cli topology load --json=/etc/heketi/topology.json

转载请注明:轻风博客 » 部署 GlusterFS 及 Heketi

喜欢 (0)or分享 (0)