在 Debian 系统上安装 rqlited 可通过以下步骤完成:
- 下载预编译二进制文件
rqlite 官方提供 Linux 平台的预编译二进制文件,可直接下载运行:
wget https://github.com/rqlite/rqlite/releases/download/v7.0.0/rqlited-v7.0.0-linux-amd64.tar.gz
tar -xzvf rqlited-v7.0.0-linux-amd64.tar.gz
cd rqlited-v7.0.0-linux-amd64
- 运行 rqlited
单节点模式:
./rqlited -node-id 1 ~/rqlite/data
集群模式(需指定 Leader 节点):
Leader 节点
./rqlited -node-id 1 -http-addr 192.168.1.100:4001 ~/rqlite/leader_data
Follower 节点(加入集群)
./rqlited -node-id 2 -http-addr 192.168.1.101:4001 -join http://192.168.1.100:4001 ~/rqlite/follower_data
- 验证安装
通过 HTTP API 检查服务状态:
curl http://localhost:4001/status
- 可选配置
数据目录权限:确保运行用户对数据目录有读写权限。
系统服务化:通过 systemd 管理服务(示例配置):
sudo nano /etc/systemd/system/rqlited.service
内容参考:
[Unit]
Description=rqlited
After=network.target
[Service]
ExecStart=/path/to/rqlited -node-id 1 /path/to/data
User=rqlite
Restart=always
[Install]
WantedBy=multi-user.target
启用服务:
sudo systemctl enable --now rqlited
- 其他安装方式
Docker 部署:
docker run -p 4001:4001 rqlite/rqlited
源码编译(需 Go 环境):
git clone https://github.com/rqlite/rqlite
cd rqlite
make
注意事项
确保防火墙开放 4001(HTTP API)和 4002(Raft 通信)端口。
生产环境建议配置 TLS 加密和认证。
如需更详细的集群配置或性能优化,可参考官方文档。
附带参考设置示例脚本,通过变量定义数据存储目录,并根据 -node-id 自动生成目录路径:
deploy_rqlite_cluster.sh
#!/bin/bash
# 配置变量(根据实际环境修改)
BASE_DATA_DIR="/opt/rqlite" # 数据存储基础目录
LEADER_IP="192.168.1.100" # 主节点IP
FOLLOWER1_IP="192.168.1.101" # 子节点1 IP
FOLLOWER2_IP="192.168.1.102" # 子节点2 IP
READONLY_IP="192.168.1.103" # 只读节点IP
# 创建数据目录(所有节点)
mkdir -p $BASE_DATA_DIR/{data1,data2,data3,data4}
# 主节点(Leader)
ssh $LEADER_IP "nohup ./rqlited -node-id 1 \\
-http-addr $LEADER_IP:4001 \\
-raft-addr $LEADER_IP:4002 \\
$BASE_DATA_DIR/data1 > $BASE_DATA_DIR/rqlite.log 2>&1 &"
# 子节点1(Follower)
ssh $FOLLOWER1_IP "nohup ./rqlited -node-id 2 \\
-http-addr $FOLLOWER1_IP:4001 \\
-raft-addr $FOLLOWER1_IP:4002 \\
-join http://$LEADER_IP:4001 \\
$BASE_DATA_DIR/data2 > $BASE_DATA_DIR/rqlite.log 2>&1 &"
# 子节点2(Follower)
ssh $FOLLOWER2_IP "nohup ./rqlited -node-id 3 \\
-http-addr $FOLLOWER2_IP:4001 \\
-raft-addr $FOLLOWER2_IP:4002 \\
-join http://$LEADER_IP:4001 \\
$BASE_DATA_DIR/data3 > $BASE_DATA_DIR/rqlite.log 2>&1 &"
# 只读节点(Non-Voter)
ssh $READONLY_IP "nohup ./rqlited -node-id 4 \\
-http-addr $READONLY_IP:4001 \\
-raft-addr $READONLY_IP:4002 \\
-non-voter \\
-join http://$LEADER_IP:4001 \\
$BASE_DATA_DIR/data4 > $BASE_DATA_DIR/rqlite.log 2>&1 &"
echo "集群部署完成,检查状态:"
echo "curl $LEADER_IP:4001/status?pretty"
脚本说明:
1. 通过BASE_DATA_DIR变量集中管理存储路径
2. 自动按node-id生成data1~data4子目录
3. 日志统一输出到基础目录下
4. 需提前确保各节点已安装rqlited