1. 首页 > 软件安装教程 > 正文

GlusterFS安装配置-GlusterFS分布式存储安装配置_升级迁移详细过程

1. GlusterFS概述与环境规划

GlusterFS是一个开源的分布式文件系统,提供可扩展的存储解决方案。GlusterFS设计用于高可用性、高可靠性和高性能,适用于各种存储场景。更多学习教程www.fgedu.net.cn

1.1 GlusterFS版本说明

GlusterFS目前主要版本为9.x系列,本教程以GlusterFS 9.5为例进行详细讲解。GlusterFS 9.x版本相比之前版本在性能、稳定性和功能方面都有显著提升,支持更多的存储特性。

# 查看GlusterFS版本
$ gluster –version
glusterfs 9.5

# 查看系统版本
$ cat /etc/os-release
NAME=”Oracle Linux Server”
VERSION=”8.9″
ID=”ol”
PRETTY_NAME=”Oracle Linux Server 8.9″

# 查看内核版本
$ uname -r
5.4.17-2136.302.7.2.el8uek.x86_64

1.2 环境规划

本次安装环境规划如下:

GlusterFS集群:
gluster01.fgedu.net.cn (192.168.1.122) – 存储节点1
gluster02.fgedu.net.cn (192.168.1.123) – 存储节点2
gluster03.fgedu.net.cn (192.168.1.124) – 存储节点3
gluster04.fgedu.net.cn (192.168.1.125) – 存储节点4

GlusterFS版本:9.5
部署模式:分布式复制卷
数据存储:本地SSD磁盘

2. 硬件环境要求

GlusterFS作为分布式文件系统,对硬件资源要求根据存储容量和并发访问量而定。学习交流加群风哥微信: itpux-com

2.1 物理主机环境要求

# 存储节点要求
– CPU:至少8核
– 内存:至少16GB
– 磁盘:系统盘120GB SSD + 数据盘4TB SSD x 4

# 检查存储节点资源
# free -h
total used free shared buff/cache available
Mem: 16G 8.4G 7.1G 512M 512M 7.4G
Swap: 8G 0B 8G

# 检查磁盘空间
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 120G 20G 100G 17% /
/dev/sdb1 4TB 100G 3.9T 3% /data1
/dev/sdc1 4TB 100G 3.9T 3% /data2
/dev/sdd1 4TB 100G 3.9T 3% /data3
/dev/sde1 4TB 100G 3.9T 3% /data4

生产环境建议:存储节点至少4个,实现高可用。每个存储节点至少4块SSD磁盘,实现数据分片和冗余。建议使用企业级SSD磁盘以提高I/O性能和可靠性。网络带宽建议10Gbps以上,以支持大量数据传输。

2.2 vSphere虚拟主机环境要求

虚拟机配置:
– 存储节点:
– vCPU:8核
– 内存:16GB
– 磁盘:系统盘120GB SSD + 数据盘4TB SSD x 4
– 网络:VMXNET3网卡,10Gbps网络

资源池配置:
– CPU预留:4GHz
– 内存预留:8GB
– 内存限制:16GB
– CPU份额:正常
– 内存份额:正常

2.3 云平台主机环境要求

云主机规格(阿里云/腾讯云/华为云):
– 存储节点:
– 实例规格:ecs.g6.4xlarge或同等规格
– vCPU:16核
– 内存:32GB
– 系统盘:SSD云盘 120GB
– 数据盘:SSD云盘 4TB x 4
– 网络带宽:10Gbps以上

存储配置:
– 云盘快照:定期备份数据
– 跨区域复制:实现数据异地备份

3. 操作系统环境准备

在安装GlusterFS之前,需要对操作系统进行必要的配置和优化。

3.1 操作系统版本检查

# 检查操作系统版本
# cat /etc/os-release
NAME=”Oracle Linux Server”
VERSION=”8.9″
ID=”ol”
PRETTY_NAME=”Oracle Linux Server 8.9″

