30分钟极速部署AElf区块链节点:从环境搭建到多节点集群完整指南

30分钟极速部署AElf区块链节点:从环境搭建到多节点集群完整指南

【免费下载链接】AElf A scalable cloud computing blockchain platform 【免费下载链接】AElf 项目地址: https://gitcode.com/gh_mirrors/ae/AElf

开篇:你是否还在为区块链节点部署而头疼?

作为开发者,你是否经历过:

  • 官方文档零散不成体系,跟着操作仍频频踩坑
  • 环境依赖复杂,配置项繁多,不知从何下手
  • 单节点运行OK,多节点组网却始终无法同步
  • 部署完成后,不知如何验证节点是否正常工作

本文将彻底解决这些痛点,提供企业级AElf节点部署全流程,包含Docker快速部署与源码编译两种方案,以及多节点集群搭建实战。读完本文,你将获得

  • 3种部署方式的详细操作指南(Docker/源码编译/多节点)
  • 常见错误排查与性能优化技巧
  • 节点健康状态监控与管理方法
  • 完整的部署流程图与配置示例

AElf节点部署全景图

mermaid

一、环境准备:系统与依赖检查清单

1.1 支持的操作系统

操作系统版本要求推荐指数
Ubuntu20.04 LTS及以上★★★★★
CentOS8.0及以上★★★★☆
macOSBig Sur及以上★★★★☆
WindowsWindows 10/11专业版★★★☆☆

1.2 硬件配置建议

节点类型CPU内存存储网络
开发测试节点4核8GB100GB SSD100Mbps
生产环境节点8核16GB500GB SSD1Gbps
共识节点16核32GB1TB SSD1Gbps+

1.3 必备依赖安装

1.3.1 通用依赖安装脚本

Ubuntu/Debian系统:

# 更新系统包
sudo apt update && sudo apt upgrade -y

# 安装基础工具
sudo apt install -y git curl wget unzip software-properties-common

CentOS/RHEL系统:

# 安装基础工具
sudo dnf install -y git curl wget unzip epel-release
sudo dnf groupinstall -y "Development Tools"

macOS系统(使用Homebrew):

# 安装Homebrew(如未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 安装基础工具
brew install git curl wget unzip
1.3.2 Node.js安装
# Ubuntu/Debian
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs

# CentOS/RHEL
curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo -E bash -
sudo dnf install -y nodejs

# macOS
brew install node@16

# 验证安装
node -v  # 应输出v16.x.x
npm -v   # 应输出7.x.x以上
1.3.3 Redis数据库安装(推荐)
# Ubuntu/Debian
sudo apt install -y redis-server
sudo systemctl enable redis-server
sudo systemctl start redis-server

# CentOS/RHEL
sudo dnf install -y redis
sudo systemctl enable redis
sudo systemctl start redis

# macOS
brew install redis
brew services start redis

# 验证安装
redis-cli ping  # 应返回PONG

Redis配置优化(生产环境):

# 修改配置文件
sudo vim /etc/redis/redis.conf

# 推荐修改以下参数
maxmemory 4gb
maxmemory-policy volatile-lru
appendonly yes
1.3.4 .NET Core SDK安装
# 添加Microsoft包源
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

# 安装.NET Core SDK 3.1
sudo apt update && sudo apt install -y dotnet-sdk-3.1

# 验证安装
dotnet --version  # 应输出3.1.x
1.3.5 Protobuf编译器安装
# Ubuntu/Debian
sudo apt install -y protobuf-compiler

# CentOS/RHEL
sudo dnf install -y protobuf-devel

# macOS
brew install protobuf@3.11
brew link --force --overwrite protobuf@3.11

# 验证安装
protoc --version  # 应输出3.11.x
1.3.6 Docker与Docker Compose(可选)
# 安装Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER  # 允许当前用户运行docker命令(需注销重登录)

# 安装Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# 验证安装
docker --version
docker-compose --version

二、Docker极速部署:5分钟启动AElf节点

2.1 Docker部署优势

  • 环境隔离,避免依赖冲突
  • 一键部署,无需复杂配置
  • 版本控制,轻松切换节点版本
  • 资源限制,提高系统安全性

2.2 单节点Docker部署步骤

步骤1:拉取官方镜像
docker pull aelf/node:latest
步骤2:创建数据目录
mkdir -p ~/aelf-node/data
mkdir -p ~/aelf-node/logs
chmod -R 777 ~/aelf-node  # 生产环境建议更精细的权限控制
步骤3:启动节点容器
docker run -d \
  --name aelf-node \
  -p 8000:8000 \
  -p 6800:6800 \
  -v ~/aelf-node/data:/app/data \
  -v ~/aelf-node/logs:/app/logs \
  -e "ConnectionStrings__BlockchainDb=redis://host.docker.internal:6379?db=1" \
  -e "ConnectionStrings__StateDb=redis://host.docker.internal:6379?db=1" \
  aelf/node:latest

