lustre集群部署1

1. 前言

本文详细介绍如何在almalinux8.9上部署基于ldiskfs的lustre单机集群。系统环境如下:

bash 复制代码
lustre版本:2.15.4
操作系统:almalinux 8.9
内核版本:4.18.0-513.5.1.el8_9.x86_64

2. 集群规划

bash 复制代码
mgt        192.168.3.11
mdt0       192.168.3.11
ost0       192.168.3.11
client     192.168.3.12

3. 系统设置

3.1. 防火墙设置

3.1.1. 关闭防火墙

bash 复制代码
systemctl stop firewalld.service
systemctl disable firewalld.service

3.2. selinux设置

3.2.1. 关闭selinux

bash 复制代码
sed -i.org 's|SELINUX=enforcing|SELINUX=disabled|g' /etc/selinux/config

3.2.2. 重启机器

bash 复制代码
reboot

3.2.3. 检查selinux状态

bash 复制代码
getenforce

如果输出结果是disabled,表明selinux已经关闭。

4. 集群部署

4.1. 服务端

4.1.1. 安装服务端软件

bash 复制代码
rpm -ivh --replacepkgs --upgrade kernel/*.rpm
rpm -ivh --replacepkgs --upgrade e2fsprogs/*.rpm
rpm -ivh --replacepkgs --upgrade lustre/server/*.rpm

如果已经做了离线yum源,也可以使用dnf installdnf reinstall命令安装。

bash 复制代码
dnf reinstall kernel kernel-modules \
kernel-core kernel-tools kernel-tools-libs

dnf reinstall e2fsprogs e2fsprogs-libs libcom_err libss

dnf install kmod-lustre kmod-lustre-osd-ldiskfs \
lustre lustre-osd-ldiskfs-mount \
lustre-iokit lustre-resource-agents

4.1.2. 加载lustre内核模块

复制代码
modprobe -v lustre

4.1.3. 配置网络

lustre集群内部通过LNet网络通信,LNet支持InfiniBand and IP networks。本案例采用TCP模式。

初始化配置lnet

bash 复制代码
lnetctl lnet configure

默认情况下lnetctl lnet configure会加载第一个up状态的网卡,所以一般情况下不需要再配置net。

可以使用lnetctl net show命令列出所有的net配置信息,如果没有符合要求的net信息,需要按照下面步骤添加。

添加tcp

bash 复制代码
lnetctl net add --net tcp0 --if enp0s8

如果lnetctl lnet configure已经将添加了tcp0,使用lnetctl net del删除tcp0,然后用lnetctl net add重新添加。
tcp0可以理解为一个子网,原则上tcp后面的数字可以任意写。如果定义成tcp0,那么集群中所有的服务以及客户端都应该设置成同一子网,即tcp0

查看添加的tcp

bash 复制代码
lnetctl net show --net tcp0

保存到配置文件

bash 复制代码
lnetctl net show --net tcp0 >> /etc/lnet.conf

开机自启动lnet服务

bash 复制代码
systemctl enable lnet

4.1.4. 部署MGS服务

创建mgt

bash 复制代码
mkfs.lustre --mgs --backfstype=ldiskfs --reformat /dev/sdb

启动mgs服务

bash 复制代码
mkdir -p /lustre/mgt
mount -t lustre -U 95d74a36-996f-403a-84b4-1912bec0143b /lustre/mgt -v

其中95d74a36-996f-403a-84b4-1912bec0143b/dev/sdb的uuid,可以通过blkid命令查询。建议采用uuid,因为磁盘盘符会改变。

原则上挂载点的名字可以任意取名,建议和mgt名字保持一致。

4.1.5. 部署MDS服务

创建mdt

bash 复制代码
mkfs.lustre --mdt \
--fsname fs00 \
--index 0 \
--mgsnode=192.168.3.11@tcp0 \
--backfstype=ldiskfs \
--reformat /dev/sdc

如果磁盘空间容量比较大,可以添加参数--mkfsoptions="-E nodiscard",加快格式化过程。

启动mds服务

bash 复制代码
mkdir -p /lustre/mdt/mdt0
mount -t lustre -U 6feb0516-e2b1-4075-8b37-de94bb65c93b /lustre/mdt/mdt0 -v

4.1.6. 部署OSS服务

创建ost

bash 复制代码
mkfs.lustre --ost \
--fsname fs00 \
--index 0 \
--mgsnode=192.168.3.11@tcp0 \
--backfstype=ldiskfs \
--reformat /dev/sdd

启动oss服务

bash 复制代码
mkdir -p /lustre/ost/ost0
mount -t lustre -U 930e22ba-969c-4f95-820a-d7f521b47b0d /lustre/ost/ost0 -v

4.2. 客户端

lustre客户端软件不能和服务端软件安装在同一台机器上,因为lustre服务端软件已经包含了客户端软件所有的文件。所以,非必要,可以直接在服务端挂载lustre文件系统,而无需再另外一台机器上安装客户端软件。

4.2.1. 安装客户端软件

bash 复制代码
rpm -ivh --replacepkgs --upgrade lustre/client/*.rpm

如果已经做了离线yum源,也可以使用dnf install命令安装。

bash 复制代码
dnf install kmod-lustre-client lustre-client lustre-iokit

4.2.2. 加载lustre内核模块

bash 复制代码
modprobe -v lustre

4.2.3. 配置网络

lustre集群内部通过LNet网络通信,LNet支持InfiniBand and IP networks。本案例采用TCP模式。

初始化配置lnet

bash 复制代码
lnetctl lnet configure

默认情况下lnetctl lnet configure会加载第一个up状态的网卡,所以一般情况下不需要再配置net。

可以使用lnetctl net show命令列出所有的net配置信息,如果没有符合要求的net信息,需要按照下面步骤添加。

添加tcp

bash 复制代码
lnetctl net add --net tcp0 --if enp0s8

如果lnetctl lnet configure已经将添加了tcp0,使用lnetctl net del删除tcp0,然后用lnetctl net add重新添加。
tcp0可以理解为一个子网,原则上tcp后面的数字可以任意写。如果定义成tcp0,那么集群中所有的服务以及客户端都应该设置成同一子网,即tcp0

查看添加的tcp

bash 复制代码
lnetctl net show --net tcp0

保存到配置文件

bash 复制代码
lnetctl net show --net tcp0 >> /etc/lnet.conf

开机自启动lnet服务

bash 复制代码
systemctl enable lnet

4.2.4. 挂载文件系统

bash 复制代码
mkdir -p /mnt/fs00
mount -t lustre 192.168.3.11@tcp0:/fs00 /mnt/fs00 -v

5. 参考资料

相关推荐
岁岁种桃花儿11 小时前
Kafka从入门到上天系列第三篇:基础架构推演+基础组件图形推演
分布式·kafka
qq_12498707531 天前
基于Hadoop的信贷风险评估的数据可视化分析与预测系统的设计与实现(源码+论文+部署+安装)
大数据·人工智能·hadoop·分布式·信息可视化·毕业设计·计算机毕业设计
Coder_Boy_1 天前
基于Spring AI的分布式在线考试系统-事件处理架构实现方案
人工智能·spring boot·分布式·spring
袁煦丞 cpolar内网穿透实验室1 天前
远程调试内网 Kafka 不再求运维!cpolar 内网穿透实验室第 791 个成功挑战
运维·分布式·kafka·远程工作·内网穿透·cpolar
人间打气筒(Ada)1 天前
GlusterFS实现KVM高可用及热迁移
分布式·虚拟化·kvm·高可用·glusterfs·热迁移
xu_yule1 天前
Redis存储(15)Redis的应用_分布式锁_Lua脚本/Redlock算法
数据库·redis·分布式
難釋懷1 天前
分布式锁的原子性问题
分布式
ai_xiaogui1 天前
【开源前瞻】从“咸鱼”到“超级个体”:谈谈 Panelai 分布式子服务器管理系统的设计架构与 UI 演进
服务器·分布式·架构·分布式架构·panelai·开源面板·ai工具开发
凯子坚持 c1 天前
如何基于 CANN 原生能力,构建一个支持 QoS 感知的 LLM 推理调度器
分布式