# 检查内核版本
# uname -r
5.4.17-2136.302.7.2.el8uek.x86_64

# 检查SELinux状态
# getenforce
Enforcing

# 检查防火墙状态
# systemctl status firewalld
● firewalld.service – firewalld – dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running)

3.2 依赖服务安装

# 安装依赖包
# dnf install -y wget curl tar gzip python3 python3-pip

# 关闭防火墙
# systemctl stop firewalld
# systemctl disable firewalld

# 关闭SELinux
# setenforce 0
# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config

# 创建GlusterFS用户
# useradd -r -s /bin/false gluster

# 创建目录结构
# mkdir -p /data/gluster/{config,bin,data}
# chown -R gluster:gluster /data/gluster

3.3 配置网络

# 配置静态IP
# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.122
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114

# 重启网络
# systemctl restart NetworkManager

# 验证网络
# ping -c 4 google.com

# 配置主机名
# hostnamectl set-hostname gluster01.fgedu.net.cn

# 配置hosts文件
# vi /etc/hosts
192.168.1.122 gluster01.fgedu.net.cn gluster01
192.168.1.123 gluster02.fgedu.net.cn gluster02
192.168.1.124 gluster03.fgedu.net.cn gluster03
192.168.1.125 gluster04.fgedu.net.cn gluster04

3.4 配置SSH免密登录

# 生成SSH密钥
# ssh-keygen -t rsa -b 2048

# 复制公钥到所有节点
# for host in gluster01 gluster02 gluster03 gluster04; do ssh-copy-id $host; done

# 验证免密登录
# ssh gluster02 hostname
gluster02.fgedu.net.cn

4. GlusterFS安装配置

完成环境准备后,开始安装GlusterFS。

4.1 安装GlusterFS

# 添加GlusterFS仓库
# vi /etc/yum.repos.d/gluster.repo
[gluster9]
name=Gluster 9 packages for $basearch
baseurl=https://download.gluster.org/pub/gluster/glusterfs/9/LATEST/RHEL8/$basearch/
gpgcheck=1
gpgkey=https://download.gluster.org/pub/gluster/glusterfs/9/LATEST/RHEL8/$basearch/repodata/repomd.xml.key
enabled=1

# 安装GlusterFS
# dnf install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

# 验证安装
# gluster –version
glusterfs 9.5

# 启动GlusterFS服务
# systemctl start glusterd
# systemctl enable glusterd

# 验证服务状态
# systemctl status glusterd

4.2 初始化GlusterFS集群

# 添加存储节点
# gluster peer probe gluster02
# gluster peer probe gluster03
# gluster peer probe gluster04

# 验证集群状态
# gluster peer status

# 查看集群信息
# gluster pool list

4.3 配置存储目录

# 创建存储目录
# mkdir -p /data/gluster/data1
# mkdir -p /data/gluster/data2
# mkdir -p /data/gluster/data3
# mkdir -p /data/gluster/data4

# 格式化磁盘
# mkfs.xfs /dev/sdb1
# mkfs.xfs /dev/sdc1
# mkfs.xfs /dev/sdd1
# mkfs.xfs /dev/sde1

# 挂载磁盘
# vi /etc/fstab
/dev/sdb1 /data/gluster/data1 xfs defaults,noatime,nodiratime 0 0
/dev/sdc1 /data/gluster/data2 xfs defaults,noatime,nodiratime 0 0
/dev/sdd1 /data/gluster/data3 xfs defaults,noatime,nodiratime 0 0
/dev/sde1 /data/gluster/data4 xfs defaults,noatime,nodiratime 0 0

# 挂载磁盘
# mount -a

# 验证挂载
# df -h

5. GlusterFS配置优化

为了提高GlusterFS的性能和稳定性,需要进行一些配置优化。

5.1 基本配置优化

