Debian 系统上安装 rqlited

在 Debian 系统上安装 rqlited 可通过以下步骤完成:

  1. 下载预编译二进制文件
    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

  1. 运行 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

  1. 验证安装
    通过 HTTP API 检查服务状态:

curl http://localhost:4001/status

  1. 可选配置
    数据目录权限:确保运行用户对数据目录有读写权限。
    系统服务化:通过 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

  1. 其他安装方式
    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

作者: Mr.Tang

伯虎

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

  ⁄  5  =  2