RustFS 集群搭建

多机多盘配置

  • 机器规划清单
IP地址 角色 服务端口 web端口 操作系统 多磁盘挂载目录
192.168.31.101 节点1 9000 9001 CentOS 7.9 x64 /data/disk1、/data/disk2
192.168.31.102 节点2 9000 9001 CentOS 7.9 x64 /data/disk1、/data/disk2
192.168.31.103 节点3 9000 9001 CentOS 7.9 x64 /data/disk1、/data/disk2
192.168.31.104 节点4 9000 9001 CentOS 7.9 x64 /data/disk1、/data/disk2

注:RustFS 官方建议生产环境最少4个节点,最低每台服务器需要 1 块磁盘,才可以安全的启动分布式对象存储集群。

  • 以下架构图(4台服务器、每台服务器4块磁盘)为例,数据通过负载均衡,随机向任何一台服务器写入数据。以默认 12 + 4 的模式,一个数据块默认会切分成 12 个数据块 + 4 个校验块,分别存到不同服务器的不同磁盘上。其中,任何 1 台服务器损坏或者维护都不会影响到数据安全,任何 4 块磁盘以内的数据损坏都不会影响数据安全。

1.通用配置

  • 1.1.所有节点:初始化工作,一定要配置时间同步,否则可能会启动报错
#.1.配置dns并安装基础软件
sed -i 's/^nameserver.*/nameserver 223.5.5.5/g' /etc/resolv.conf
cat /etc/resolv.conf | grep "^nameserver" > /dev/null || echo "nameserver 223.5.5.5" > /etc/resolv.conf
yum install -y -q curl wget ntp ntpdate lrzsz telnet zip unzip net-tools

#.2.修改时区并同步时间
timedatectl set-timezone Asia/Shanghai
/usr/sbin/ntpdate -u ntp.aliyun.com

#.3.建议禁用firewalld否则重启后需要iptable -F清除防火墙策略
/usr/sbin/iptables -F
systemctl stop firewalld.service

#.4.建议关闭selinux否则会限制服务
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0
  • 1.2.所有节点:修改机器名,比如 node101、node102
#.更改机器名
newhost=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tail -1|awk -F'.' '{print "node"$4}'`
hostnamectl set-hostname $newhost

#.退出重连
exit

2.搭建rustfs集群

  • 2.1.所有节点:下载 rustfs 1.0.0-alpha.71
curl -L http://iso.sqlfans.cn/linux/rustfs-linux-x86_64-1.0.0-alpha.71 -o /usr/bin/rustfs
chmod +x /usr/bin/rustfs
  • 2.2.所有节点:配置目录和服务
#.挂载磁盘目录
mkdir -p /data/{data1,data2}
chmod -R 750 /data/data1 /data/data2

#.创建配置目录
mkdir -p /var/logs/rustfs
chmod -R 750 /var/logs/rustfs

#.配置服务文件参数
RUSTFS_CONFIG_FILE="/etc/default/rustfs"
RUSTFS_BIN_PATH="/usr/bin/rustfs"
RUSTFS_LOG_PATH="/var/logs/rustfs"
VOLUME_NODE1="http://192.168.31.101:9000/data/data1 http://192.168.31.101:9000/data/data2"
VOLUME_NODE2="http://192.168.31.102:9000/data/data1 http://192.168.31.102:9000/data/data2"
VOLUME_NODE3="http://192.168.31.103:9000/data/data1 http://192.168.31.103:9000/data/data2"
VOLUME_NODE4="http://192.168.31.104:9000/data/data1 http://192.168.31.104:9000/data/data2"

#.创建配置文件,示例账号 rustfsadmin 密码 Admin_147
cat <<EOF > /etc/default/rustfs
RUSTFS_ACCESS_KEY=rustfsadmin
RUSTFS_SECRET_KEY=Admin_147
RUSTFS_VOLUMES="$VOLUME_NODE1 $VOLUME_NODE2 $VOLUME_NODE3 $VOLUME_NODE4"
RUSTFS_ADDRESS=":9000"
RUSTFS_CONSOLE_ADDRESS=":9001"
RUSTFS_CONSOLE_ENABLE=true
RUST_LOG=error
RUSTFS_OBS_LOG_DIRECTORY="/var/logs/rustfs/"
EOF

#.创建服务文件
cat <<EOF > /usr/lib/systemd/system/rustfs.service
[Unit]
Description=RustFS Object Storage Server
Documentation=https://rustfs.com/docs/
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
NotifyAccess=main
User=root
Group=root
WorkingDirectory=/usr/local
EnvironmentFile=-$RUSTFS_CONFIG_FILE
ExecStart=$RUSTFS_BIN_PATH $VOLUME_NODE1 $VOLUME_NODE2 $VOLUME_NODE3 $VOLUME_NODE4
LimitNOFILE=1048576
LimitNPROC=32768
TasksMax=infinity
Restart=always
RestartSec=10s
OOMScoreAdjust=-1000
SendSIGKILL=no
TimeoutStartSec=30s
TimeoutStopSec=30s
NoNewPrivileges=true
ProtectHome=true
PrivateTmp=true
PrivateDevices=true
ProtectClock=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
RestrictSUIDSGID=true
RestrictRealtime=true
StandardOutput=append:$RUSTFS_LOG_PATH/rustfs.log
StandardError=append:$RUSTFS_LOG_PATH/rustfs-err.log
[Install]
WantedBy=multi-user.target
EOF
  • 2.3.所有节点:配置服务
#.启动服务
systemctl daemon-reload
systemctl enable rustfs
systemctl start rustfs

#.确认端口已监听
netstat -lnpt | egrep "(9000|9001)"
tail -f /var/logs/rustfs/rustfs*.log
  • 2.4.根据示例账号及密码,登录任意一台 web 控制台
#.登录测试
地址:http://{ip}:9001
账号:rustfsadmin
密码:Admin_147

附录

如何彻底卸载 rustfs

  • 针对二进制安装的 rustfs 服务,以下是卸载步骤:
systemctl status rustfs | grep "Loaded:"
systemctl stop rustfs
systemctl disable rustfs

rm -f /usr/bin/rustfs
rm -f /etc/default/rustfs
rm -f /usr/lib/systemd/system/rustfs.service
rm -rf /data/data1
rm -rf /data/data2
rm -rf /var/logs/rustfs
Copyright © www.sqlfans.cn 2021 - 2026 All Right Reserved更新时间: 2025-12-06 21:25:58

results matching ""

    No results matching ""