注意:host.docker.internal在Linux系统可能需要替换为实际的Redis服务器IP地址

步骤4:查看容器运行状态
docker ps | grep aelf-node
docker logs -f aelf-node --tail 100

2.3 Docker节点配置说明

创建自定义配置文件appsettings.json

{
  "ConnectionStrings": {
    "BlockchainDb": "redis://redis:6379?db=1",
    "StateDb": "redis://redis:6379?db=1"
  },
  "Kestrel": {
    "EndPoints": {
      "Http": {
        "Url": "http://*:8000"
      }
    }
  },
  "Network": {
    "ListeningPort": 6800,
    "BootNodes": []
  },
  "Account": {
    "NodeAccount": "",
    "NodeAccountPassword": ""
  },
  "InitialMinerList": []
}

使用自定义配置启动:

docker run -d \
  --name aelf-node \
  -p 8000:8000 \
  -p 6800:6800 \
  -v ~/aelf-node/data:/app/data \
  -v ~/aelf-node/logs:/app/logs \
  -v ~/aelf-node/appsettings.json:/app/appsettings.json \
  aelf/node:latest

2.4 Docker Compose多服务部署

创建docker-compose.yml文件:

version: '3'

services:
  redis:
    image: redis:6-alpine
    container_name: aelf-redis
    ports:
      - "6379:6379"
    volumes:
      - redis-data:/data
    restart: always
    command: redis-server --appendonly yes

  aelf-node:
    image: aelf/node:latest
    container_name: aelf-node
    depends_on:
      - redis
    ports:
      - "8000:8000"
      - "6800:6800"
    volumes:
      - ./data:/app/data
      - ./logs:/app/logs
      - ./appsettings.json:/app/appsettings.json
    restart: always
    environment:
      - TZ=Asia/Shanghai

volumes:
  redis-data:

启动服务:

docker-compose up -d

三、源码编译部署:深度定制节点环境

3.1 源码部署适用场景

  • 需要对AElf源码进行定制开发
  • 需部署特定版本节点
  • 生产环境对安全性和性能有极高要求
  • 需要调试节点内部功能

3.2 源码获取与编译

步骤1:克隆代码仓库
git clone https://gitcode.com/gh_mirrors/ae/AElf.git aelf
cd aelf
git checkout master  # 或指定稳定版本标签如v1.0.0
步骤2:编译项目
# 进入源码目录
cd src/AElf.Launcher

# 编译项目
dotnet build -c Release

编译成功后,可在bin/Release/netcoreapp3.1目录下找到可执行文件。

3.3 节点账户创建与配置

步骤1:安装AElf命令行工具
npm install -g aelf-command
步骤2:创建节点账户
aelf-command create

执行后会输出类似以下信息,请妥善保存:

Your wallet info is :
Mnemonic            : great mushroom loan crisp ... door juice embrace
Private Key         : e038eea7e151eb451ba2901f7...b08ba5b76d8f288
Public Key          : 0478903d96aa2c8c0...6a3e7d810cacd136117ea7b13d2c9337e1ec88288111955b76ea
Address             : 2Ue31YTuB5Szy7cnr3SCEGU2gtGi5uMQBYarYUR5oGin1sys6H
步骤3:配置节点设置

复制默认配置文件:

cp appsettings.json appsettings.Development.json

编辑配置文件:

{
  "Account": {
    "NodeAccount": "2Ue31YTuB5Szy7cnr3SCEGU2gtGi5uMQBYarYUR5oGin1sys6H",
    "NodeAccountPassword": "你的密码"
  },
  "InitialMinerList": [
    "0478903d96aa2c8c0...6a3e7d810cacd136117ea7b13d2c9337e1ec88288111955b76ea"
  ],
  "ConnectionStrings": {
    "BlockchainDb": "redis://localhost:6379?db=1",
    "StateDb": "redis://localhost:6379?db=1"
  },
  "Network": {
    "ListeningPort": 6800,
    "BootNodes": []
  },
  "Kestrel": {
    "EndPoints": {
      "Http": {
        "Url": "http://*:8000"
      }
    }
  }
}

3.4 启动节点与服务配置

步骤1:直接启动节点
dotnet bin/Release/netcoreapp3.1/AElf.Launcher.dll --launch-profile Development
步骤2:创建系统服务(生产环境)

创建服务文件:

sudo vim /etc/systemd/system/aelf-node.service

服务文件内容:

[Unit]
Description=AElf Node Service
After=network.target redis-server.service

[Service]
User=ubuntu
WorkingDirectory=/home/ubuntu/aelf/src/AElf.Launcher
ExecStart=/usr/bin/dotnet bin/Release/netcoreapp3.1/AElf.Launcher.dll --launch-profile Development
Restart=always
RestartSec=5
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

启动服务:

sudo systemctl daemon-reload
sudo systemctl enable aelf-node
sudo systemctl start aelf-node

