|
1 | 1 | --- |
2 | 2 | title: "可用性和扩展性说明" |
3 | | -description: "RustFS是一款简单、高效、分布式的对象存储。它100%兼容S3,使用Apache2 许可证发行的开源软件。" |
| 3 | +description: "本文将详细说明RustFS扩容相关的技术和说明。" |
4 | 4 | --- |
5 | 5 |
|
6 | | -> 即将发布,文档疯狂更新中.... |
7 | 6 |
|
| 7 | +> 在扩容请仔细阅读: [《Linux安装和部署RustFS》](https://rustfs.com/docs/install/linux/) |
| 8 | +
|
| 9 | + |
| 10 | +## 扩容方案概述 |
| 11 | +RustFS支持通过新增存储池(Server Pool)的方式实现横向扩容。每个新增的存储池必须满足: |
| 12 | +1. 存储池内节点需使用**连续主机名**(如node5-node8) |
| 13 | +2. 单个存储池内必须使用**相同规格**的磁盘(类型/容量/数量) |
| 14 | +3. 新增存储池需与现有集群保持**时间同步**和**网络互通** |
| 15 | + |
| 16 | + |
| 17 | + |
| 18 | +--- |
| 19 | + |
| 20 | +## 一、扩容前准备 |
| 21 | + |
| 22 | +### 1.1 硬件规划要求 |
| 23 | +| 项目 | 最低要求 | 推荐生产配置 | |
| 24 | +|---------------|---------------------------|---------------------------| |
| 25 | +| 节点数量 | 4节点/存储池 | 4 -8 节点/存储池 | |
| 26 | +| 单节点内存 | 128GB | 128GB | |
| 27 | +| 磁盘类型 | SSD | NVMe SSD | |
| 28 | +| 单磁盘容量 | ≥1TB | ≥4TB | |
| 29 | +| 网络带宽 | 10Gbps | 25Gbps | |
| 30 | + |
| 31 | +### 1.2 系统环境检查 |
| 32 | +```bash |
| 33 | +# 检查主机名连续性(新节点示例) |
| 34 | +cat /etc/hosts |
| 35 | +192.168.10.5 node5 |
| 36 | +192.168.10.6 node6 |
| 37 | +192.168.10.7 node7 |
| 38 | +192.168.10.8 node8 |
| 39 | + |
| 40 | +# 验证时间同步状态 |
| 41 | +timedatectl status | grep synchronized |
| 42 | + |
| 43 | +# 检查防火墙规则(所有节点需开放7000/7001端口) |
| 44 | +firewall-cmd --list-ports | grep 7000 |
| 45 | +``` |
| 46 | + |
| 47 | +--- |
| 48 | + |
| 49 | +## 二、扩容实施步骤 |
| 50 | + |
| 51 | +### 2.1 新节点基础配置 |
| 52 | +```bash |
| 53 | +# 创建专用用户(所有新节点执行) |
| 54 | +groupadd rustfs-user |
| 55 | +useradd -M -r -g rustfs-user rustfs-user |
| 56 | + |
| 57 | +# 创建存储目录(以8磁盘为例) |
| 58 | +mkdir -p /data/rustfs{0..7} |
| 59 | +chown -R rustfs-user:rustfs-user /data/rustfs* |
| 60 | +``` |
| 61 | + |
| 62 | +### 2.2 安装RustFS服务 |
| 63 | +```bash |
| 64 | +# 下载最新二进制包(版本号需与现有集群一致) |
| 65 | +wget https://dl.rustfs.com/rustfs/v2.3.0/rustfs -O /usr/local/bin/rustfs |
| 66 | +chmod +x /usr/local/bin/rustfs |
| 67 | + |
| 68 | +# 创建配置文件(/etc/default/rustfs) |
| 69 | +cat <<EOF > /etc/default/rustfs |
| 70 | +RUSTFS_ROOT_USER=admin |
| 71 | +RUSTFS_ROOT_PASSWORD=YourSecurePassword |
| 72 | +RUSTFS_VOLUMES="/data/rustfs{0...7}" |
| 73 | +RUSTFS_ADDRESS=":7000" |
| 74 | +RUSTFS_CONSOLE_ADDRESS=":7001" |
| 75 | +EOF |
| 76 | +``` |
| 77 | + |
| 78 | +### 2.3 集群扩容操作 |
| 79 | +```bash |
| 80 | +# 在所有现有节点更新配置(添加新存储池) |
| 81 | +sed -i '/RUSTFS_VOLUMES/s|"$| http://node{5...8}:7000/data/rustfs{0...7}"|' /etc/default/rustfs |
| 82 | + |
| 83 | +# 全局服务重启(所有节点同时执行) |
| 84 | +systemctl restart rustfs.service |
| 85 | +``` |
| 86 | + |
| 87 | +--- |
| 88 | + |
| 89 | +## 三、扩容后验证 |
| 90 | + |
| 91 | +### 3.1 集群状态检查 |
| 92 | +```bash |
| 93 | +# 检查节点加入状态 |
| 94 | +curl -s http://node1:7001/cluster/nodes | jq .poolMembers |
| 95 | + |
| 96 | +# 验证存储池分布 |
| 97 | +rc admin info cluster |
| 98 | +``` |
| 99 | + |
| 100 | +### 3.2 数据均衡验证 |
| 101 | +```bash |
| 102 | +# 查看数据分布比例(应接近各存储池容量占比) |
| 103 | +watch -n 5 "rustfs-admin metrics | grep 'PoolUsagePercent'" |
| 104 | +``` |
| 105 | + |
| 106 | +--- |
| 107 | + |
| 108 | +## 四、注意事项 |
| 109 | + |
| 110 | +1. **滚动重启禁止**:必须同时重启所有节点,避免出现数据不一致 |
| 111 | +2. **容量规划建议**:当存储使用率达到70%前应规划下次扩容 |
| 112 | +3. **性能调优建议**: |
| 113 | + ```bash |
| 114 | + # 调整内核参数(所有节点) |
| 115 | + echo "vm.swappiness=10" >> /etc/sysctl.conf |
| 116 | + echo "net.core.somaxconn=32768" >> /etc/sysctl.conf |
| 117 | + sysctl -p |
| 118 | + ``` |
| 119 | + |
| 120 | +--- |
| 121 | + |
| 122 | +## 五、故障排查指引 |
| 123 | + |
| 124 | +| 现象 | 检查点 | 修复命令 | |
| 125 | +|---------------------------|---------------------------------|-------------------------------| |
| 126 | +| 新节点无法加入集群 | 检查7000端口连通性 | `telnet node5 7000` | |
| 127 | +| 数据分布不均衡 | 检查存储池容量配置 | `rustfs-admin rebalance start`| |
| 128 | +| 控制台显示节点状态异常 | 验证时间同步状态 | `chronyc sources` | |
| 129 | + |
| 130 | + |
| 131 | + |
| 132 | + |
| 133 | +> 提示:本文档基于RustFS最新版编写,扩容操作前请务必进行全量数据备份。生产环境建议联系RustFS技术支持工程师进行方案评审。 |
8 | 134 |
|
0 commit comments