# 编辑GlusterFS配置文件
# vi /etc/glusterfs/glusterd.vol
volume management
type mgmt/glusterd
option working-directory /var/lib/glusterd
option transport-type socket,rdma
option rpc-auth-allow-insecure on
end-volume

# 重启GlusterFS服务
# systemctl restart glusterd

# 验证配置
# gluster volume info

5.2 高可用配置

# 配置分布式复制卷
# gluster volume create gv0 replica 2 gluster01:/data/gluster/data1 gluster02:/data/gluster/data1 gluster03:/data/gluster/data1 gluster04:/data/gluster/data1

# 启动卷
# gluster volume start gv0

# 验证卷状态
# gluster volume info gv0

5.3 内存配置

# 编辑GlusterFS配置文件
# vi /etc/sysconfig/glusterd
GLUSTERD_OPTIONS=”–log-level INFO –max-open-files 65536″

# 重启GlusterFS服务
# systemctl restart glusterd

6. GlusterFS卷配置

GlusterFS支持多种卷类型,包括分布式卷、复制卷、条带卷和分布式复制卷等。

6.1 创建分布式卷

# 创建分布式卷
# gluster volume create gv1 gluster01:/data/gluster/data1 gluster02:/data/gluster/data1 gluster03:/data/gluster/data1 gluster04:/data/gluster/data1

# 启动卷
# gluster volume start gv1

# 验证卷状态
# gluster volume info gv1

6.2 创建复制卷

# 创建复制卷
# gluster volume create gv2 replica 2 gluster01:/data/gluster/data1 gluster02:/data/gluster/data1

# 启动卷
# gluster volume start gv2

# 验证卷状态
# gluster volume info gv2

6.3 创建条带卷

# 创建条带卷
# gluster volume create gv3 stripe 4 gluster01:/data/gluster/data1 gluster02:/data/gluster/data1 gluster03:/data/gluster/data1 gluster04:/data/gluster/data1

# 启动卷
# gluster volume start gv3

# 验证卷状态
# gluster volume info gv3

6.4 创建分布式复制卷

# 创建分布式复制卷
# gluster volume create gv4 replica 2 gluster01:/data/gluster/data1 gluster02:/data/gluster/data1 gluster03:/data/gluster/data1 gluster04:/data/gluster/data1

# 启动卷
# gluster volume start gv4

# 验证卷状态
# gluster volume info gv4

7. GlusterFS客户端配置

GlusterFS客户端用于挂载和访问GlusterFS卷。

7.1 安装GlusterFS客户端

# 安装GlusterFS客户端
# dnf install -y glusterfs-fuse

# 验证安装
# glusterfs –version
glusterfs 9.5

7.2 挂载GlusterFS卷

# 创建挂载点
# mkdir -p /mnt/gluster/gv0

# 挂载卷
# mount -t glusterfs gluster01:/gv0 /mnt/gluster/gv0

# 验证挂载
# df -h

# 配置自动挂载
# vi /etc/fstab
gluster01:/gv0 /mnt/gluster/gv0 glusterfs defaults,_netdev 0 0

# 测试自动挂载
# mount -a

7.3 测试GlusterFS卷

# 写入测试数据
# dd if=/dev/zero of=/mnt/gluster/gv0/testfile bs=1M count=100

# 读取测试数据
# dd if=/mnt/gluster/gv0/testfile of=/dev/null bs=1M count=100

# 验证数据一致性
# md5sum /mnt/gluster/gv0/testfile

8. GlusterFS安全配置

GlusterFS提供了多种安全功能,包括认证、授权、TLS加密等。

8.1 认证配置

# 配置认证
# gluster volume set gv0 auth.allow 192.168.1.0/24

# 验证配置
# gluster volume info gv0

8.2 TLS加密配置

# 生成TLS证书
# mkdir -p /etc/ssl/glusterfs
# openssl req -newkey rsa:2048 -nodes -keyout /etc/ssl/glusterfs/gluster.key -x509 -days 365 -out /etc/ssl/glusterfs/gluster.crt