查看服务状态:

sudo systemctl status aelf-node
journalctl -u aelf-node -f --tail 100

四、多节点集群部署:构建你的私有区块链网络

4.1 多节点网络架构图

mermaid

4.2 多节点环境准备

创建工作目录结构:

mkdir -p ~/aelf-multi-node/{miner1,miner2,fullnode1,redis}
cd ~/aelf-multi-node

4.3 生成节点账户与配置

为每个节点创建独立账户:

# 创建Miner1账户
aelf-command create > miner1/account.info

# 创建Miner2账户
aelf-command create > miner2/account.info

# 创建FullNode1账户
aelf-command create > fullnode1/account.info

4.4 配置各节点

Miner1配置文件(miner1/appsettings.json):
{
  "Account": {
    "NodeAccount": "miner1_address",
    "NodeAccountPassword": "miner1_password"
  },
  "InitialMinerList": [
    "miner1_public_key",
    "miner2_public_key"
  ],
  "ConnectionStrings": {
    "BlockchainDb": "redis://localhost:6379?db=1",
    "StateDb": "redis://localhost:6379?db=1"
  },
  "Network": {
    "ListeningPort": 6800,
    "BootNodes": ["127.0.0.1:6801"]
  },
  "Kestrel": {
    "EndPoints": {
      "Http": {
        "Url": "http://*:8000"
      }
    }
  }
}
Miner2配置文件(miner2/appsettings.json):
{
  "Account": {
    "NodeAccount": "miner2_address",
    "NodeAccountPassword": "miner2_password"
  },
  "InitialMinerList": [
    "miner1_public_key",
    "miner2_public_key"
  ],
  "ConnectionStrings": {
    "BlockchainDb": "redis://localhost:6379?db=2",
    "StateDb": "redis://localhost:6379?db=2"
  },
  "Network": {
    "ListeningPort": 6801,
    "BootNodes": ["127.0.0.1:6800"]
  },
  "Kestrel": {
    "EndPoints": {
      "Http": {
        "Url": "http://*:8001"
      }
    }
  }
}
FullNode1配置文件(fullnode1/appsettings.json):
{
  "Account": {
    "NodeAccount": "fullnode1_address",
    "NodeAccountPassword": "fullnode1_password"
  },
  "InitialMinerList": [
    "miner1_public_key",
    "miner2_public_key"
  ],
  "ConnectionStrings": {
    "BlockchainDb": "redis://localhost:6379?db=3",
    "StateDb": "redis://localhost:6379?db=3"
  },
  "Network": {
    "ListeningPort": 6802,
    "BootNodes": ["127.0.0.1:6800", "127.0.0.1:6801"]
  },
  "Kestrel": {
    "EndPoints": {
      "Http": {
        "Url": "http://*:8002"
      }
    }
  }
}

4.5 使用Docker Compose编排多节点

创建docker-compose.yml文件:

version: '3'

services:
  redis:
    image: redis:6-alpine
    container_name: aelf-redis
    ports:
      - "6379:6379"
    volumes:
      - ./redis/data:/data
    command: redis-server --appendonly yes
    restart: always

  miner1:
    build: ../../aelf/src/AElf.Launcher
    container_name: aelf-miner1
    depends_on:
      - redis
    ports:
      - "8000:8000"
      - "6800:6800"
    volumes:
      - ./miner1/appsettings.json:/app/appsettings.json
      - ./miner1/data:/app/data
      - ./miner1/logs:/app/logs
    restart: always
    environment:
      - ASPNETCORE_ENVIRONMENT=Production

  miner2:
    build: ../../aelf/src/AElf.Launcher
    container_name: aelf-miner2
    depends_on:
      - redis
      - miner1
    ports:
      - "8001:8000"
      - "6801:6800"
    volumes:
      - ./miner2/appsettings.json:/app/appsettings.json
      - ./miner2/data:/app/data
      - ./miner2/logs:/app/logs
    restart: always
    environment:
      - ASPNETCORE_ENVIRONMENT=Production

  fullnode1:
    build: ../../aelf/src/AElf.Launcher
    container_name: aelf-fullnode1
    depends_on:
      - redis
      - miner1
      - miner2
    ports:
      - "8002:8000"
      - "6802:6800"
    volumes:
      - ./fullnode1/appsettings.json:/app/appsettings.json
      - ./fullnode1/data:/app/data
      - ./fullnode1/logs:/app/logs
    restart: always
    environment:
      - ASPNETCORE_ENVIRONMENT=Production

启动整个集群:

docker-compose up -d

五、节点验证与管理:确保区块链稳定运行

5.1 节点基础功能验证

检查节点状态
# 使用命令行工具检查区块高度
aelf-command get-blk-height -e http://localhost:8000

#


【免费下载链接】AElf A scalable cloud computing blockchain platform 【免费下载链接】AElf 项目地址: https://gitcode.com/gh_mirrors/ae/AElf

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值