docker部署多节点Tendermint网络

文章讲述了如何通过Docker从官方镜像库获取Tendermint/localnode镜像,并创建多节点Tendermint网络,包括设置验证节点数量、挂载本地目录到容器、处理配置文件错误以及使用docker-compose.yml文件来定义和启动服务。同时提到了在运行过程中可能遇到的问题,如内存限制和配置文件路径错误,并提供了测试网络运行的命令。
摘要由CSDN通过智能技术生成
  1. 将tendermint二进制文件放在工作目录中的build目录下,如workspace/build

  2. 从dokcer官方镜像库拉取tendermint/localnode镜像

    docker image pull tendermint/localnode

3.创建多节点tendermint网络。若要部署任意节点的Tendermint网络,首先需要修改命令:testnet --v num1 --v num2,–v参数的意思是设置验证节点的数量;–n设置非验证节点的数量。

docker run --rm -v /etc/localtime:/etc/localtime -v workspace/build:/tendermint:Z tendermint/localnode testnet --v 5 --config /etc/tendermint/config-template.toml --o . --starting-ip-address 192.167.10.2

以上命令是设置5个验证节点。如果内存较小,节点数量设置较小即可,本人在16g内存上部署了8节点导致内存资源占用过高,然后部署了5个节点。
用 Docker 运行 tendermint/localnode 的镜像,并将当前目录下的 build 目录挂载到容器中的 /tendermint 目录下,并设置挂载路径为可共享(shared)模式,执行“testnet --config /etc/tendermint/config-template.toml --o . --starting-ip-address 192.167.10.2”命令启动tendermint网络,若没有指定节点数量,默认生成4个验证节点。

问题

nhl@harry:~/workspace/image$ docker run --rm -v
/etc/localtime:/etc/localtime -v ~/workspace/image/build:/tendermint:Z
tendermint/localnode testnet --v 5 --config
/etc/tendermint/config-template.toml --o . --starting-ip-address
192.167.10.2

ERROR: open /etc/tendermint/config-template.toml: no such file or
directory

所以要删掉:–config /etc/tendermint/config-template.toml

创建多节点tendermint网络的命令变为:

  docker run --rm -v /etc/localtime:/etc/localtime -v workspace/build:/tendermint:Z tendermint/localnode testnet --v 5    --o . --starting-ip-address 192.167.10.2

note: 需要修改各个节点的配置文件(node*/config)[rpc]中监听地址laddr = “tcp://0.0.0.0:26657”,否则无法向网络发送消息

4.配置docker-compose.yml文件如下,将docker-compose.yml文件放在工作目录下:

version: '3'

services:
  node0:
    container_name: node0
    image: "tendermint/localnode"
    ports:
      - "26656-26657:26656-26657"
    environment:
      - ID=0
      - LOG=${LOG:-tendermint.log}
    volumes:
      - ./build:/tendermint:Z
      - /etc/localtime:/etc/localtime
    networks:
      localnet:
        ipv4_address: 192.167.10.2

  node1:
    container_name: node1
    image: "tendermint/localnode"
    ports:
      - "26659-26660:26656-26657"
    environment:
      - ID=1
      - LOG=${LOG:-tendermint.log}
    volumes:
      - ./build:/tendermint:Z
      - /etc/localtime:/etc/localtime
    networks:
      localnet:
        ipv4_address: 192.167.10.3

  node2:
    container_name: node2
    image: "tendermint/localnode"
    environment:
      - ID=2
      - LOG=${LOG:-tendermint.log}
    ports:
      - "26661-26662:26656-26657"
    volumes:
      - ./build:/tendermint:Z
      - /etc/localtime:/etc/localtime
    networks:
      localnet:
        ipv4_address: 192.167.10.4

  node3:
    container_name: node3
    image: "tendermint/localnode"
    environment:
      - ID=3
      - LOG=${LOG:-tendermint.log}
    ports:
      - "26663-26664:26656-26657"
    volumes:
      - ./build:/tendermint:Z
      - /etc/localtime:/etc/localtime
    networks:
      localnet:
        ipv4_address: 192.167.10.5

  node4:
    container_name: node4
    image: "tendermint/localnode"
    environment:
      - ID=4
      - LOG=${LOG:-tendermint.log}
    ports:
      - "26665-26666:26656-26657"
    volumes:
      - ./build:/tendermint:Z
      - /etc/localtime:/etc/localtime
    networks:
      localnet:
        ipv4_address: 192.167.10.6

networks:
  localnet:
    driver: bridge
    ipam:
      driver: default
      config:
      -
        subnet: 192.167.10.0/16

docker-compose.yaml 是 docker compose 工具使用的配置文件,用于定义多个 Docker 容器的服务、网络和卷等信息。如下是tendermint多节点网络的docker-compose配置文件,有5个容器服务,每个服务运行一个 “tendermint/localnode” Docker镜像的实例:所有服务都使用相同的卷./build,挂载到容器内的/tendermint目录。它们还使用相同的网络localnet,该网络被定义为一个网桥网络,IP地址范围为192.167.10.0/16。其中IPAM是指IP地址管理,它定义了一个子网,其中每个容器都可以使用自己的IP地址。driver: default表示使用默认的IP地址分配驱动程序,subnet: 192.167.10.0/16表示子网的地址范围。

5.运行多节点tendermint网络

   docker-compose -f docker-compose.yml up

运行如图:
image

6.发送消息进行测试

curl -s 'localhost:26657/broadcast_tx_commit?tx="abcd"'

image

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值