# 编辑GlusterFS配置文件
# vi /etc/glusterfs/glusterd.vol
volume management
type mgmt/glusterd
option working-directory /var/lib/glusterd
option transport-type socket,rdma
option rpc-auth-allow-insecure on
option ssl.certificate /etc/ssl/glusterfs/gluster.crt
option ssl.key /etc/ssl/glusterfs/gluster.key
option ssl.ca-cert /etc/ssl/glusterfs/gluster.crt
end-volume

# 重启GlusterFS服务
# systemctl restart glusterd

# 配置卷TLS
# gluster volume set gv0 ssl.enable on
# gluster volume set gv0 ssl.certificate /etc/ssl/glusterfs/gluster.crt
# gluster volume set gv0 ssl.key /etc/ssl/glusterfs/gluster.key
# gluster volume set gv0 ssl.ca-cert /etc/ssl/glusterfs/gluster.crt

9. GlusterFS性能优化

在生产环境中,需要对GlusterFS进行性能优化以提高存储和检索效率。from:www.itpux.com

9.1 内存优化

# 编辑GlusterFS配置文件
# vi /etc/sysconfig/glusterd
GLUSTERD_OPTIONS=”–log-level INFO –max-open-files 65536 –volfile-server-port 24007″

# 重启GlusterFS服务
# systemctl restart glusterd

9.2 网络优化

# 优化网络参数
# vi /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15

# 应用配置
# sysctl -p

9.3 磁盘优化

# 优化磁盘I/O
# vi /etc/sysctl.conf
vm.swappiness = 0
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

# 应用配置
# sysctl -p

# 优化XFS文件系统
# vi /etc/fstab
/dev/sdb1 /data/gluster/data1 xfs defaults,noatime,nodiratime 0 0
/dev/sdc1 /data/gluster/data2 xfs defaults,noatime,nodiratime 0 0
/dev/sdd1 /data/gluster/data3 xfs defaults,noatime,nodiratime 0 0
/dev/sde1 /data/gluster/data4 xfs defaults,noatime,nodiratime 0 0

# 重新挂载
# mount -o remount /data/gluster/data1
# mount -o remount /data/gluster/data2
# mount -o remount /data/gluster/data3
# mount -o remount /data/gluster/data4

9.4 GlusterFS参数优化

# 优化卷参数
# gluster volume set gv0 performance.cache-size 1GB
# gluster volume set gv0 performance.io-thread-count 16
# gluster volume set gv0 performance.write-behind on
# gluster volume set gv0 performance.read-ahead on
# gluster volume set gv0 performance.parallel-readdir on

# 验证配置
# gluster volume info gv0

10. GlusterFS升级迁移

本节介绍GlusterFS的版本升级和数据迁移方法。

10.1 GlusterFS版本升级

# 备份GlusterFS配置
# cp -r /etc/glusterfs /backup/gluster-config-$(date +%Y%m%d)

# 停止GlusterFS服务
# systemctl stop glusterd

# 升级GlusterFS
# dnf update -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

# 启动GlusterFS服务
# systemctl start glusterd

# 验证升级
# gluster –version
glusterfs 9.6

# 验证集群状态
# gluster peer status
# gluster volume info

10.2 GlusterFS数据迁移

# 备份原GlusterFS数据
# rsync -avz /mnt/gluster/gv0/ /backup/gluster-data-$(date +%Y%m%d)/

# 在新集群上恢复数据
# rsync -avz /backup/gluster-data-20230405/ /mnt/gluster/gv0/

# 安装GlusterFS
# 重复安装步骤

# 启动GlusterFS服务
# systemctl start glusterd

# 验证迁移
# gluster peer status
# gluster volume info

11. GlusterFS备份恢复

本节介绍GlusterFS的备份和恢复方法。

11.1 GlusterFS备份

# 创建备份脚本
# vi /data/gluster/scripts/backup.sh

#!/bin/bash
BACKUP_DIR=”/backup/gluster”
DATE=$(date +%Y%m%d)

# 创建备份目录
mkdir -p $BACKUP_DIR

# 停止GlusterFS服务
systemctl stop glusterd

# 备份配置文件
cp -r /etc/glusterfs $BACKUP_DIR/config-$DATE

# 备份数据
rsync -avz /data/gluster/ $BACKUP_DIR/data-$DATE/

# 启动GlusterFS服务
systemctl start glusterd

# 清理旧备份(保留7天)
find $BACKUP_DIR -type f -mtime +7 -exec rm -f {} \;

# 添加执行权限
# chmod +x /data/gluster/scripts/backup.sh

# 添加定时任务
# crontab -e
0 0 * * * /data/gluster/scripts/backup.sh

11.2 GlusterFS恢复

# 停止GlusterFS服务
# systemctl stop glusterd

# 清理现有数据
# rm -rf /data/gluster/

# 恢复数据
# rsync -avz /backup/gluster/data-20230405/ /data/gluster/

# 恢复配置文件
# cp -r /backup/gluster/config-20230405/* /etc/glusterfs/

# 启动GlusterFS服务
# systemctl start glusterd

# 验证恢复
# gluster peer status
# gluster volume info

11.3 GlusterFS监控脚本

# 创建GlusterFS监控脚本
# vi /data/gluster/scripts/monitor.sh

#!/bin/bash
LOG_FILE=”/var/log/gluster_monitor.log”
ALERT_EMAIL=”admin@fgedu.net.cn”

check_gluster_status() {
echo “$(date): Checking gluster status…” >> $LOG_FILE
status=$(gluster peer status | grep “State:” | awk ‘{print $2}’)
if [ “$status” != “Peer in Cluster” ]; then
echo “$(date): Gluster peer status is $status” >> $LOG_FILE
echo “Gluster peer status is $status” | mail -s “Gluster Alert” $ALERT_EMAIL
else
echo “$(date): Gluster peer status is OK” >> $LOG_FILE
fi
}

check_volume_status() {
echo “$(date): Checking volume status…” >> $LOG_FILE
volumes=$(gluster volume list)
for volume in $volumes; do
volume_status=$(gluster volume info $volume | grep “Status:” | awk ‘{print $2}’)
if [ “$volume_status” != “Started” ]; then
echo “$(date): Volume $volume status is $volume_status” >> $LOG_FILE
echo “Volume $volume status is $volume_status” | mail -s “Gluster Alert” $ALERT_EMAIL
else
echo “$(date): Volume $volume status is OK” >> $LOG_FILE
fi
done
}

check_disk_space() {
echo “$(date): Checking disk space…” >> $LOG_FILE
usage=$(df -h /data/gluster | tail -1 | awk ‘{print $5}’ | sed ‘s/%//’)
if [ $usage -gt 90 ]; then
echo “$(date): Disk space warning: /data/gluster is $usage% full” >> $LOG_FILE
echo “Disk space warning: /data/gluster is $usage% full” | mail -s “Gluster Alert” $ALERT_EMAIL
else
echo “$(date): Disk space: /data/gluster is $usage% full” >> $LOG_FILE
fi
}

main() {
check_gluster_status
check_volume_status
check_disk_space
}

main

# 添加执行权限
# chmod +x /data/gluster/scripts/monitor.sh

# 添加定时任务
# crontab -e
*/15 * * * * /data/gluster/scripts/monitor.sh

生产环境建议:定期备份GlusterFS配置和数据,建议每天执行一次完整备份。监控脚本建议每15分钟执行一次,及时发现并处理问题。恢复操作前务必停止GlusterFS服务,避免数据不一致。

通过以上步骤,GlusterFS安装配置、性能优化、升级迁移、备份恢复等内容已全部完成。GlusterFS作为开源分布式文件系统,能够高效地存储和管理数据,是企业级存储的重要工具。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息